UDT om aantal paginas uit menu te tellen

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
sniek
Forum Members
Forum Members
Posts: 17
Joined: Tue Nov 30, 2010 9:56 am

UDT om aantal paginas uit menu te tellen

Post by sniek »

Hallo allemaal,

Ik ben opzoek om via een UDT en Smarty de pagina's van een menu te tellen en deze te returnen. Ik kan deze bijvoorbeeld wel tellen in de foreach loop in mijn menutemplate, maar hoe kan ik deze dan opslaan in een UDT?

Alvast bedankt!
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: UDT om aantal paginas uit menu te tellen

Post by Jos »

Binnen de menumanager is volgens mij al een variabele die het aantal pagina's weergeeft: {$count} en anders kun je ook {$nodelist|@count} gebruiken.

Genoemde tags kun je gebruiken nadat de {menu} tag is aangeroepen. Maar je loopt kans dat {$count} weer overschreven wordt door een andere module.

Als je vervolgens de UDT aanroept als volgt:
{mijnudt aantalpaginas=$count}

dan kun je binnen de UDT gebruik maken van de php variabele $params['aantalpaginas']
sniek
Forum Members
Forum Members
Posts: 17
Joined: Tue Nov 30, 2010 9:56 am

Re: UDT om aantal paginas uit menu te tellen

Post by sniek »

Hoi Jos,

Bedankt voor je reactie, dit helpt me al goed opweg.
De variable {$count} bestaat inderdaad.

Ik wil mijn UDT gaan gebruiken in mijn stylesheet, zal dit een probleem worden aangezien de stylesheets eerder worden aangeroepen dan het menu?

Kort samengevat moet ik een kleine berekening doen in css:
width = 100 / [[aantal_paginas]] %;


EDIT:

Ik kan de bereken ook in de UDT doen, stuk makkelijker. Dan return ik de uitkomst daarvan wel.
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: UDT om aantal paginas uit menu te tellen

Post by velden »

Waarschijnlijk is de volgorde geen probleem. Als ik me goed herinner wordt in cmsms eerst de top, dan de body en tenslotte de head processed.

Maar: caching van stylesheets kan een probleem worden. http://docs.cmsmadesimple.org/general-i ... g-in-cmsms

Dus gebruik dat specifieke stukje css liever in een style block in de <head>.

En je zou eventueel een tweede {menu} kunnen gebruiken met een leeg template ofzo. Misschien niet heel efficient, dat niet.
User avatar
RogierDamen
Forum Members
Forum Members
Posts: 73
Joined: Fri Sep 21, 2012 8:00 pm

Re: UDT om aantal paginas uit menu te tellen

Post by RogierDamen »

Omdat mijn vraag wel erg dicht bij deze ligt, stel ik maar hier. Hoop dat dit ok is.

Ik wil in de menu template een UDT aanroepen via 'Extra Pagina Veld 2'. Hiermee zet ik achter de menutitel een content item teller.

Het veld 'Extra Pagina Veld 2' komt in het menu er mooi achter te staan maar als tekst. De UDT wordt dus niet uitgevoerd.

Menuitem {udt}

Het gaat om een UDT die pagina specifiek is, dus direct aanroepen als UDT en niet via het Extra veld is denk ik niet mogelijk.

Is er een manier om een UDT in het menu template op deze plaats ook uit te laten voeren?
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: UDT om aantal paginas uit menu te tellen

Post by Jos »

Ik kan niet exact uit je verhaal opmaken wat de inhoud is van het extra veld, ik ga er maar vanuit dat je er gewoon een complete udt tag in geplakt hebt.

je kunt dan {eval var=$foo} gebruiken in plaats van {$foo}
maar dit is wel een erg inefficënte geheugenslurpende manier

Beter zou zijn als je één udt hebt, waarin alle opties per pagina ingebakken zitten. In het extra veld stop je dan een parameter-waarde.
In je menu template zet je dan {mijnudt pagina=$foo}
En binnen je udt kun je dan $params['pagina'] gebruiken om te schakelen naar de gewenste pagina-afhankelijke output.

