czwartek, 10 maja 2012

Jak w Smarty wyświetlić dane tylko na konkrentej stronie?

Dzisiaj pokażę, jak w szablonie strony umieścić kod tak, aby wyświetlał się tylko na danej podstronie w serwisie, a na innych podstronach już nie.

System szablonów Smarty obsługuje instrukcje warunkowe, wykorzystamy je do rozwiązania naszego problemu. Ogólnie mówiąc, aby wyświetlić dany tekst warunkowo w szablonie strony tpl, wstawiamy do tego szablonu instrukcję if.

{if $zmienna eq 'tak'} Dane wprowadzone poprawnie. {/if}

W powyższym przykładzie kod wyświetla napis "Dane wprowadzone poprawnie" tylko wtedy, gdy zmienna $zmienna przyjmuje wartość tak. Smarty obsługuje także zmienne środowiskowe serwera, znane z php. W naszym przykładzie użyteczna będzie zmienna
$_SERVER['REQUEST_URI']
która wyświetla adres żądania GET przesyłanego do hosta, a więc ściezkę url do zasobu sieciowego.
Zmienna ta w smarty przyjmuje postać $smarty.server.REQUEST_URI, a cały kod warunkowy będzie miał postać:

{if $smarty.server.REQUEST_URI eq 'oferta.html'}
Witamy na stronie firmy ...
Nasza oferta składa się z następujących produktów i usług ...
{/if}

W Smarty do dyspozycji mamy pozostałe zmienne środowiskowe serwera, a także zmienne sesyjne i czasu, np. $smarty.now.

Pamiętać należy, że jeśli w szablon strony wklejamy znaki zawierające nawiasy ostre np. <script> to cały kod na zewnątrz od tych znaczników należy umieścić w instrukcjach {literal} {/literal}. Jest to informacja do parsera szablonów php, żeby nie interpretował danych umieszczonych pomiędzy instrukcjami {literal} {/literal}, a tylko je "przepisał".

Wówczas cały kod wygląda tak:

{if $warunek}
{literal}
//kod wyświetlany warunkowo, może zawierać nawiasy ostre
{/literal}
{/if}

Taka konstrukcja przydaje się, gdy nasza strona jest zbudowana na PHP Smarty lub z użyciem frameworka Zend, a my musimy wyświetlić na konkretnej podstronie np. kod konwersji Google Adwords.

0 komentarzy:

Prześlij komentarz