Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Styl do CMS - jak to zautomatyzować?
Forum PHP.pl > Forum > Przedszkole
Majkelo23
Piszę własnego CMSa. Mam swój layout do niego i tutaj właśnie pytanie: Jak powinienem go podpiąć pod CMS? Czy podzielenie laya na dwie części (góra i dół) to dobre rozwiązanie? Czyli:

  1. require_once('page_header.php');
  2. echo "Jakis tam komunikat";
  3. require_once('page_footer.php');


Chciałbym, aby można było zmieniać styl przez panel i stąd moje pytanie - czy dobrze kombinuję, a jeśli nie - co proponujecie?
xxdrago
Wszystko było by ok, też podobnie robię i fajnie to chodzi tylko musisz wsiąść pod uwagę, jeżeli będziesz chciał pobrać dane z bazy danych np. Title do page_header smile.gif
Ja zrobiłem tak że najpierw, jest skrypt a potem ładnie wyświetlam go.
Lwik
Ja u siebie layout trzymam w .tpl wysyłając odpowiednie dane z PHPu. Zastanów się też nad takim rozwiązaniem - definiowanie tytułów już w plikach head_ bądź w poszczególnych modułach będzie średnio wygodne - ponadto, styl w formie templatki właśnie wydaje mi się, że będzie łatwiejszy do edycji przez np. kodera.
Evinek
Ja mam klasę do tego.
Na początku includuje klase, tworze ją i ładuje plik.

$template->load('file.php');
Później do ustalenia tytułu będę używał:
$template->title('Tytuł); // dopiero to zrobię

Później wysyłam zmienne to pliku robiąc to tak: (__GET oraz __SET w klasie)
$template->opis = $opis; // itp.

i na końcu pliku $template->display(); // parsuje cały plik i wyświetla.

Można łatwo to podłączyć pod baze mysql i zmieniać te szablony. Np. zrobić w klasie funkcje $template->folder('szablon1/');
Plik index.php posiada główny szkielet strony (head, body itp.), a podłączane pliki już inne rzeczy.
Oczywiście można to jeszcze ulepszyć, ale to już twoje będzie zadanie jak będziesz tego używał.
Podam mój kod (był on na szybko pisany do projektu, będzie on ciągle rozwijany):

  1. <?php
  2. class template{
  3. private $variable = array();
  4. private $file = '';
  5. function __construct(){
  6. $this->load = false;
  7. }
  8.  
  9. function load($file){
  10. if(file_exists(HTML.''.$file)){
  11. $this->file = HTML.''.$file;
  12. return $this->load = true;
  13. }
  14. else{
  15. return false;
  16. }
  17. }
  18.  
  19. function display(){
  20. foreach($this->variable as $key => $value){
  21. $$key = $value;
  22. }
  23. include(HTML.'index.php');
  24. echo "\n<!--".round(memory_get_peak_usage()/1024)."kb -->";
  25. }
  26.  
  27. function loadfile(){
  28. if($this->load){
  29. return $this->file;
  30. }
  31. else{
  32. return 'error_nofile.php';
  33. }
  34. }
  35.  
  36. function __set($key, $value){
  37. $this->variable[$key] = $value;
  38. }
  39.  
  40. function __get($key){
  41. return $this->variable[$key];
  42. }
  43. }
  44. ?>


Szablon:
plik index.php
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title><?= $pagetitle ?></title>
  6. </head>
  7. <body>
  8. <div id="main">
  9. <div id="header">
  10. [...]
  11. </div>
  12. <?php include($this->loadfile()); ?>
  13. <div id="footer">
  14. [...]
  15. </div>
  16.  
  17. </div>
  18.  
  19. </body>
  20. </html>


I np. plik news.php
  1. <div id="menu">
  2. [tu menu...]
  3. </div>
  4. <div id="articles">
  5.  
  6. <?= $news ?>
  7.  
  8. </div>


Mam nadzieje, że pomogłem. Jak będziesz chciał jeszcze pomocy przy tej klasie to pisz na PW. smile.gif
Pozdrawiam, Paweł.
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.