Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CMS] Szablony - rozmieszczenie
Forum PHP.pl > Forum > PHP
WebCM
Kod: http://www.unit1.pl/pb-819

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.
  1. <?php
  2. #Katalog skórki
  3. define('SKIN_DIR', './style/'.$nstyl.'/');
  4. define('VIEW_DIR', './cache/view/');
  5. ?>
Następnie w pliku index.php:
  1. <?php
  2. $content->file = array($_GET['co']); //Fragment kodu bezpieczny
  3. ?>

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:
  1. <?php
  2. $content->file = array(VIEW_DIR . $_GET['co']); //index.php
  3. $content->file = array('./style/admin/' . $A); //admin.php
  4. ?>
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...

Zadziałają też może takie rozwiązania, ale po co kombinować? Przykład:
  1. <?php
  2. $content->file = array('../pluginName/' . $sth . '.html');
  3. ?>

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ść.
cbagov
Nie dyskutuje i nie wnikam za gleboko bo to twoj wariant.
U mnie zastosowalem wzorem Linuksa -user/strona=katalog- wlasne szablony do modyfikacji ale trzymajace sie schematu. W CSS latwo bo uwzgledniasz znaczniki lub nie.

Jest tez katalog systemowo/defaultowy dla templat sztuk 1, choc rozszerzalny ale osobiscie nie planuje.
Backup, kasowanie, przerzucanie dzieki umieszczaniu w 1 folderze dla usera znacznie ulatwiony.

Tyle, ze mam podzial np.:
w dir CFG = *.css i ogolnie LAY,
w dir DAT PAGES = *data, *stat, *work
w dir DAT SHOP = *data, *lay, *work jak ktos ma shop
w dir SHOP = *engine php, sql etc.
no i jeszcze kilka dir ale nie zwiazane z tematem.

Jesli user ma okreslone mozliwosci to ma swoj katalog w adekwatnym "systemowym".
Nie mowie, ze to rozwiazanie idealne, podaje jako moj wariant dla potomnosci.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.