Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Styl do CMS - jak to zautomatyzować?
Majkelo23
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
xxdrago
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


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.

Ten post edytował xxdrago 12.05.2012, 09:28:54


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
Lwik
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Evinek
post
Post #4





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

Ostrzeżenie: (0%)
-----


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ł.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:37