Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Struktura strony
Forum PHP.pl > Forum > Przedszkole
adam882
Witam

Myślę nad taką strukturą strony, gdzie będzie można sprawnie podpiąć dynamiczny <title> pochodzący z zawartości.

Jeżeli includowałbym w swoim cms-ie w taki sposób stronę, jak to nieraz zalecają:
header.php
content.php
footer.php

to nie mogę przenieść wygenerowanego w sekcji "content" <title> do "header.php", tylko muszę stworzyć dwa zapytania (czego nie chcę). Chcę jedynie przekazywać parametr <title> do sekcji "header", a nie generować go tam przy pomocy zapytania.
Swego czasu wymyśliłem takie rozwiązanie (może trochę dziwne, ale skuteczne):

przykładowo:

/index.php
  1. $title=''; //tutaj przechowuje <titie>
  2. $content=''; //tutaj przechowuje treść
  3. switch($_GET['page'])
  4. {
  5. //tutaj includuje pliki z folderu "module"
  6. case "wpis":
  7. include('module/wpis.php');
  8. break;
  9.  
  10. ...
  11. }
  12. include('theme/index.php'); //pobiera plik templatki


/module/wpis.php
  1. <?php
  2. $q=mysql_query('SELECT nazwa, opis FROM wpis WHERE id='.(int)$_GET['id'].' LIMIT 1');
  3.  
  4. $title=$r['nazwa']; //przechwytuje title
  5.  
  6. $content.='<div><b>'.$r['nazwa'].'</b><br />'.$r['opis'].'</div>';
  7. ?>


/theme/index.php
  1. <html>
  2. <head>
  3. <title><?=$title?></title>
  4. </head>
  5. <body>
  6. <div id="main">
  7. <div id="naglowek"></div>
  8. <div id="nawigacja">Link1 Link2</div>
  9. <div>
  10. <div id="lewy_blok">
  11. - link1
  12. - link2
  13. </div>
  14. <div id="content">
  15. <?php echo $content; unset($content); ?>
  16. </div>
  17. </div>
  18. <div id="footer">Copyright (c) 2011</div>
  19. </div>
  20. </body>
  21. </html>


Czy takie rozwiązanie ujdzie? Czy też da się to wykombinować lepiej?
croc
Najlepiej generować całą zawartość strony na początku, a dopiero później dodawać header i footer. Ja preferuję jednak szablon w jednym pliku, do którego "dopinane" są podstrony. Wtedy odnosisz się do nich jako np. index.php?module=contact. Brzydko, ale łatwo tu zastosować globalną regułę mod rewrite.
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.