Wydajność szablonów modułowych


(Bartekviper) #1

Znalazłem artykuł na temat budowania strony opartej o moduły:

http://webmaster.helion.pl/index.php/ph ... -stron-www

Zastanawia mnie jednak wydajność tego rozwiązania? Czy sprawdza się ono? Może jest lepsze?


(Zbyszekborkowski) #2

Szczerze mówiąc nie bardzo mi się podoba zastosowany w tym artykule sposób. Już sam fakt, że artykuł został opublikowany niecały miesiąc temu, a jego autor uporczywie tworzy szablon strony oparty na tabeli, nie świadczy o nim ani o stosowanych przez niego metodach zbyt dobrze.

Po co ładować cały szablon do zmiennej i przeszukiwać całą jego treść, żeby znaleźć odniesienie do tytułu, czy menu. Tego typu operacje chyba nie należą do najmniej zasobożernych. Po drugie, menu zwykle stosuje się takie samo na wszystkich podstronach. Zatem jaki jest cel ładowania go z odrębnego pliku.

Zamiast czegoś w stylu "%tytul_strony%", można użyć <?php echo $title; ?>. Wystarczy zmienić rozszerzenie pliku na .phtml i zostanie to zinterpretowane.

W pliku odpowiedzialnym za "złożenie wszystkiego do kupy" wystarczy wówczas takie coś:

<?php

  function getContent() {

    require('content.phtml');

  }


  $title = 'Tytuł naszej strony';


  require('szablon.phtml');

?>

a w pliku szablon.phtml w miejscu przewidzianym na treść strony wstawilibyśmy:

<?php getContent(); ?>
[/code] Czyż nie jest to prostsze i mniej zasobożerne od poniższego kodu?
[code]<?php // Tytuł strony $tytul = "Nasz serwis WWW - Zdjęcia"; // Otwarcie plików z szablonami elementów strony $tplGlowny = fopen("szablony/glowny.html", "r"); $tplMenu = fopen("szablony/menu.html", "r"); $tplZdjecia = fopen("szablony/zdjecia.html", "r"); // Wczytanie szablonów $strGlowny = ""; while (!feof($tplGlowny)) { $strGlowny .= fgets($tplGlowny); } $strMenu = ""; while (!feof($tplMenu)) { $strMenu .= fgets($tplMenu); } $strZdjecia = ""; while (!feof($tplZdjecia)) { $strZdjecia .= fgets($tplZdjecia); } fclose($tplGlowny); fclose($tplMenu); fclose($tplZdjecia); // Umieszczenie menu w szablonie głównym $strGlowny = str_replace('%menu%', $strMenu, $strGlowny); // Dodanie tytułu strony $strGlowny = str_replace('%tytul_strony%', $tytul, $strGlowny); // Wstawienie treści strony $strGlowny = str_replace('%tresc%', $strZdjecia, $strGlowny); // Wyświetlenie gotowej strony print($strGlowny); ?>


(Bartekviper) #3

Rzeczywiście ten sposób jest dużo ciekawszy. Dzięki bardzo.