2010-06-03 13 views
5

Potrzebuję wyświetlić sekcję lub inną w szablonie smarty. Mój stan jest prosty: jeśli wartość smarty zaczyna się od napisu, powinienem wyświetlić jedną sekcję, w przeciwnym razie powinna zostać wyświetlona inna sekcja smarty. Mogę zmienić tylko pliki tpl.Jak sprawdzić złożoną sytuację w Smarty (PHP)

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

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

Problem polega na tym, że nie mogę odczytać zmiennej URL, która została wcześniej przypisana za pomocą $ smarty-> assign. Zasadniczo szukam funkcji smarty, która może być użyta do pobrania wartości lub jeśli istnieje lepsze rozwiązanie.

+1

Dlaczego nie możesz odczytać zmiennej URL, jeśli została ona przypisana do szablonu? – pws5068

Odpowiedz

5

Najpierw posprzątam twój kod. Nie trzeba znaczniki PHP, używasz smarty:

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

    section 1 

{else} 
     section 2 
{/if} 

to niesprawdzone ale powinno być całkiem blisko ..

Teraz, jeśli próbujesz przeczytać coś jak stała, dla na przykład zmienna serwerowa, taka jak HTTP_HOST, możesz zrobić coś takiego:

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

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

    section 1 

{else} 
     section 2 
{/if} 
+0

Właśnie próbowałem, ale to nie działa. – adiian

+0

Nie zadziała, ponieważ php_self nie jest właściwą zmienną serwera, użyłem tego jako przykładu. Możesz spróbować $ smarty.server.HTTP_HOST, ale to prawdopodobnie odcina http. Aby przejrzeć wartości zmiennych serwera, prześlij stronę za pomocą tylko pws5068

+0

to nie działało z powodu innego problemu – adiian