Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wstawianie szablonu w Smarty.
Forum PHP.pl > Forum > PHP
MalyKazio
Witam,

Zamierzam zacząć używać na swojej stronie szablonów Smarty. Mam jednak związane z tym pytanie. Nie chcę niczego sknocić, więc wolę najpierw zapytać. Mam stronę o budowie modułowej. Na razie wszystkie dane do wyświetlenia zbieram w zmiennych $naglowek, $strona i $stopka i potem je wyświetlam. Czy możliwe jest stopniowe wprowadzanie szablonów do poszczególnych modułów. Czyli jak np. mam moduł kontakt i odpowiadający za niego plik kontakt.php, który dokłada swoją część do zmiennej $strona (w postaci kodu html). To czy mogę wprowadzić szablon kontakt.tpl dla tego modułu, czy też nie? Czy po zastosowaniu $smarty->display(kontakt.tpl) nie wyrzuca od razu całości do przeglądarki? Mam nadzieję, że ktoś zrozumiał o co mi chodzi smile.gif
Piniek
możesz includowac w tpl poszczególne moduły przez
Kod
{include file="plik.tpl"}
mike
Cytat(MalyKazio @ 6.04.2008, 15:51:44 ) *
Czy po zastosowaniu $smarty->display(kontakt.tpl) nie wyrzuca od razu całości do przeglądarki?
Po zastosowaniu display() wszystko pójdzie do przeglądarki.
Ale nie musisz przecież stosować display(), możesz zastosować fetch() przechwycić wszystko do zmiennej i wyświetlić kiedy Ci wygodnie.
MalyKazio
Oto mi właśnie chodziło. Czyli mogę stopniowo przygotować sobie każdy moduł i zamiast dodawać do $strona poszczególnego kodu html, dodać na końcu pliku modułu całość do $strona i potem dopiero wyświetlić? Byłoby dobrze. Docelowo planuję całość przerobić na szablony ale na razie muszę wiązać but dżdżownicą i na raty to przygotowywać.
mike
Cytat(MalyKazio @ 6.04.2008, 16:08:37 ) *
Czyli mogę stopniowo przygotować sobie każdy moduł i zamiast dodawać do $strona poszczególnego kodu html, dodać na końcu pliku modułu całość do $strona i potem dopiero wyświetlić?
A nie odpowiedziałem już na to pytanie? tongue.gif
Tak, możesz.
jarek_bolo
Cytat(MalyKazio @ 6.04.2008, 16:08:37 ) *
... na razie muszę wiązać but dżdżownicą ...


Hehe, dobre, nie słyszałem tego jeszcze smile.gif
guitarnet.pl
zanim wkopiesz sie w smarty sprawdz inne rozwiazania, bardziej optymalne i szybsze XHTML i CSS to na pewno alternatywa ciekawa uwagi:

http://www.mezzoblue.com/zengarden/alldesigns/
http://www.csszengarden.com/

oraz wiecej argumantow za nie uzywaniem smarty zgodnie z zasada nie zabijaj muchy z armaty smile.gif
http://skrypta.pl/porada/jak_zbudowac_stro...a_szablonach/66
Zyx
guitarnet.pl -> mylisz pojęcia, i to poważnie (podobnie zresztą, jak autor ostatniego odnośnika). XHTML/CSS oraz systemy szablonów w PHP to dwie zupełnie różne i niezależne technologie, które mogą być bez trudu używane jednocześnie.
- Szablon w XHTML/CSS (nieformalne pojęcie) - grafika, kolory itd. nakładane na dokument XHTML za pomocą CSS.
- Szablon w PHP - szkielet dokumentu XHTML z pozaznaczanymi odpowiednio miejscami, do których skrypt może wstawić wyniki swojego działania.

