Paginavariabelen in content blokken
Eén header, footer of content blok dat zich aanpast aan de pagina waarop het staat: een grote headerfoto op de homepage en een kleine op de rest, een tip alleen op de zoekpagina, of een actiebanner die tijdens het afrekenen verdwijnt. Dat doe je met de paginavariabelen, via de modifier ires_page. Ze werken in alle content blokken, ook in de header- en footerblokken van een thema.
De paginavariabelen
| Variabele | Waarde |
|---|---|
{"path"|ires_page} | Pad van de pagina zonder query string, bv. /overzicht. |
{"uri"|ires_page} | Pad plus query string, bv. /overzicht?cat=3. |
{"mod"|ires_page} | De module van de pagina, ook achter een SEO-url. Bv. searchevents, calendar, checkout, paymentresult. |
{"rewrite"|ires_page} | De SEO-alias van de pagina. |
{"lang"|ires_page} | De huidige taal, bv. NL of EN. |
{"<parameter>"|ires_page} | Elke andere parameter van de pagina. |
De waarden worden opgeschoond: geen HTML of aanhalingstekens en maximaal 255 tekens. Is een waarde leeg of bestaat de parameter niet, dan krijg je niets terug. Daardoor werkt |default:"..." gewoon:
<body class="page-{"mod"|ires_page|default:"content"}">Invoegen vanuit de editor
In de editor van een content blok staat in het rechterpaneel bovenaan de groep Paginavariabelen. Klik op een variabele om die op de cursorpositie in te voegen. Er staan ook kant-en-klare if-voorbeelden bij die je direct kunt aanpassen. Meer over het zijpaneel lees je in Hoe bouw ik een content blok met variabelen?.
Voorbeelden
1. Grote headerfoto op de homepage, kleine op de rest
{if "path"|ires_page == "/" || "path"|ires_page == "/start"}
<img src="/images/header-groot.jpg" class="header header-groot" alt="">
{else}
<img src="/images/header-klein.jpg" class="header header-klein" alt="">
{/if}2. Een tip alleen op de zoekpagina
{if "mod"|ires_page == "searchevents"}
<div class="alert alert-info">Tip: filter op datum om sneller een plek te vinden.</div>
{/if}3. Actiebanner verbergen tijdens afrekenen en betalen
Rust in de laatste stap zorgt voor minder afhakers.
{if "mod"|ires_page != "checkout" && "mod"|ires_page != "paymentresult"}
<div class="promo-banner">Nu 10% korting met code HERFST</div>
{/if}4. Tekst per taal
<a href="/boeken" class="btn btn-primary">
{if "lang"|ires_page == "EN"}Book now{elseif "lang"|ires_page == "DE"}Jetzt buchen{else}Nu boeken{/if}
</a>5. Op een deel van de url reageren
Met |strstr:"..." test je of een tekst in het pad voorkomt, bijvoorbeeld op alle pagina's waarvan de url kalender bevat.
{if "path"|ires_page|strstr:"kalender"}
<p>Kies hieronder een dag in de kalender.</p>
{/if}Van REQUEST_URI naar ires_page
Om veiligheidsredenen zijn $smarty.server, $smarty.session, $smarty.cookies en vergelijkbare variabelen niet toegestaan in content blokken. Het blok toont dan een melding in plaats van de inhoud. Het oude {$smarty.server.REQUEST_URI} blijft werken: dat wordt automatisch vertaald naar {"uri"|ires_page}. Gebruik in nieuwe blokken wel ires_page. Waarden uit de query string via {$smarty.get.naam} blijven toegestaan.
Voorheen:
{if $smarty.server.REQUEST_URI == "/overzicht"} ... {/if}Nu:
{if "uri"|ires_page == "/overzicht"} ... {/if}
{* or, ignoring the query string: *}
{if "path"|ires_page == "/overzicht"} ... {/if}Tip: bekijk de waarden
Twijfel je welke waarde een pagina heeft? Zet dit tijdelijk in het blok, open de pagina en haal de regel daarna weer weg:
<small>mod: {"mod"|ires_page} | path: {"path"|ires_page} | lang: {"lang"|ires_page}</small>

