ďťż

[CMS] Skórki i ich struktura Kolejne badanie opinii publicznej

       

Podstrony


telcocafe

Mam nadzieję, że kolejna ankieta nie przeszkadza tutaj i pozwoli na wybór właściwej drogi. :)

Rozpocząłem zmianę struktury szablonów dla poszczególnych modułów (art, news, plik...), by nie zawierał kodu PHP, lecz zmienne {title}, {date}... Webmaster popularnej witryny zaprotestował, ponieważ w tych plikach stosuje modyfikacje danych dla własnych potrzeb (aby uzyskać inny wygląd niż narzucony). Scharakteryzuję 3 możliwe opcje.

Skórki z kodem PHP
Aby zachować przejrzystość, zmienne będą wyświetlane tak: <?= $zmienna ?>, choć nie zawsze. W przypadku modułu nowości (jest ich więcej na 1 stronie) w skórce raczej musi znajdować się FUNKCJA (bo nie będzie się kilka razy dołączać tego samego pliku, nie?).

+ Swoboda modyfikacji
+ Dostęp do innych zmiennych, funkcji, stałych...
+ Szybkość

- Mniejsza przejrzystość
- Utrudnienie dla osób nieznających PHP

Skórki ze zmiennymi {var}
Użycie funkcji file_get_contents() i str_replace(). Należy wywoływać str_replace() kilkakrotnie bądź utworzyć tablicę i przekazać ją jako argument. Zmienne to np. {name}, {title}, {lang.desc}... Uprzedzam, że systemy szablonów odpadają.

+ Duża przejrzystość
+ Ułatwienie dla osób nieznających PHP
+ Łatwość modyfikacji (o ile nie trzeba dodać innej zmiennej)

- Ograniczenie swobody modyfikacji oraz ilości użytych zmiennych
- Być może sposób trochę wolniejszy (maks. o 2-3 ms.) lub bez różnicy
- Prawdopodobnie większe zużycie RAM-u

Sposób 1 + interpreter
Podział skórek na sp. I i II spowodowałby większy bałagan w kodzie tych modułów. Jest jeszcze inne rozwiązanie - utworzenie wtyczki lub wbudowanego modułu, który zapisze zmodyfikowany kod plików .tpl do .php. Wtedy prawdopodobnie skórki do pobrania będą rozpowszechniane w postaci bez kodu PHP (mniej problemów z kompatybilnością między różnymi wersjami skryptu) - trzeba będzie je "kompilować" w panelu administracyjnym.

+ Zalety rozwiązania 1 i 2
+ Kto umie PHP, modyfikuje od razu .php, a kto nie - .tpl i używa wtyczki
+ Interpretowanie stylów innych systemów (?)
+ Możliwość użycia większej ilości zmiennych (w tym językowych), instrukcji warunkowych... w skórkach prostych

- Zapis może nie przebiec poprawnie
- Po modyfikacji kodu trzeba go zapisać, używając wtyczki

Głosujcie. :) Wypowiadajcie się tylko wtedy, gdy macie coś do powiedzenia odnośnie tematu ankiety.
Użytkownik Ferrari edytował ten post 01 czerwiec 2007, 11:44


trochę zakręcona ta ankieta, powinna być też wielokrotnego wyboru

+ Szybkość ... - Prawdopodobnie większe zużycie RAM-u+ Szybkość
Na poziomie nanosekund. Taka quasi "optymalizacja" nie ma zupełnie sensu, gdyż i tak wąskim gardłem będą zapytania SQL czy też operacje na plikach (jeżeli w ogóle) Ograniczasz jakość i funkcjonalność na rzecz bezsensownej optymalizacji.

Przykład - PHP-Fusion, który w licznych moich testach wygrywał. Niedawno pojawił się przypadek, w którym instalacja PHP-Fusion zabijała kolejne serwery, w tym dobry VPS. Właściciel strony przesłał mi zrzut tabel z artykułami (Fusion służył do przechowywania artykułów) i okazało się że winnym jest widok kategorii artykułów - wykonywane zapytania COUNT wykonywały się bardzo długo - 45 zapytań (45 kategorii) COUNT wykonywało się bardzo wolno bo artykułów było ponad 4500 sztuk (60MB w bazie). Przeróbka zapytań na jedno z JOINem niewiele dało. Dopiero dodanie do tabeli kategorii pola na ilość artykułów i nie wykonywanie COUNT za każdą odsłoną listy kategorii rozwiązało problem ;) Wykonanie kodu PHP to nie problem.

System szablonów - prosty system szablonów z dziedziczeniem i prostym zestawem tagów (jak smarty, tyle że mniej) +/- z możliwością wstawiania kodu PHP, kompilowane do czystych plików PHP:

index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>{% block title %}Moja strona{% endblock %}</title> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body> cośtam... {% block content %}{% endblock %} cośtam.. </body> </html>

jakiśmoduł.php:
{% extends "index.php" %} {% block content %} Treść jakaśtam {% endblock %}
Użytkownik Riklaunim edytował ten post 01 czerwiec 2007, 15:23
ja bym jednak użył gotowca
smarty
chameleon
etc....
Użytkownik bikstopa edytował ten post 02 czerwiec 2007, 12:18
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.