Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SMARTY] Wybranie zdefiniowanego fragmentu z szablonu
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
become
Witam.
Dotychczas stosowałem template_IT. Postanowiłem przejść na SMARTY.
Mam pytanie.

W template_IT mogłem zdefiniować w jednym szablonie - np. zawierajacym formularze, kilka wersji jednego formularza.
Wykonując metodę: TOUCH, gdzie parametrem byla nazwa wersji, moglem wybrac ta wersje, ktora mi pasowala.

przykład:
http://pear.php.net/manual/en/package.html....touchblock.php

Jak podobna rzecz zrobić w SMARTY?
Uzyc SECTION z parametrem powtarzania ustawionym na 0 questionmark.gif
Zyx
Chociażby zwykłą instrukcję warunkową masz od tego:

Kod
{if $login_successful}
formularz
{else}
drugi formularz
{/if}


  1. <?php
  2. $tpl -> assign('login_successful', 1);
  3. ?>
become
no to rozwiazanie nie za bardzo mi odpowiada.
jezeli bede mial plik z komunikatami np. 20 roznych komunikatow, to w template_IT po prostu robilem

  1. <?php
  2. $tpl->touchBlock("jaki_blok")
  3. ?>


gdzie jaki_blok bylo nazwa bloku zawierajaca odpowiedni komunikat - i to wszystko.

A SMARTY będę musiał pisać kilkanaście if-ów questionmark.gif

Bez sensu.
Sabistik
No to może capture?

Definiujesz parę bloków, w php przekazujesz nazwę bloku, w szablonie wyświetlasz odpowiedni blok po nazwie.
become
tez nie.
poniewaz capture wycina tylko to co jest pomiedzy {capture} a {/capture}

mi chodzi o to, aby wszystko co jest w template zostalo pokazane + 1 wybrany element.
Tak dziala to w template_IT.

mam np. taki template.

  1. <div> test </div>
  2. <!-- BEGIN kom1 -->
  3. You have logged in successfully!
  4. <!-- END kom1 -->
  5. <!-- BEGIN kom2 -->
  6. Login failed
  7. <!-- END kom2 -->
  8. <!-- BEGIN kom3 -->
  9. You have logged in successfully!
  10. <!-- END kom3 -->
  11. <!-- BEGIN kom4 -->
  12. Login failed
  13. <!-- END kom4 -->
  14. <div> test </div>


to wybierając blok "kom2" wyswietli mi się:

  1. <div> test </div>
  2. Login failed
  3. <div> test </div>
Sabistik
Jak dobrze pamiętam capture działa podobnie.

  1. <?php
  2. $tpl -> assign('captureName', 'kom4');
  3. ?>


  1. <div> test </div>
  2. {capture name=kom1}
  3. You have logged in successfully!
  4. {/capture}
  5. {capture name=kom2}
  6. Login failed
  7. {/capture}
  8. {capture name=kom3}
  9. You have logged in successfully!
  10. {/capture}
  11. {capture name=kom4}
  12. Login failed
  13. {/capture}
  14. {$smarty.capture.$captureName}
  15. <div> test </div>
Zyx
A jaka to jest różnica między zrobieniem dwudziestu <!-- BEGIN costam -->tekst<!-- END costam -->, a zrobieniem dwudziestu {if $costam}tekst{/if}? Przecież na dobrą sprawę to jest dokładnie to samo.
become
nie chce mieć IF-ów po stronie SMARTY - to jest ta różnica
IF-y mogę sobie zrobić w php.
Zyx
Jejku... a w Template_IT to niby czym to robiłeś, jak nie instrukcją warunkową (fakt - uproszczoną i pod nieco inną postacią/nazwą, z nieco inną obsługą, ale jednak)? smile.gif Unikanie programowania po stronie szablonów swoją drogą, ale bez zbędnej przesady.
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.