Eenvoudige toegang tot data in ListIt2

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
User avatar
myleen99
Forum Members
Forum Members
Posts: 23
Joined: Tue Jul 27, 2010 3:07 pm

Eenvoudige toegang tot data in ListIt2

Post by myleen99 »

Ik heb de ListIt2 module met enkele additionele velden. Nu wil ik hetvolgende realiseren, doch al mijn pogingen (obv forum info) lopen fout af. Oorzaak is waarschijnlijk mijn gebrekkige kennis van Smarty en/of ... Details hieronder.

De ListIt2 module heeft een zeer uitgebreide help sectie, en toch geraak ik er niet uit. Sorry. Graag hulp. Dank u. (CMSMS 1.11.4)
Mvgr , Dirk

ListIt2 velden :
  • shop
    adres
    postnr
    gemeente
Ik wil nu 1 dropdown veld met alleen de gemeente (geen andere keuze velden). Het formulier met de dropdown en keuze knop lukt, doch de dropdown wordt niet gevuld met de correcte data. Hoe krijg ik een specifieke query uit de ListIt2 ?

Extra : hoe kan je op een eenvoudige wijze een specifieke record aanspreken in een ListIt2 tabel, zodat je alleen de data hebt van die record ipv de hele lijst ? Bestaat daarvoor een bepaalde sql query syntax (net zoals je info opzoekt in een andere mysql tabel via php) ?

Extra 2 : kan je relaties leggen tussen 2 ListIt2 tabellen (Duplicated module) ?
User avatar
myleen99
Forum Members
Forum Members
Posts: 23
Joined: Tue Jul 27, 2010 3:07 pm

Re: Eenvoudige toegang tot data in ListIt2

Post by myleen99 »

Ik krijg het resultaat niet gerealiseerd met Smarty, dus dan maar een poging met een UDT. Onderstaande code geeft wel de header 'winkels' en de slotregel 'einde' maar geen tussenliggende resultaten, terwijl de tabel 12 records bevat.
Waar zit de fout ? Graag hulp.

Code: Select all

$gCms = cmsms();
$db =& $gCms->GetDb();
// Define query
$sql = 'SELECT * FROM ' . cms_db_prefix().'module_listit2cloneccwinkels_item';
  
// Generate Results
$result =& $db->Execute($sql);

// Generate Output
$html = '<p><strong>Winkels</strong></p>';
$html.= '<p>';
    
    while($row = $result->Fetchrow()) 
        {
        $txt = $row['title'];
        }

$html.= 'einde.</p>';

//Display results 
echo $html;
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: Eenvoudige toegang tot data in ListIt2

Post by velden »

Code: Select all

$txt = $row['title'];
moet dat niet zijn:

Code: Select all

$html.= $row['title'];
En verder begrijp ik niet waarom dat niet met smarty zou lukken in een ListIt2 template.

Code: Select all

{*debug*}
<select>
{foreach from=$items item=item}
<option value="{$item->alias}">{$item->fielddefs.gemeente.value}</option>
{/foreach}
</select>
Ik ga ervan uit dat de alias van het betreffende veld 'gemeente' is.

Als je de sterretjes in {*debug*} weghaalt (dus {debug} blijft over) dan krijg je een popup venster bij het refreshen van de betreffende webpagina (front-end) waar je wat meer informatie over de items krijgt. Kan handig zijn.

Uit de help:
...
(optional) action="default" - Override the default action. Possible values are:

"default" - displays the summary view.
"detail" - displays a specified entry in detail mode.
"search" - displays the search form.
"filter" - displays the filter form. Parameter filter is required.
...
(optional) item="alias" - Deze parameter is alleen van toepassing in de detailweergave. Het staat toe om een item op te geven die wordt weergegeven in de detailweergave. Dit moet een itemalias zijn.
...
Dus ik zou dan verwachten dat je iets kunt doen met het alias uit het select veld en daarmee de detail-pagina van de betreffende gemeente oproepen.

Code: Select all

{ListIt2 action="detail" item="amsterdam"}
Uitgangspunt is dan wel dat
a. alias van een item de naam van de gemeente is
b. elke gemeente maar één keer voorkomt in de lijst
User avatar
myleen99
Forum Members
Forum Members
Posts: 23
Joined: Tue Jul 27, 2010 3:07 pm

Re: Eenvoudige toegang tot data in ListIt2

Post by myleen99 »

@velden.
Hartelijk dank voor jouw bijdrage en hulp.

$txt vervangen door $html. in de PHP code was natuurlijk de juiste oplossing. Zo zie je maar weer hoe vreemde ogen een andere kijk hebben en onmiddellijk de fout herkennen.

