2010-06-03 5 views
5

Ich muss den einen oder anderen Abschnitt in einer Smarty-Vorlage anzeigen. Meine Bedingung ist einfach: Wenn ein Smarty-Wert mit einer Zeichenfolge beginnt, sollte ich einen Abschnitt anzeigen, andernfalls sollte der andere Smarty-Abschnitt angezeigt werden. Ich kann nur die tpl-Dateien ändern.So überprüfen Sie eine komplexe Bedingung in Smarty (PHP)

{php} 
    if (substr($url,0,4) != 'http') 
    { 
    {/php} 
        section 1 

    {php} 
    } 
    else 
    { 
    {/php} 
     section 2 
    {php} 
    } 
    {/php} 

Das Problem ist, dass ich nicht die URL varible lesen kann, die smarty- $ vorher zugewiesen wurde mit> assign. Im Grunde bin ich auf der Suche nach der Smarty-Funktion, die verwendet werden kann, um einen Wert abzurufen, oder wenn es eine bessere Lösung gibt.

+1

Warum können Sie die URL-Variable nicht lesen, wenn es der Vorlage zugewiesen wurde? – pws5068

Antwort

5

Zuerst würde ich Ihren Code aufräumen. Sie brauchen keine PHP-Tags, Sie Smarty verwenden:

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 

Das ungetestet ist, aber es sollte ziemlich nah sein ..

Nun, wenn Sie versuchen, so etwas wie eine Konstante zu lesen, für Beispiel eine Servervariable wie HTTP_HOST, können Sie etwas tun wie folgt:

{assign var='url' value=$smarty.server.HTTP_HOST} 

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 
+0

Ich habe gerade versucht, aber es funktioniert nicht. – adiian

+0

Es wird nicht funktionieren, weil php_self nicht die richtige Servervariable ist, ich habe das nur als Beispiel benutzt. Sie können versuchen, $ smarty.server.HTTP_HOST, aber das schneidet wahrscheinlich die http. Um die Werte Ihrer Servervariablen anzusehen, laden Sie eine Seite mit nur pws5068

+0

es funktionierte nicht wegen eines anderen Problems – adiian