Zatem w artykule szablonem jest zarówno styl z CSS Zen Garden, jak i podany tam plik PHP z tymi include'ami. Jedno drugiego nie wyklucza, bo żeby w ogóle mieć co tym CSS-em "upiększać", musisz wcześniej wygenerować jakiś dokument XHTML, a tym zajmuje się PHP za pomocą własnych szablonów. Co więcej, nie jest powiedziane, że te szablony nie mogą być napisane w PHP. Mogą - to kwestia tego, co komu wygodnie i jak potrafi wykorzystać możliwości danego rozwiązania. Ja akurat preferuję dedykowaną składnię, która nierzadko jest krótsza, wygodniejsza oraz czytelniejsza (choć to zależy też od wybranego systemu), a jeżeli jest odpowiednio zaprojektowana, to pozwala na rzeczy, o których w PHP można tylko pomarzyć.
guitarnet.pl
witam
mojej systemy maja funkcjonalnosc smarty za pomoca xhtml/css

zuwaz ze dla strony index.php generuje tresc w postaci listy divow jeden po drugim wiec po co mi smarty?
prosty listing wg parametrow i dolaczanie statycznego pliku menu , stopki, naglowka, srodek generowany wg parametru z adresu - zadanie dostepu do strony, prosty szybki kod php

za pomoca klas css z latwoscia mozna zmieniac szablony wygladu i do tego wlasnie sluzy smarty
nie mow mi ze pomylilem technologie bo wlasnie przepisalem duzy system spolecznosciowy na xhtml ktory dzialal na smarty wiec moja firma powinn amnie zwolnic smile.gif) shhhh smile.gif

jedyny powod dla ktorego to zrobilem to optymalizacja, czas generowania strony obciazenie mysql
polecam wyklad Rasmusa z jednej z konferencji PHP, chyba w Seattle "Get rich with PHP", dostepny jest na php.net
poczytaj o wydajnosci przy uzywaniu nadmierenj ilosci include i niepotrzebnych operacjach

domyslam sie ze w niektorych sytuacjach smarty jest konieczny ale szczerze mowiac podczas mojej pracy jeszcze mi sie taka nie przydarzyla
qqrq
Cytat(guitarnet.pl @ 8.04.2008, 14:40:39 ) *
domyslam sie ze w niektorych sytuacjach smarty jest konieczny ale szczerze mowiac podczas mojej pracy jeszcze mi sie taka nie przydarzyla


Smarty, tak jak każdy inny szablon PHP, to po prostu wygoda. A spadek wydajności wcale nie jest aż tak "znaczny" (kiedyś było o tym na forum) - za to masz oddzieloną logikę prezentacji od biznesowej. Szczerze powiem nie mam pojęcia jak można porównywać "szablon" (X)HTML/CSS do Smarty. Chyba że chodzi ci o szablony z użyciem zwykłego PHP-a, bez Smarty, wtedy OK - ja ostatnio nawet częściej takich używam, przez wzgląd na Symfony. biggrin.gif
Sedziwoj
@guitarnet.pl
Powiem tyle, że coś Ci się miesza, bo nie umieścisz danych z PHP w HTML jeśli coś ich tam nie umieści gdzie trzeba, a statyczny HTML na pewno nie zrobi tego.
A Smarty nie służy tylko, przez Ciebie widziane wyłącznie, jako łatwa zmiana wyglądu strony, a do tego aby rozdzielić to co generuje treść, od tego jak jest wyświetlana. Bo chyba jedynie na możliwości zmiany wyglądu strony się skupiłeś, a to tylko stanowi pewną konsekwencje właśnie rozdzielenia prezentacji od tego jak są te dane uzyskiwane.


P.S.
Zajrzałem na stronę z nick'a, jak ja dawno nie widziałem takiego czegoś:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
mike
Cytat(guitarnet.pl @ 8.04.2008, 14:40:39 ) *
mojej systemy maja funkcjonalnosc smarty za pomoca xhtml/css
Już tysiące razy na tym forum czytałem opinie ludzi na tematy, o którch nie mają zielonego pojęcia lub swoje pojęcie przeceniają znacznie.
Twoja wypowiedź jest właśnie jedną z takich.

Odpowiedz mi na kilka pytań:
1. Jak za pomocą XHTML realizujesz funkcjonalność pętli?
2. Jak za pomocą XHTML realizujesz funkcjonalność instrukcji warunkowej?
3. Jak za pomocą XHTML realizujesz funkcjonalność przekazywania zmiennych do szablonu?
4. Jak za pomocą XHTML realizujesz funkcjonalność i18n?
5. Jak za pomocą XHTML realizujesz funkcjonalność typu {cycle} lub którejkolwiek z funkcji Smarty: Custom Functions?
6. Jak za pomocą XHTML realizujesz funkcjonalność typu {strip} lub któregokolwiek z modyfikatorów Smarty: Variable Modifiers?
...
..
.

