Wyrażenia logiczne

Ostatnia aktualizacja: 11 października 2012

Jeżeli masz zamiar projektować szablony dla swoich i klietów sklepów, powinieneś zapoznać się z poniższymi sekcjami.

Przykłady wyrażeń logicznych

Załóżmy, że jesteś na stronie produktu i chcesz wyświetlić etykietę "Produkt niedostępny" ale tylko wtedy, gdy faktycznie produkt jest w danej chwili niedodstępny. Jeżeli produkt może mieć tylko stan dostępny lub niedostępny, to najlepszym wyrażeniem do zastosowania tego jest wyrażenie if/else

{if $product->available}
	od {$product->price_min|money_with_currency}
{else}
	Produkt niedostępny
{/if}

Operatory

W wyrażeniach logicznych if/else możesz używać następujących operatorów:

  • == - równy
  • != - różny od
  • > - większy od
  • < - mniejszy od
  • >= - większy bądź równy
  • <= - mniejszy bądź równy
  • or - lewa lub prawa strona musi być prawdą
  • and - lewa i prawa strona muszą być prawdą

Logika if/else

Logika if/else mówi nam o tym, że jeżeli warunek A jest spełniony to wykonaj polecenie wewnątrz "if" a jeżeli nie to wykonaj polecenie w "else". Możesz używać trzech wyrażen wewnątrz wyrażenia if: {if}, {elseif} i {else}. Poniżej przyjrzymy się kilku przykładom:

Wyrażenie if

{if $product->available}
	Produkt w sprzedaży
{/if}

Wyrażenie if/else

{if $cart->item_count > 0}
	Koszyk : {$cart->total_price|money_with_currency}
{else}
	Koszyk pusty
{/if}

Wyrażenie if/elseif/else

{if $variant->weight < 1000}
	Koszt dostawy: 10zł
{elseif $variant->weight < 5000}
	Koszt dostawy: 20zł
{else}
	Koszt dostawy: 30zł
{/if}

Pętla foreach

Pętli foreach używamy głównie gdy chcemy powtórzyć jakąś czynnośc wielokrotnie. Przykładowo gdy chcemy wyświetlić wszystkie warianty danego produktu

{foreach from=$product->variants item=variant name=loop}
	{$variant->name}
{/foreach}

Wewnątrz pętli można wykorzystywać również pewne właściwości pętli

  • $smarty.foreach.loop.index - zawiera aktualny indeks tablicy, począwszy od zero
  • $smarty.foreach.loop.iteration - zawiera aktualny numer iteracji pętli począwszy od jeden
  • $smarty.foreach.loop.first - jest na True w przypadku gdy pętla jest wykonywana pierwszy raz
  • $smarty.foreach.loop.last - jest na True w przypadku gdy pętla jest wykonywana ostatni raz
  • $smarty.foreach.loop.total - zwraca ilość wszystkich iteracji pętli

Przypisywanie zmiennych

W szablonach możesz przetrzymywać również swoje dane wewnątrz zmiennych a następnie je użyć. Możesz to uczynić w prosty sposób opisany poniżej.

{assign my_title 'Kontakt'}
{foreach from=$menulists->main_menu->links item="menu"}
	{if $menu->title == $my_title}
		Aktywne menu to 'Kontakt'
	{/if}
{/foreach}