Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze smarty
Forum PHP.pl > Forum > PHP
jureusz
Mam taki problem bardziej teoretyczny do rozwiazania. Chodzi o wyswietlanie produktow z magazynu z danej kategorii. Spieszylem sie i na szybko zrobilem w smarty cos takiego ... ze kazdy wyciagniety produkt z bazy ma oddzielna nazwe zmiennej w smarty (ograniczone z gory do 5 produktow wyswietlanych na stronie) np. CENATOWARUDOSTAW$i a templetach to bedzie {$CENATOWARUDOSTAW0} itd. Jednak to nie za dobre rozwiazanie ... Wolalbym bardziej zeby byl jeden szablon sluzacy do wyswietlania produktu i on byl powielany tyle razy ile jest produktow w bazie. No a z drugiej strony nie chcialbym dzielic obecnego template'a na kolejne... Jakies pomysly?
mike
Byłoby łatwiej rozwiązać Twój problem, gdybyś rzucił nam trochę kodu. Chciaż fragment.
jureusz
Teraz to wyglada tak:

[php:1:53463f9b11]<?php
for($i=0;$i<$row_produkty=mysql_fetch_array($produkty);$i++) {
$nazwa_firmy[$i]=$row_produkty['NAZWA_FIRMY_TOWARU'];
$smarty->assign("NAZWAFIRMYTOWARU$i",$nazwa_firmy[$i]);
$nazwa_towaru[$i]=$row_produkty['NAZWA_TOWARU'];
$smarty->assign("NAZWATOWARU$i",$nazwa_towaru[$i]);
//poprawka przecinka w cenie
$cena[$i]=$row_produkty['CENA_TOWARU_DOSTAW'];
$cena_towaru[$i]=str_replace(".",",",$cena[$i]);
$smarty->assign("CENATOWARUDOSTAW$i",$cena_towaru[$i]);
$opis_towaru[$i]=$row_produkty['OPIS_TOWARU'];
$smarty->assign("OPISTOWARU$i",$opis_towaru[$i]);
$zdjecie_towaru[$i]=$row_produkty['ID_TOWARU'];
$smarty->assign("ZDJECIETOWARU$i",$zdjecie_towaru[$i]);

}
?>[/php:1:53463f9b11]

a w templacie

Kod
<table width="460" border="0" align="center" cellpadding="0" cellspacing="0">

            <tr>

              <td width="131" rowspan="2"><div align="center"><img src="img.php?id_zdjecia={$ZDJECIETOWARU0}" width="100" height="100" class="border"></div></td>

              <td width="329" height="85" valign="top" class="text"><p align="center"> <strong>{$NAZWAFIRMYTOWARU0}</strong> <span class="style1">{$NAZWATOWARU0}</span> {$OPISTOWARU0}<br>

                      <span class="cena">{$CENATOWARUDOSTAW0}</span></p></td>

            </tr>

            <tr>

              <td valign="top" class="text"><div align="right"><a href="#" class="kategorie">Dodaj do Koszyka</a> </div></td>

            </tr>

            <tr>

              <td colspan="2"><hr noshade size="1" color="#000000"></td>

            </tr>

          </table>


No i to jest ta czesc ktora sie powtarza i ja za kazdym razem musze zmieniac np. {$NAZWATOWARU0} na {$NAZWATOWARU1} itd ... az do 4.
Generalnie pomysl mi sie spodobal bo grafik moze sobie rozlozyc gdziekolwiek chce te wszystkie wartosci. Jednak z drugiej strony po co mu dawac az takie pole do popisu ... jezeli te produkty sie bede powtarzaly w tym samym schemacie "html".. Wiec lepsza by byla petelka .. i teraz ostro mysle jak jej nie dodawac do tego template'a.

ps. sorrki za bledy skladniowe ... cosik mi sie ciezko dzisiaj mysli :/
jureusz
ok .. juz sam rozwiazalem problem ... nie wiedzialem ze w smarty jest cos takeigo jak section ...
Bielo
Ja na Twoim miejscu zamiast tworzyć bezsensu dużą ilość zmiennych skorzystałbym z dobrodziejstw tablic array.

poczytaj sobie o pętli foreach w smarty[/url]
jureusz
Nie mowie nie ... ale ja nadal mam jakies dziwne przekonanie ze grafik moze sie pogubic przy templatach (im mniej kodu tym lepiej dla niego). Niestety pewnych rzeczy nie da sie obejsc ..
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.