UDT om aantal paginas uit menu te tellen
Moderator: velden
UDT om aantal paginas uit menu te tellen
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!
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!
Re: UDT om aantal paginas uit menu te tellen
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']
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']
Re: UDT om aantal paginas uit menu te tellen
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.
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.
Re: UDT om aantal paginas uit menu te tellen
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.
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.
- RogierDamen
- Forum Members
- Posts: 73
- Joined: Fri Sep 21, 2012 8:00 pm
Re: UDT om aantal paginas uit menu te tellen
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?
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?
Re: UDT om aantal paginas uit menu te tellen
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.
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.
- RogierDamen
- Forum Members
- Posts: 73
- Joined: Fri Sep 21, 2012 8:00 pm
Re: UDT om aantal paginas uit menu te tellen
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?
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?
Re: UDT om aantal paginas uit menu te tellen
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:
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;
}
Re: UDT om aantal paginas uit menu te tellen
Je moet de parameter-naam natuurlijk niet met een $-teken beginnen.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?
- RogierDamen
- Forum Members
- Posts: 73
- Joined: Fri Sep 21, 2012 8:00 pm
Re: UDT om aantal paginas uit menu te tellen
$page_id is de variabele in de udt die parameter 'nl018' moet krijgen.
Hoe moet het er dan uitzien ?
Hoe moet het er dan uitzien ?
Re: UDT om aantal paginas uit menu te tellen
Kijk naar het voorbeeld van Jos. Een parameter begint NOOIT met een dollar-teken. $-tekens zijn gereserveerd om variabelen aan te roepen.RogierDamen wrote:$page_id is de variabele in de udt die parameter 'nl018' moet krijgen.
Hoe moet het er dan uitzien ?
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'];
- RogierDamen
- Forum Members
- Posts: 73
- Joined: Fri Sep 21, 2012 8:00 pm
Re: UDT om aantal paginas uit menu te tellen
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.
Dank je wel voor de uitleg ik ga er mee aan de slag.