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ć?? |
|
|
|
chmolu multiwidoki 4.08.2005, 15:05:18
bela_666 Ja robię tak.
Określam requesty, które są dopasowy... 4.08.2005, 16:11:03
chmolu Można bardziej szczegółowo?
Z przykładami 4.08.2005, 16:23:42
bela_666 Fragment konfiga
[XML] pobierz, plaintext <requ... 4.08.2005, 16:37:33
chmolu Hm... sam nie wiem. Pomyślę jeszcze nad tym.
A mo... 4.08.2005, 16:52:42
chmolu Wyskrobałem coś takiego:
[PHP] pobierz, plaintext... 4.08.2005, 21:04:02
Vengeance W szablonie głównym dodawaj pozostałe szablony (np... 4.08.2005, 21:48:54
NuLL @chmolu - fajowski pomysł z kompozytowym widokiem ... 4.08.2005, 22:24:56
NuLL Pomysł mam Tylko zapomniałem o nim tu napisać. Ta... 6.08.2005, 17:28:20
chmolu Moglbys rozwinąć tę myśl? Wygląda ciekawie. Jakiś... 6.08.2005, 17:41:07
NuLL Spróbuje coś jutro skodzić. Sam walcze z buforami ... 6.08.2005, 17:48:16
chmolu Spróbujmy jeszcze bardziej skomplikować sytuację :... 6.08.2005, 18:06:15
NuLL [PHP] pobierz, plaintext <?php $buffer=new... 6.08.2005, 18:11:14
Vengeance chmolu: Wydaje mi się że powoli zaczynasz przesadz... 6.08.2005, 20:06:00
NuLL @vee - to jest przepis na multiwidok wg. mnie a ni... 6.08.2005, 20:10:49
Vengeance pisalem juz wiele rzeczy, i zwykly glowny TPL z in... 6.08.2005, 20:21:26
chmolu Cytatchmolu: Wydaje mi się że powoli zaczynasz prz... 6.08.2005, 20:41:25
Vengeance "życie kompilować" hmm google ani wiki n... 6.08.2005, 23:20:10
matid A co do multiwidoków, to czy najlepszym wyjściem n... 6.08.2005, 23:29:06
chmolu Cytat"życie kompilować" hmm google ani w... 7.08.2005, 00:12:38
chmolu CytatSprawdzone rozwiązanie stosowane w Smalltalku... 7.08.2005, 11:54:11
emilio A to Composite View ? 7.08.2005, 13:23:16
chmolu A masz jakąś propozycję, jak to sensownie przenieś... 7.08.2005, 13:31:01
emilio To jest implementacja wzorca Composite (skorzystał... 7.08.2005, 14:57:11
chmolu Hmm.. ciekawe, jakby to się sprawdziło w praktyce.... 7.08.2005, 16:21:50 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 13:26 |