Artikelen

Sjablonen made simple

Gepost door joost op 28 jun 2010 in de categorie CMS
Soms wil je een website waarbij je op het hoofdniveau de sjablonen wil meeveranderen met de content. Uiteraard kun je dan proberen om de URL uit te lezen (bij het gebruik van pretty URLs), aangezien daar de hierarchie in terugkomt. Het is natuurlijk charmanter om dat via het menusysteem te doen. Hieronder een uitleg.

Wat de code doet is hij vraagt de node->hierarchy op. Dit is het nummer van de node dat je terugvindt in het pages overzicht van CMSMS. Vervolgens gooi je alles weg behalve de eerste twee characters, middels truncate. Dit kan uiteraard een getal en een punt zijn (voor een getal kleiner dan 10) of twee cijfers (voor een getal boven de 9). Voor deze eerste groep moeten we de . nog even vervangen door niets. We komen dan uit op de volgende smarty variabele:

{$node->hierarchy|truncate:2:""|replace:'.':''}

Deze variabele beschrijft dus middels een getal onder welke hoofdcontent (of sectie) de huidige pagina valt. Dit is prettig want nu kun je een stuk code schrijven dat er bijvoorbeeld zo uitziet:

{foreach from=$nodelist item=node}
{if $node->hierarchy|truncate:2:""|replace:'.':'' == 1}{php}$hv='ho';{/php}{/if}
{if $node->hierarchy|truncate:2:""|replace:'.':'' == 2}{php}$hv='ro';{/php}{/if}
{if $node->hierarchy|truncate:2:""|replace:'.':'' == 3}{php}$hv='gr';{/php}{/if}
{if $node->hierarchy|truncate:2:""|replace:'.':'' == 4}{php}$hv='ge';{/php}{/if}
{/foreach}


De hierarchie variabele $hv is degene die je vervolgens kunt gebruiken (in hetzelfde template) om de layout speficiek te maken voor deze sectie. Deze kan je uiteraard vaker uitlezen. Zet de bovenstaande code NA het menu. Daarvoor is deze variabele namelijk nog leeg.

Ik heb mijn inspiratie van deze site:
http://forum.cmsmadesimple.org/index.php/topic,4507.0.html

En een toelichting op de truncate functie vind je hier:
http://smarty.activeventure.org/language.modifier.truncate.html





Terug