Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system szablonów, funkcje
Forum PHP.pl > Forum > Przedszkole
jarmiar
witam

mam problem jak rozwiązać następującą kwestię:

chcę zrobic taki znacznk:

{$nazwa_funkcji: argument}

i zeby po wpisaniu w szablon tego, wywołała się funkcja

nazwa_funkcji(argument);

nie wiem jak to zrobic
emtiej
Nie napisałeś jaki system szablonów masz na myśli, w smarty takie coś nie jest chyba możliwe...
jarmiar
jest to taki system szablonów

http://wklej.org/hash/119c63e013/

i teraz mi chodzi o coś innego:

miałem na stronie funkcję:

<? panele('prawa'); ?>

i postanowiłem to zamienić na

{$panele.prawa}

w funkcji panele('prawa'); mam include do innego pliku i on też może zawierać includy do innych choć nie musi

problem polega na tym, że ta funkcja tzn {$panele.prawa) wykonuje się pierwsza, na samym początku, a nie w miejscu, w którym została wstawiona

jak temu zaradzić?
Crozin
I po co niepotrzebnie drążysz niepotrzebnie w taką ułomność, jaką jest zamiana <?, ?> na {, }? Jedynie niepotrzebnie zmniejszasz czytelność, elastyczność, wydajność aplikacji, nie zyskując przy tym kompletnie niczego.
jarmiar
no dobra ale nie takie było pytanie
Zyx
Funkcje? W TAKIM systemie szablonów? Zapomnij. Porządne systemy szablonów działają na zupełnie innej zasadzie. Tutaj nawet jak Ci się po wielu trudach i walkach uda osiągnąć taki efekt, możesz powiedzieć "dobranoc" wydajności, prostocie i pewnie też niezawodności. Zainstaluj sobie coś normalnego w stylu OPT czy PHPTAL, bo czegoś takiego, co pokazałeś, to nie ma sensu nawet używać. Rozwiążesz jeden problem z funkcjami, za pięć minut znów się pojawisz z kolejnym pytaniem o następną głupotę.

Crozin -> jakieś argumenty czy też jesteś jednym z tych, którzy zawiedli się na archaicznym Smartym (który faktycznie można o kant rozbić) i teraz dla zasady jadą po wszystkich systemach szablonów nawet bez rzucenia okiem lub wygłaszając brednie typu "Zend_View to nie system szablonów" lub "Porównanie systemu szablonów XXX z frameworkiem YYY"?
Crozin
@Zyx: O Smarty nie ma nawet co dyskutować. Nieco świeższe systemy są nieporównywalnie lepsze (z OPT się nawet swego czasu bawiłem i nie powiem - nie jest zły, ale nie miałem okazji go wykorzystać z jakimś normalnym projekcie). Nie napisałem też, żeby pod żadnym pozorem nie korzystać z takich narzędzi - bo jeżeli komuś ułatwiają i przyśpieszają pracę to jak najbardziej powinien z nich korzystać.

Po prostu jak widzę taki "system szablonów" to profilaktycznie wolę autora odwieść od zamiaru wykorzystania go. winksmiley.jpg
jarmiar
no dobra, ale jak byście to zrobili??
Pilsener
Normalnie, to co ma się wyświetlać w szablonie dajesz w {} i wszystko. Po co tworzyć kolejny pseudo-język, którego nikt nie będzie umiał wykorzystać nawet jak znajdzie się ktoś na tyle szalony, by tego użyć w swoim projekcie. Wyjścia masz dwa:
1. Używasz znanego systemu tak, aby każdy mógł go bez problemu obsłużyć (np. smarty), gdzie jest support i dokumentacja
2. Używasz swojego systemu, ale PROSTEGO, ja np. używam tylko {zmienna} i jakoś sobie radzę, wydajność też na pewno dzięki temu jest lepsza
Crozin
@Pilsner: i w jaki niby sposob wyswietlasz cos w stylu: jezeli uzytkownik jest zalogowany to wyswietl link do profilu, jezeli nie, to "Witaj gosciu"?

PS. Przepraszam za brak polskich znakow, nie mam chwilowo mozliwosci pisania inaczej.
jarmiar
no dobra tak chcę zrobić, ale jak przypiszę do np {$panele.gora} funkcje panele('gora') to kod wykona się wcześniej bo tam są różne includy

ak to obejść
Pilsener
Cytat
i w jaki niby sposob wyswietlasz cos w stylu: jezeli uzytkownik jest zalogowany to wyswietl link do profilu, jezeli nie, to "Witaj gosciu"?
- trochę inwencji, dziele kod HTML na sekcje, np. news przyklejony a zwykły to będą dwa różne templaty i tak całość będzie scalona w jeden monstrualny templat całej strony, jedyna różnica jest taka, że stworzenie PA do tego jest bardziej skomplikowane (bo trzeba templat podzielić na kilka, no ale czego się nie robi dla finalnego użytkownika). Projektując system trzeba mieć na uwadze, że chłopcy z Demokratycznej Republiki Konga, którzy będą stawiać na tym powiedzmy dużo wartościowych serwisów muszą to ogarniać bez problemu, czasem jak człowiek widzi skomplikowane templaty gdzie warstwy ifów i pętle idą w dziesiątki to się zastanawia, czy temu to miało służyć? Potem pojawiają się skórki i spece od nich, bo przecież nikt się nie będzie uczył pseudo-języka, spotykałem się nawet z opiniami, że kiedyś kod HTML był w plikach .php i było łatwo, wiadomo co było trzeba zmienić i w jakim pliku etc.

Oczywiście jeśli jest dużo dynamicznego kodu HTML to bez uciekania się do systemów typu SMARTY ani rusz, ale jakiś prosty system artykułów czy dodawania stron? Tak czy inaczej templat trzeba stworzyć i od tego się nie ucieknie.

Tak np. standardowe menu rozwijane jest zbudowane (fragment):
http://img.org.pl/obrazek/cZGlTxX16u3.html

Do tego oczywiście opis każdego elementu i listy zmiennych tak, że nawet kompletny laik to zrozumie a jak dasz pętle + masę warunków w smarty to zaraz zaczną się pytania typu "chciałbym zrobić menu na tabeli, do jakiego specjalisty mam się udać, może być pediatra?"
jarmiar
no dobrze, ale ja w dalszym ciągu nie uzyskałem odpowiedzi na moje pytanie
Zyx
A ja widzę, że uzyskałeś:

Cytat
Funkcje? W TAKIM systemie szablonów? Zapomnij. Porządne systemy szablonów działają na zupełnie innej zasadzie. Tutaj nawet jak Ci się po wielu trudach i walkach uda osiągnąć taki efekt, możesz powiedzieć "dobranoc" wydajności, prostocie i pewnie też niezawodności. Zainstaluj sobie coś normalnego w stylu OPT czy PHPTAL, bo czegoś takiego, co pokazałeś, to nie ma sensu nawet używać. Rozwiążesz jeden problem z funkcjami, za pięć minut znów się pojawisz z kolejnym pytaniem o następną głupotę.


Pilsener -> dlatego powinno się używać systemów, które mają składnię zoptymalizowaną pod czytelność w kodzie HTML smile.gif. W moich szablonach używam różnych rzeczy, a oprócz tego tworzę je szybko, zaś kod pozostaje czytelny. Kod, jaki pokazałeś, wcale nie musi być czytelniejszy. Zamiast pytania "do czego służy te 100 ifów" masz "Co tu się do @#%#$% wyświetla i gdzie jest ten szablon".
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.