Smarty und der Zufall.

Seit längerem hab ich eine Möglichkeit gesucht möglichst einfach HTML Bausteine zufällig rotieren zu lassen. Es versteht sich von selbst das der Aufwand möglichst gering und die Änderungen ausschließlich in der Termplate Ebene statt finden sollten.

Smarty gibt die Möglichkeit von Hause aus nicht her. Ein Modul für smarty zu schreiben war ich zu faul. Darum folgt die schnelle Lösung.

1
{php}$this->_tpl_vars['intRandNumber']= rand(2,5);{/php}

Nachtrag: Noch eleganter ist es natürlich gar kein PHP zu verwenden und die Variable in Smarty folgendermaßen zuzuweisen:

1
{assign var="intRandNumber" value=2|rand:5}

Danke an Lars für den Hinweis!

Diese Zeile fügt, in einem Smarty Template, eine Variable hinzu die mit einer zufälligen Zahl zwischen 2 und 5 gefüllt wird. Auf diese Variable kann im Template wie gewohnt mit {$intRandNumber} zugegriffen werden.

Eine Möglichkeit diese Zahl zu nutzten wäre eine elseif Struktur.

1
2
3
4
5
6
7
8
{* Ostern *}
{if $intRandNumber == 2}
{include file="../templates/html/include/teaser/20090220_ostern.tpl"}
 
{* Garten *}
{elseif $intRandNumber == 3}
{include file="../templates/html/include/teaser/20090220_garten.tpl"}
{/if}

Einfach, Schnell und sehr praktisch.

Quellen: PHP rand(), smarty

4 Responses to “Smarty und der Zufall.”

  1. Alter Fuchs!
    Danke für den Tipp, werd ich bestimmt bald verwenden…

    PS Das Wort “Ebende” wird mein Lieblingswort der Woche ;-)

  2. Jan says:

    Ich wusste doch das der Borris das interessant findet :D

    “Ebende” wurde hiermit aus der News ausgeschlossen … muss ja nicht sein ;) thx

  3. Larsen says:

    Hm, das löst zwar das Problem, ist aber Geschmackssache. Schließlich führst du ja doch wieder PHP im Template aus.

    Probier mal folgenden code aus:

    {assign var=”intRandNumber” value=2|mt_rand:5}

    Löst das Problem smarty-only und ist viel kuhler :P

  4. Benni says:

    {assign var=”intRandNumber” value=2|mt_rand:5}

    Hat mir gerade sehr geholfen. Danke für diesen genialen Tipp :-)

Leave a Reply