![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pare pytań o tworzeniu własnego systemu szablonów.
1. Załóżmy że mamy dwa pliki szablonów: i drugi: (w tym drugim pliki typu header.tpl czy panele.tpl zawierają divy podane w pierwszym pliku) I tu kieruję pierwsze pytanie: która z metod jest lepsza (wydajność, porządek). Pytanie drugie: czy jest sens robienia plików .tpl do każdego pliku .php? np.
itd. Czy nie wprowadzi to zbyt dużego bałaganu w plikach? Jeśli tak to jakie inne wyjście polecacie? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1 - zależy, czego potrzebujesz. Jeśli tego nagłówka potrzebujesz też w innym miejscu, to można rozważyć drugi wariant, w przeciwnym wypadku nie ma sensu. Zresztą statyczny include jest średnio przydatny.
Ad. 2 - a jak niby sobie to inaczej wyobrażałeś? Jeśli nie chcesz bałaganu, to wpakuj to w osobny katalog i tyle. Nawiasem mówiąc, polecam lekturę: http://www.zyxist.com/pokaz.php/uzyteczne_systemy_szablonow -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To, czy robić plik.php i plik.tpl zależy tylko od jednego -> czy dane w tpl są całkowicie statyczne czy nie. Plik.php można przyrównać do kontrolera a plik.tpl do widoku najprościej ujmując. Jeśli więc w widoku nie masz żadnych danych dynamicznych tylko plain-text to robienie dla niego plik.php tylko po to, by móc wywołać plik.tpl mija się z celem. Samo stosowanie php i tpl jest jak najbardziej sensowne, gdyż oddzielasz od siebie strukturę strony od operacji logicznych. Po to jest widok by wyświetlać już przetworzone dane i nic więcej. Może on jedynie minimalnie się zmieniać w zależności od tych danych (jakieś if czy pętle
![]() ![]() ![]() ![]() EDIT: Ta tyrada była tylko po to, byś mógł docenić sensowność systemu szablonów i tego jak powinny wyglądać. Ten post edytował thek 11.09.2009, 15:23:47 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1 - zależy, czego potrzebujesz. Jeśli tego nagłówka potrzebujesz też w innym miejscu, to można rozważyć drugi wariant, w przeciwnym wypadku nie ma sensu. Zresztą statyczny include jest średnio przydatny. A zakładając że mamy powiedzmy pliki panelu admina (z 18 plików). I mając .tpl bazujące na pierwszym przykładzie chce zmienić nazwe pliku nagłówka i załóżmy dodać nowy panel. I co, i mam w każdym z tych 18 plików zmieniać nazwe pliku headera i dodawać nowego diva od panelu? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Nie - przeczytaj proszę podany przeze mnie link. Po prostu stworzyłeś sobie zbyt prosty system szablonów i właśnie widzisz, że pokonuje Cię dość prosty problem. Jednym z ograniczeń jest m.in. niemożność wczytania nazwy pliku do dołączenia ze zmiennej szablonu.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
można to zrobić tak:
ale czy nie ma jakiegoś lepszego sposobu? tamtego artykułu jakoś nie trawię EDIT: a czemu ten pomysł z include jest zły? odświeżam Ten post edytował krzysiek9394 11.09.2009, 17:23:28 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
A jaki miałby być lepszy sposób? Nie widzę innej możliwości.
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Ja tak robie :] -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
a inne pętle?
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
A w templatkach potrzebujesz jakiś innych?
-------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 4.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jakby tak pomyśleć to na razie nie
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Bo zamiast tworzyć nowy szablon za każdym razem, gdy masz inny zestaw paneli, możesz ładować dynamicznie te, które potrzebujesz. I nagle okazuje się, że nie potrzebujesz nagłówka przenosić do osobnego pliku.
Kod <html> <head> <title>{tytul}</title> </head> <body> <div id='header'> <img src='header.png' /> </div> <div id='panele'> {foreach $panele as $panel} <div id='{$panel.id}'> {include $panel.file} </div> {/foreach} </div> ... Aby odpowiedzieć na kolejne pytanie, spróbuję ogólnie streścić ideę tekstu, który Ci podsunąłem i którego nie wiedzieć czemu, nie trawisz. Robisz system szablonów, zatem aby nadawał się on do użytku, musi oferować odpowiednie możliwości, gdyż inaczej polegnie on na najprostszej rzeczy. Takie elementarne cegiełki, które są właściwie niezbędne, to np. instrukcje warunkowe i właśnie pętle, o które się pytasz. Tak więc pytanie nie brzmi: "czy powinno się te pętle dodawać" tylko "dlaczego ich jeszcze nie zaimplementowałeś". OK, masz już system szablonów z pętlami i tego typu bajerami. I odpowiedz sobie teraz na kolejne pytania: 1. Skoro doszedłeś do takiego poziomu, to czy nie lepiej było wykorzystać jakiś gotowy system, który oferował takie coś od ręki? 2. Czym się te Twoje szablony różnią od pisania w czystym PHP? Chyba jedynie tym, że masz klamerki zamiast <?php ... ?>, bo jedną połowę rzeczy robisz dokładnie tak samo, jak w PHP, a drugą robisz 2 razy dłużej, bo sobie nie możesz pomóc funkcjami czy obiektówką. Ergo, władowałeś kupę pracy tylko po to, by się ograniczyć ![]() Jeśli piszesz system szablonów, by się czegoś nauczyć, to OK, ale jeżeli myślisz o poważnym zastosowaniu, to jest to ślepa uliczka. Żeby taki system faktycznie pomagał, musi się niestety wyróżniać czymś więcej, niż zastąpieniem <?php ... ?> klamerkami, a "to coś" już nie jest tak łatwe do wymyślenia, o implementacji nie wspominając. -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:01 |