Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunek w smarty/php
Forum PHP.pl > Forum > PHP
mambus
Witam.

Walczę od rana ze smarty. W czym tkwi problem, już piszę.

Otóż, mam plik list_one.tpl, który jest plikiem szablonu smarty pewnego sklepu internetowego, którego nieprzyjemność przerobienia padła na mnie.

Potrzebuje, aby w zależności od jednego warunku, zmieniał się wygląd produktu (ramka, kolory itp).

Warunek generuje się w taki sposób, że baza mysql wyciąga z pewnej kolumny - pewną wartość. Jeśli wartość w kolumnie nie jest empty, to wtedy oznacza to że wygląd produktu ma być "czerwony". Jeśli wartość w kolumnie jest empty, to wtedy może być zielona (można użyć else, wiadomo).

Pytanie: Jak mam to zrobić w smarty ?

Czytałem dokumentację w smarty.net, lecz nie bardzo mogę cokolwiek z tego wywnioskować.
Dla przykladu:


Tutaj jest funkcja, która wyciąga tą wartość kolumny:
  1. function smarty_function($produkt)
  2. {
  3. $sql = "SELECT `price_card` FROM `xxx_xxx_offer` WHERE `id`='$produkt'";
  4. $smarty->assign('price_card', $db->getRow($sql));
  5. }


W php to proste, postawiłbym warunek w stylu:
  1. if(!empty($price_card['price_card']))
  2. {
  3. // no to wtedy jest czerwony
  4. }
  5. else
  6. {
  7. // zielony albo jakiś inny
  8. }
  9.  
  10.  





A jak to przełożyć w smarty ?
nospor
Analogicznie

Kod
{if !empty($price_card.price_card)}
// no to wtedy jest czerwony
{else}

// zielony albo jakiś inny
{/if}

Ale to są podstawy smarty.
mambus
Cytat(nospor @ 13.09.2011, 15:48:44 ) *
Analogicznie

Kod
{if !empty($price_card.price_card)}
// no to wtedy jest czerwony
{else}

// zielony albo jakiś inny
{/if}

Ale to są podstawy smarty.


Jestem bardziej niż zielony w kwestiach smarty.

Okej, ale teraz: jak mogę przekazać zmienną do funkcji w smarty ?

np $offer_list.id ?
nospor
Do jakiej znowu funkcji?
mambus
A nie. Okej.

Problem rozwiązałem.

Wystarczyło w pliku .php odpowiedzialnym za generowanie danych z zapytania SQL, dorzucić aby wyciągał jeszcze jedną kolumnę, a następnie

  1. $smarty->assign($zmienna)


to.

Potem odczytać to w smartym. Ktoś dobrze napisał kiedyś na tym forum i to podstawowa kwestia w podejściu do smarty -> to nie jest interpreter PHP lecz tylko coś co jest wynikową działania np php. Fajnie że da się niejako "wysłać" zmienne do szablonu smarty i jest to dynamiczne.

Dzięki za pomoc.
nospor
Cytat
to nie jest interpreter PHP lecz tylko coś co jest wynikową działania np php. Fajnie że da się niejako "wysłać" zmienne do szablonu smarty i jest to dynamiczne.
Smarty to system szablonów. W każdym systemie szablonów można szablonowi przekazać zmienne inaczej system taki nie miałby jakiegokolwiek sensu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.