Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tytuł strony inny na każdej stronie.
GoldeNx3
post
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

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


Witam! Mam tak napisaną stronę:

  1. <html>
  2. <head>
  3. <title>Tytuł</title>
  4.  
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  6. <meta name="description" content="desc" />
  7. <meta name="keywords" content="key" />
  8.  
  9. <link rel="stylesheet" href="style.css" type="text/css" />
  10. </head>
  11.  
  12. <body>
  13.  
  14. <?php
  15. define('DIR', 'pages/');
  16.  
  17. switch($_GET['mdl'])
  18. {
  19. case $_GET['mdl']:
  20. if(file_exists(DIR . $_GET['mdl'] . '.php')){
  21. include(DIR . $_GET['mdl'] . '.php');
  22. }
  23. break;
  24. }
  25. ?>
  26.  
  27. </body>
  28. </html>


Oczywiście usunąłem co nie potrzebne.
Ale tutaj mam tytuł strony tylko jeden. ("Tytuł")
A co, jak w zależności od strony chciałbym dać inny tytuł strony? To jak?

Ten post edytował GoldeNx3 13.04.2012, 14:48:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Chyba nie ma innego sposobu (w programowaniu strukturalnym oczywiście), jak wykorzystanie możliwości buforowania wyjścia w taki oto sposób:
  1. <?php
  2. function update_html($html, $page_title) {
  3. return str_replace('<!-- #PAGE_TITLE# -->', $page_title, $html);
  4. }
  5. ?>
  6. <html>
  7. <head>
  8. <title><!-- #PAGE_TITLE# --></title>
  9. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  10. <meta name="description" content="desc" />
  11. <meta name="keywords" content="key" />
  12. <link rel="stylesheet" href="style.css" type="text/css" />
  13. </head>
  14. <body>
  15. <?php
  16. define('DIR', 'pages/');
  17. $page = isset($_GET['mdl'] && $_GET['mdl'] != '') ? $_GET['mdl'] : 'index';
  18. if(file_exists(DIR . $page . '.php')){
  19. include(DIR . $page . '.php');
  20. // wewnątrz pliku pages/$page.php deklarujemy zmienną $page_title, której wartością jest tytuł strony pobrany z bazy danych
  21. }
  22. ?>
  23. </body>
  24. </html>
  25. <?php
  26. $html = ob_get_contents();
  27. echo update_html($html, $page_title); // zmienna $page_title została zadeklarowana w include-owanym pliku, ale w tym miejscu jest widoczna
  28. ?>

W HTML tworzymy sobie takie pseudo zmienne (tutaj <!-- #PAGE_TITLE# -->), które przed samym wyświetleniem właściwego dokumentu HTML zastępujemy zmiennymi PHP. Pokazałem to na przykładzie tytułu, ale wcale nie musimy się do tego ograniczać. Tak mniej więcej działają systemy szablonów z tą różnicą, że w systemach szablonów do szablonu przekazuje się tylko niezbędne dane i pomija się całkowicie logikę aplikacji.

Zastanowiłbym się jednak nad tym, czy to rozwiązanie jest konieczne i czy nie można całości zorganizować inaczej, tzn. tak, aby wszystkie zmienne potrzebne w include-owanym pliku przygotować wcześniej (w sumie to tak działają kontroler-widok w MVC, chociaż mogą mieć o wiele większe możliwości).

Ten post edytował mortus 13.04.2012, 16:44:10
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 19:07