Od 2 dni męczę się z OPT i niestety nawet własne instrukcje nie działają tak jak powinny.

Chciałbym, aby dla każdego rodzaju podstrony wczytywany był tylko jeden plik szablonu (wybierany w panelu administracyjnym). Np. standardowa strona tekstowa przetwarza plik "view.tpl". Od autora szablonu zależy, czy strona ma nagłówek, stopkę, itp. - w razie konieczności includuje już w szablonie te elementy (umieszczone w osobnym pliku tpl). Zawartość naszej strony statycznej jest praktycznie niezmienna, więc nie ma sensu pobierać jej z bazy za każdym razem. Może sie natomiast zdarzyć, że autor szablonu będzie chciał (np. w menu) umieścić ramkę zawierającą dane, które muszą być za każdym razem pobrane z bazy. I tutaj jest problem. OPT robi cache całej strony i jej wszystkich includowanych podstron. Ja natomiast chciałbym mieć możliwość dynamicznego dołączenia pliku - żemy system szablonów po staremu włączał pliki dołączone przez standardowe "include" do pliku cache, ale pliki dołączone np. przez "dyn_include" byłyby przetwarzane za każdym razem. W tej chwili zrobiłem (w OPT) dołączanie dynamicznych bloków jako własny znacznik {box} z odpowiednimi parametrami. W php sprawdzam funkcją isCached(), czy musi pobierać z bazy główną część strony, czy ją odczytać z cache. Niestety mój znacznik nawet po ujęciu go w {dynamic} jest "odświeżany" raz na jakiś czas.

Mój problem łatwiej będzie zrozumieć na przykładzie:
Użytkownik wchodzi na stronę www.strona.pl/artykuly/tytul_artykulu/
Główna część strony (tekst artykułu) jest pobierana z bazy i może być cacheowana - odpowiedzialny jest za to moduł "art"
W menu autor szablonu chce umieścić 5 najnowszych newsów (działka modułu "news"). Chciałbym to rozwiązać następująco:
Kod
{box module="news" params="5|date|desc" var="tablica" cache="0"}

System szablonu do zmiennej "tablica" przypisze wynik (dane 5 newsów). Autor szablonu sam zdecyduje jak tą zmienną wyświetlić (lista punktowana, tabelka, itp.).
Zależy mi na tym, żeby główna część strony była cache'owana, a box jeśli posiada parametr "cache=0" nie.

Być może powinienem to rozwiązać na poziomie cache zapytań do bazy danych?