![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jest jedna rzecz, z którą jakoś nie mogę dać sobie rady. Wbrew pozorom problem nie jest taki znów banalny. Chodzi o to, jak w ładny sposób rozwiązać kwestię kilku widoków na stronie, tzn: nagłówek, menu, treść, reklama, stopka. Do tej pory robiłem to w następujący sposób: Szablon article.php jest wywoływany przez główną akcję. W includowanych plikach istnieje możliwość wywołania klasy typu helper, które wyciągają dane z bazy i robią wszystkie assigny. Do tej pory ten sposób mi odpowiadał, jednak teraz chcę, by można było cachować poszczególne części strony. Nie mówię tu o serializacji obiektów, czy tablic, ale o cachowaniu gotowego htmla. Powiedzmy, że mam jedną akcję wywoływaną w urlu i stronę, która składa się z: nagłówka, menu, treści artykułu, listy najnowszych tematów na forum oraz ze stopki. Przy czym, menu i treść artykułu są cachowane. Reszta nie. Jak to ładnie rozwiązać? Zapraszam szanowne grono do dyskusji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat W szablonie głównym dodawaj pozostałe szablony (np. menu) poprzez rozszerzoną metodę Include() która będzie potrafiła sprawdzić czy istnieje Cache (w formie czystego HTMLa wygenrowanego wcześniej) dla danego szablonu. Jeżeli istnieje to go zwróci w czystej formie, a jeżeli nie to przystąp do generowania szablonu tak jak to robisz teraz. I dopiero w menu.tpl użyj odpowiednich ViewHelperów wykonujących odpowiednie zapytania do DAO i wykonujących wymagane Assigny(). Potem zwracasz HTML, a ww metoda Include() zapisuje go do Cache oraz zwraca do głównego szablonu. Myślałem trochę nad tym. No dobrze, mogę zrobić $this->include() i to sprawdzi mi, czy jest cache. Powiedzmy, że wywołuję szablon show_article.tpl.php. Wewnątrz includuję header.tpl.php. Metoda $this->include sprawdza, czy header posiada cache. Jeśli posiada, to zostaje wczytany. Ale... co jeśli w pliku header.tpl.php jest dołączany jeszcze menu.tpl.php?? Taka metoda nie nadaje się do większej hierarchii widoków. Naprawdę już nikt nie ma pomysłu, jak to zrealizować?? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 00:58 |