Zacząłem oddzielanie wyglądu (HTML/CSS) od logiki (PHP/SQL). Problem stanowi jednak sama obsługa szablonów. Zacząłem na razie od metody nr 1, lecz myślę o lepszych rozwiązaniach.
1. Wstawki PHP
Zazwyczaj kod jest czytelny. Gorzej w przypadku iteracji, bo trzeba definiować w skórce funkcję lub użyć w niej pętli. Zaletą jest możliwość użycia kodu PHP (albo wadą dla niedoświadczonych).
2. File_get_contents() i str_replace()
Metoda również szybka. Występują zmienne typu {title}, {date}, itp. Nie można raczej mówić o definiowaniu bloków danych. Za to równie dobrze da się oddzielać fragmenty, np. ---BREAK---.
3. System szablonów
Systemy szablonów typu Smarty lub OPT raczej odpadają. Atutem CMS-a jest niewielki rozmiar plików (zarówno ładowanych do pamięci przy każdym żądaniu). Mogę jednak napisać własny system (lepsze rozwiązanie) bądź zmodyfikować istniejący do potrzeb CMS-a.
4. Kompilowanie do PHP w administracji
Tego chyba nie trzeba tłumaczyć - kompilowanie skórek do PHP na żądanie użytkownika w panelu administracyjnym. Zalety - kompilowanie skórek AutoTheme i innych systemów?
Najlepszym wyjściem jest coś podobnego do:
<tr>
<td>{lang:title}</td>
<td>{title}</td>
</tr>
<!--START ocena -->
<tr>
<td>{lang:ocena}</td>
<td>{ocena}</td>
</tr>
<!--END ocena -->
W tym przypadku rozwiązanie nr 2 odpada - str_replace() nie starczy. Kolejny problem to iteracja fragmentu kodu.
Przyjmując, że szablony są kompilowane do PHP, problem iteracji pozostaje nadal. W PHP dane z bazy odczytuję przy pomocy PDO i funkcji FOREACH:
foreach($obiekt_result as $tablica) { ... }
Innym rozwiązaniem jest funkcja:function X(argumenty?) { global ...? ...}
Jakie jest wasze zdanie na ten temat?