Czy Ty w ogóle wiesz do czego służą szablony Smaty?
guitarnet.pl
smiesznie wyszlo smile.gif niezrozumielismy sie

1) guitarnet.pl to stary smiec ktory jest przerabiany po pracy, niestety praca zawodowa nie zostawia mi wiele czasu

2) tak w css dostepne sa warunki min "if" ale to ciekawostka, nie korzystam z tych elementow CSS i ich dzialanie jest ograniczone

3) koncepcja szablonow php -> xhtml

odwolanie np: http://adres.pl/plik1.php lub http://adres.pl/?mod=1
czyli odwolanie do jakiegos dzialu np listy 20 ostatnio dodanych pozycji do bazy

plik1.php
include wartswa_obslugi
include naglowek
<div id='srodek'>
//SRODEK
//i tutaj generujemy nasza liste z bazy danych np.
<div class='lista'> pozycja ...</div>
<div class='lista'> pozycja ...</div>
<div class='lista'> pozycja ...</div>
...
// KONIEC SRODKA
</div>
include stopka

zatem zawsze wynikiem bedzie plik z lista DIV i SPAN niesformatowany ktory po wyswietleniu w przegladarce pokaze liste pozycji jdna pod druga bez kolorow i formatowania, kod interpretowany idealnie przez np LYNX'a zgodny z zasadami optymalizacji, nie uzywajacy tabelek

kod php do listowania elementow z bazy jest identyczny jak ten w smarty ktory sobie napiszecie i wstawicie wyniki w szablon
w smarty wyniki podstawiane sa do wartosci w szablonie, szablon jest parsowany i zawartosc wyswietlana
w php/xhtml generowany jest warstwa danych a szablon wybrany przez uzytkownika laduje plik CSS (cachowany na dysku jesli chcemy, oszczednosc transferu, szybkosc ladowania) ktory jest wartstwa prezentacji

nieporozumienie wyniklo z tgeo ze ktos pomyslal ze tylko i wylacznie xhtml to zrobi smile.gif nie, proste gnerowanie div'ow z php ktory i tak musicie wdrozyc do smarty pozwala na bardzo duza elastycznosc, jedyna praca po stronie serwera wykonywana jest podczas generowania warstwy danych, wartstwa prezentacji jest po stronie usera

nikogo nie ewangelizuje, technologia warta uwagi, naprawde przyspiesza ladowanie serwisu, zmniejsza ilosc danych do transferu i jest wysmienicie elsatyczna, wszystkie zmiany wygladu dokonywane sa wylacznie w plikach CSS nigdy w wartswie danych

moim zdaniem, podkreslam , smarty to potezna maszyna ktora do wiekszosci zastosowan jest zbyt duza
minusem php/xhtml jest delikatna roznica w interpretacji styli w IE i FF ale csszengarden.com pokazuje jak sobie z tym radzic

pozdrawiam
mike
To może ja przypomnę Twoje słowa:
Cytat(guitarnet.pl @ 8.04.2008, 05:35:30 ) *
zanim wkopiesz sie w smarty sprawdz inne rozwiazania, bardziej optymalne i szybsze XHTML i CSS to na pewno alternatywa ciekawa uwagi:


Nie masz pojęcia co mówisz. XHTML i CSS nie są alternatywą dla Smarty!
To są dwie bardzo różne rzeczy, nie mające ze sobą wiele wspólnego.
Sedziwoj
@mike
Po prostu on uważa że Smarty służy jedynie do tego aby łatwo zmieniać skórki, co jest nie prawdą, ale jeśli on do tej pory nie zrozumiał tego, to nie wytłumaczysz, chyba że siłą.
Widocznie on ma mało wspólnego z programowaniem, raczej bawi się grafiką, stąd ten dziwny pogląd, brak zrozumienia.
(A może w ogóle nie korzystał z Smarty i na wet nie wie co on daje, jak właściwie każdy system parsowanych szablonów. Rozdzielenie prezentacji informacji od tego jak i skąd są one brane)
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.