[Zalozenia] System szablonow

0

Ustalilismy juz, ze system ma byc oparty o system szablonow. System musi dzialac tak, aby obslugiwal inne wersje jezykowe, bez koniecznosci tworzenia nowej skorki. W tym celu proponuje nastepujaca strukture katalogow:

- templates
  - Main (nazwa skorki)
    - gfx (grafika) 
       - pl (grafika dla polskiej wersji jezykowej)

Obrazki ktore nalezaloby przerobic na inny jezyk powinny sie znajdowac w katalogu pl, en itp. Te ktore sa niezalezne od wersji znajdowaloby sie po prostu w katalogu gfx.

Teraz czekam na wasze sugestie dotyczace dzialania klasy template. Powinna umozliwiac standardowe zastepowanie danych. Powinna umozliwiac takze zastepowanie w petli (Np. wyswietlanie listy dziedziczonych obiektow) oraz usuwanie czesci bloku.

Dodalbym takze mozliwosc wstawiania instrukcji warunkowych. W skorce powinno byc mozliwosc wstawniania w okreslonym miejscu innego szablonu.

Czekam na wasze sugestie co do dzialania szablonow, tak, aby korzystanie z nich bylo mozliwie jak najprostsze.

Mozna by pomyslec takze nad systemem cache'u. Tzn. raz wygenerowany szablon zapisywany bylby w katalogu 'cache'. Kolejne wywolanie strony spowodowaloby wczytywanie szablonu z cache. Trzeba by bylo jednak dodac jakis system sprawdzania czy trzeba wygenerowac nowy szablon czy uzyc tego z cahce. Do tego mozna uzyc np. daty modyfikacji pliku. W przypadku poprawiania danych sprawa jest prosta: po uaktualnieniu wpisu, kasowana jest wersja z cache. Ale np. zmiana jakiegos elementu z szablonu tez powinno spowodowac skasowanie wersji z cache.

0

Proponuję dobrze zapoznać się z systemem szablonów phpBB 2.2 (wersja niestabilna, ale dostępna na phpbb.com) i wybrać to co najlepsze (petle, instr. warunkowe, kompilacja do kodu php, cache'owanie etc.)

0

Ta wersja korzysta w rzeczywistosci z kodu Smarty. Wydaje sie ze nie potrzebujemy takiego kombajnu, a ta kompilacja szablonu to kodu PHP ... :/

Faktem jest ze bedziemy potrzebowali podstawowych funkcji:

assign -- przypisywanie do szablonu prostych danych lub tablic
assign_block -- przypisywanie do szablonu blokow kodu w petli
clean_block -- usuniecie wybranego bloku kodu

Przydalaby sie jeszcze funkcja sterujaca instrukcjami warunkowymi.

0

Wydaje sie ze nie potrzebujemy takiego kombajnu, a ta kompilacja szablonu to kodu PHP ... :/

Wcale nie takie " :/ ", bo kompilacja do kodu php znacznie przyspieszy generację strony. System nie generuje za każdym razem kodu, tylko zapisuje sobie plik, w którym jest skompilowany szablon. Wtedy nie potrzeba żadnych wyrażeń regularnych i podmieniania stringów. Zmienne są wyświetlane funkcją echo() - naprawdę użyteczna rzecz i warto się nad tym zastanowić.

Wiadomo, że wszystkie funkcje się nie przydadzą, ale jakieś IF'y i zagnieżdżone bloki myślę, że będą bardzo użyteczne - dzięki instrukcją warunkowym nie będzie trzeba używać żadnego clean_block().

0

Masz racje. W sumie jest to dobre rozwiazanie. Juz sie zajelem testami nad odpowiednia klasa.

0

Troche pogrzebalem, potestowalem, na CVS umiescilem klase template(), z pierwszymi podstawowymi funkcjami ktore musi posiadac klasa template().

Rzeczywiscie, wraz z cache szablon dziala szybciej, ale roznica jest widoczna przy wiekszej ilosci danych. Jak ktos ma ochote przejrzec klase, to lezy ona na CVS, w katalogu include/.

1 użytkowników online, w tym zalogowanych: 0, gości: 1