X
ďťż

Dołączanie szablonów z innej ścieżki Jak rozwiązać ten problem?

       

Podstrony


telcocafe

Klasa Content: http://www.unit1.pl/pb-904
Front Kontroler: http://www.unit1.pl/pb-905
Rozszerzenie (dołączone przez Front Kontroler): http://www.unit1.pl/pb-906

W klasie Content zdefiniowałem 2 zmienne. Są to:
* $content->dir - z szablonami źródłowymi (HTML + pseudokod szablonowy)
* $content->cacheDir - z szablonami skompilowanymi do PHP

Doskonale zdają egzamin, gdy całkowicie zmieniam środowisko (np. panel admina, instalator). Wtedy wszystkie szablony są ładowane z określonych w tych zmiennych katalogów (oprócz kilku ładowanych z VIEW_DIR).

Do tej pory wszystko funkcjonowało poprawnie. Teraz pojawił się problem. Zacząłem tworzyć rozszerzenie do systemu CMS. Nie wypada, by szablony wtyczek były przechowywane w katalogu domyślnej skórki (bo skórek może być więcej - wtedy admin może nie wiedzieć, która jest tą domyślną). :D Lepiej, aby rozszerzenia miały własne katalogi z szablonami.

Pojawia się problem. W pliku rozszerzenia zmieniam katalog, w którym znajdują się rozszerzenia. Niestety, wyświetla się błąd:
Warning: filemtime() [function.filemtime]: stat failed for ./style/chat/body.html in [...]lib\content.php on line 100Teraz popatrzmy na Front Kontroler (na sam koniec). Tam sprawdzam, czy główny szablon (layout) jest skompilowany, wywołując metodę compile(), która wykorzystuje te 2 zmienne $content->dir i $content->cacheDir.

Jak rozwiązać problem, aby móc trzymać szablony rozszerzeń w osobnych katalogach? Może w ogóle inaczej zorganizować cały proces dołączania szablonów?

Jest jeszcze drugi, trochę mniej istotny problem. W domyślnym katalogu znajdują się szablony współdzielone (np. dla komentarzy). Gdyby tak rozszerzenia chciały je wykorzystywać? Chociaż mogą je też skopiować do własnego katalogu...



Popatrz na ten problem i ile opisu wymagał = rozwiązanie jest zbyt skomplikowane i/lub nieelastyczne.

Proste i powszechnie stosowane rozwiązanie to dziedziczenie szablonów oraz oddzielenie szablonów "szkieletowych" od szablonów szczegółowych poszczególnych komponentów. "Skórki" zawierają wyłącznie szablony szkieletowe posiadające szereg bloków o określonych nazwach na np. treść, tytuł, jakieś tam menu itd plus pliki statyczne jak CSS/JS itd. Szablony szczegółowe jeżeli istnieją to zawarte są wraz z modułami. Szablony te dziedziczą główny szablon i wypełniają określone bloki zawartością i nie powinny wymagać żadnych zmian. Przykłady to Smarty, czy szablony Django (http://www.beberlei.de/calypso/ odpowiednik w PHP) ładnie współgrające z MVC frameworka.

Kombinujesz jak koń pod górę. Zamiast usilnie starać się wymyślić swoje rozwiązania warto czasami zastosować już istniejące, znacznie lepsze i stworzone przez mądrzejszych ludzi.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.