Na początku przechowywałem wszystkie szablony w 1 folderze - VIEW. Miały być specyficzne dla danego serwisu - do edycji przez webmastera lub totalnej wymiany. Do skórek (zmienianych przez użytkowników) należały ikony, arkusze stylów CSS i główny layout.
Doszedłem do wniosku, że takie rozwiązanie stanie się uciążliwe, gdyż szablony nie będą uniwersalne dla każdej skórki (głównie dla CSS). Przykład - webmaster nie mógłby zmienić <li> na <table> bądź odwrotnie bez dokonywania zmian w CSS. Teraz do skórki należą wszystkie szablony. Czy to dobre posunięcie? Czy poprzednie było lepsze?
Kolejna sprawa - wtyczki. Przecież one też będą wprowadzać swoje szablony. Prawdopodobnie będzie dla nich miejsce w folderze STYLE (chyba, że lepiej w folderze PLUGINS?).
Problem w tym, że... w jądrze od razu ustawiam katalog, w którym znajdują się wtyczki.
Następnie w pliku index.php:
<?php #Katalog skórki ?>
<?php ?>
Co zrobić, aby nie utrudniać wtyczkom dołączania własnych szablonów? To samo dotyczy panelu admina (jeśli jego szablony mają być odrębne, a nie częścią skórek). Może tak:
Tak też być nie może. Jądro ustawi VIEW_DIR dla domyślnej skórki. Specyficzne szablony (Info, 404, Message), które są dołączane przez klasę Content, też mogą wchodzić w skład skórek np. dla forum jako wtyczki (a stała VIEW_DIR jest niezmienna). Oczywistym zaś jest, że dodatki typu "księga gości" lub "shoutbox" będą korzystać z domyślnych plików CSS i szablonów: Info, 404, Message...
<?php ?>
Zadziałają też może takie rozwiązania, ale po co kombinować? Przykład:
<?php ?>
Ewentualnie zamiast stałych można wprowadzić zmienne do klasy $content. $content->file musiałby jednak znów zawierać pełną ścieżkę do szablonu.
Inne wyjście - nic nie zmieniać, a katalogi z szablonami skórek i panelu admina umieścić w skórce domyślnej. Przy kompilacji lista plików ze stylu DEFAULT stanie się wzorem. Jeśli w kompilowanej skórze zabraknie jakiegoś pliku, zostanie on pobrany z domyślnej. Pozostaje znów problem wtyczek z własnymi stylami (layoutem głównym, Info, Message...) - np. forum.
Jakie rozwiązanie tych problemów proponujecie? Ważne, aby nie doszło potem do kolejnych komplikacji. Istotna jest także wydajność.