In bovenstaand voorbeeld komt $foo overeen met de variabele 'Extra Pagina Veld 2' waar je klaarblijkelijk de juiste aanroep al voor gevonden had.
User avatar
RogierDamen
Forum Members
Forum Members
Posts: 73
Joined: Fri Sep 21, 2012 8:00 pm

Re: UDT om aantal paginas uit menu te tellen

Post by RogierDamen »

Het gaat om een teller die het aantal berichten op een bepaalde pagina uit een db haalt. Ik heb de php die het aantal uit de db haalt in een udt gezet. Ik wil het aantal berichten in het menu achter de naam van de betreffende pagina zetten.

Inderdaad veel beter om de udt direct aan te roepen vanuit het menu template met een parameter die de pagina aangeeft.

Als ik de naam van de udt als 'aantalreacties' opgeef, $page_id de variabele in de udt en 'nl018' de pagina, krijg ik een Smarty error.

{aantalreacties $page_id = 'nl018'}

Waarschijnlijk is dus mijn schrijfwijze niet goed?
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: UDT om aantal paginas uit menu te tellen

Post by Jos »

Oke dat maakt het al wat duidelijker. Ik zou het zo doen:

In je menutemplate zet je achter de pagina-titel de aanroep naar de udt neer, bijv. {aantalreacties pagina=$node->id}

De variabele $node->id bevat binnen de MenuManager het id van de pagina.

De udt genaamd "aantalreacties" zou ik dan zo invullen:

Code: Select all

switch ($params['pagina']) {
    case 15:
        echo " (71 reacties)";
        break;
    case 21:
        echo " (187 reacties)";
        break;
    default:
        // alle overige pagina's, hier doen we niets
        break;
}
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: UDT om aantal paginas uit menu te tellen

Post by velden »

RogierDamen wrote:Het gaat om een teller die het aantal berichten op een bepaalde pagina uit een db haalt. Ik heb de php die het aantal uit de db haalt in een udt gezet. Ik wil het aantal berichten in het menu achter de naam van de betreffende pagina zetten.

Inderdaad veel beter om de udt direct aan te roepen vanuit het menu template met een parameter die de pagina aangeeft.

Als ik de naam van de udt als 'aantalreacties' opgeef, $page_id de variabele in de udt en 'nl018' de pagina, krijg ik een Smarty error.

{aantalreacties $page_id = 'nl018'}

Waarschijnlijk is dus mijn schrijfwijze niet goed?
Je moet de parameter-naam natuurlijk niet met een $-teken beginnen.
User avatar
RogierDamen
Forum Members
Forum Members
Posts: 73
Joined: Fri Sep 21, 2012 8:00 pm

Re: UDT om aantal paginas uit menu te tellen

Post by RogierDamen »

$page_id is de variabele in de udt die parameter 'nl018' moet krijgen.

Hoe moet het er dan uitzien ?
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: UDT om aantal paginas uit menu te tellen

Post by velden »

RogierDamen wrote:$page_id is de variabele in de udt die parameter 'nl018' moet krijgen.

Hoe moet het er dan uitzien ?
Kijk naar het voorbeeld van Jos. Een parameter begint NOOIT met een dollar-teken. $-tekens zijn gereserveerd om variabelen aan te roepen.

Je kunt niet zomaar ergens een variabele in gooien en dan verder in de UDT gebruiken. Daar gebruik je dus parameters voor zoals Jos dat voordeed.

{aantalreacties page_id='nl018'}

In de UDT: $params['page_id']
En dan kun je denk ik binnen je UDT wel de variabele declareren:

$page_id = $params['page_id'];
User avatar
RogierDamen
Forum Members
Forum Members
Posts: 73
Joined: Fri Sep 21, 2012 8:00 pm

Re: UDT om aantal paginas uit menu te tellen

Post by RogierDamen »

Ah, met deze toevoeging op Jos zijn uitleg ben ik denk ik waar ik moet zijn. Voor sommigen is Smarty een koekje, voor mij vaak nog een blur.

Dank je wel voor de uitleg ik ga er mee aan de slag.
Post Reply

Return to “Dutch - Nederlands”