Echter de Smarty oplossing krijg ik niet aan de praat.
ListIt2 bevat een lijst met verkooppunten, waarvan er meer dan 1 per gemeente kunnen zijn. Volgende velden zijn gedefinieerd :
* ListIt2_item
- item : Verdeler (= winkel naam)
- alias : Verdeler (= winkel naam)
- category : verkooppunten (slechts 1 categorie)
* ListIt2_fielddefs
- straat
- postnr
- gemeente

De pulldown (of dropdown) dient dus opgevuld te worden met de lijst van gemeentes . Met 'select distinct' zal elke gemeente maar 1 keer voorkomen in de lijst, maar hoe doe je dat met Smarty ?

Vervolgens de lijst van alle verkooppunten in de geselecteerde gemeente (liefst onder de dropdown selectie ; dus alles op 1 content pagina). Gegevens mogen komen uit ListIt templates en/of UDT.

Het leek mij heel eenvoudig om aan te beginnen, maar uiteindelijk blijkt het - voor mij dan toch - heel complex.
Alle hulp op dummy niveau is zeer welkom.

mvgr
Dirk
User avatar
myleen99
Forum Members
Forum Members
Posts: 23
Joined: Tue Jul 27, 2010 3:07 pm

Re: Eenvoudige toegang tot data in ListIt2

Post by myleen99 »

... een update van de situatie ...

Ik ben opnieuw begonnen om een summary template te maken binnen ListIt2 welke dan wordt opgeroepen op de content page als {ListIt2 SummaryTemplate="winkels"}.

Hieronder de code van de template. De dropdown wordt automatisch opgevuld met waarden uit de ListIt2 tabel en elke waarde wordt slechts 1x getoond , ook al komt deze meermaals voor in de tabel. Na klikken op de submit knop wordt een gefilterde output gegenereerd.

Nu nog 1 HULP vraag : hoe kan ik de waarden in de dropdown alfabetisch rangschikken ?

Code: Select all

<div>
    <form action="" method="POST">
        <label>Selecteer een plaats : </label>
    	{assign var="tempCat" value=""}
        <select name="var_plaats">
           <option value="">Maak uw keuze ...</option>

			{foreach from=$items item=item}
				{if !$tempCat|strstr:{$item->fielddefs.plaats.value}} 
					<option>{$item->fielddefs.plaats.value|cms_escape}</option>
					{assign var="tempCat" value=$tempCat|cat:{$item->fielddefs.plaats.value}}
				{/if}
			{/foreach}
		</select>
        <input name="submit" value="NU" type="submit" />
    </form>
</div>

{*assign var=plaats value=$smarty.post.var_plaats*}

{if $smarty.post.var_plaats !=""}
<p>&nbsp;</p>
<div id="listit">
<table>
    <tr>
        <th>Winkel</th>
        <th>Straat - Nr</th>
        <th>PostNr.</th>
        <th>Gemeente</th>
    </tr>
    {foreach from=$items item=item}
        {if ($item->fielddefs.plaats.value == $smarty.post.var_plaats)}
        
        <tr>
            <td><p><strong>{$item->title|cms_escape}</strong></p></td>

            {if !empty($item->fielddefs)}
                {foreach from=$item->fielddefs item=fielddef}
                    <td><p>{$fielddef.value|cms_escape}</p></td>
                {/foreach}
            {/if}<!-- item -->
        </tr>
        
        {/if} 
    {/foreach}
</table>
</div>
{/if}
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: Eenvoudige toegang tot data in ListIt2

Post by velden »

Zou je niet iets kunnen doen met category als plaatsnaam? Iets omslachtiger welliswaar maar:

Je kunt sorteren op category én je kunt met één call alle items van een category opvragen.

En tenslotte, misschien slaat het nergens op wat ik nu zeg, maar is wellicht de module CompanyDirectory iets om naar te kijken?

http://dev.cmsmadesimple.org/projects/companydir

Ik ken 'm zelf helemaal niet, maar als ik er ooit iets over lees lijkt het wel te gaan over een 'database' van bedrijven voor op je site.
User avatar
myleen99
Forum Members
Forum Members
Posts: 23
Joined: Tue Jul 27, 2010 3:07 pm

Re: Eenvoudige toegang tot data in ListIt2 [SOLVED]

Post by myleen99 »

@velden:
Ik zit met een bestaande situatie waar een nieuwe feature moet aan toegevoegd worden die niet oorspronkelijk voorzien was. Ik kan dus moeilijk het bestaande volledig wijzigen naar een nieuwe opzet.

PS : Ik ken CompanyDirectory ook niet en kan dus ook niet oordelen over de bruikbaarheid in dit specifieke geval.

De oplossing die ik hier heb beschreven werkt momenteel en kan eenvoudig worden geïntegreerd in de bestaande live website. Als ik de sortering op orde krijg is het een puik resultaat.
Momenteel heb ik een tip ontvangen van Manuel obv een blogartikel van Goran Ilic. Ik tracht dat nu te integreren.
Post Reply

Return to “Dutch - Nederlands”