Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szablon w php
Strarus
post 17.01.2009, 20:13:01
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


cześć:)
Zrobiłem na próbę mały szablon w php. Czy jest możliwość aby na każdej stronie umieszczać automatycznie ten szablon i tylko wypełniać jakąś jego część? Jeśli tak to w jaki sposób. Wydaje mi się, że się da, ponieważ coś takiego jest chyba w php-fusion smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
phpion
post 17.01.2009, 20:22:57
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




"Kontroler":
  1. <?php
  2. $title = 'Witaj!';
  3. ?>

Widok (szablon):
  1. <h1><?= $title ?></h1>


Ten post edytował phpion 17.01.2009, 20:23:13
Go to the top of the page
+Quote Post
Strarus
post 17.01.2009, 20:35:59
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Nie rozumiemjak to ma działać? Czyli jak mam taki szablon: (wyciąłem połączenia z bazą)
  1. <?php
  2. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">';
  3. print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">';
  4. print '<head>';
  5. print '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />';
  6. print '<meta name="robots" content="' . $robots . '" />';
  7. print '<meta name="description" content="' . $description . '" />';
  8. print '<meta name="keywords" content="' . $keywords . '" />';
  9. print '<link rel="shortcut icon" href="favicon.ico" />';
  10. print '<link rel="stylesheet" type="text/css" href="style.css" />';
  11. print '<title>Untitled</title>';
  12. print '</head>';
  13. print '<body>';
  14. echo $strona;
  15. print '</body>';
  16. print '</html>';
  17.  
  18. ?>

To np. index.php wygląda tak?:
  1. <?php
  2. $strona = 'cześć. dzisiaj jest ten i ten...';
  3. ?>


Bo ja troszkę nie zrozumiałem sad.gif
Go to the top of the page
+Quote Post
phpion
post 17.01.2009, 21:02:20
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tak. Na końcu index.php includujesz plik szablonu i powinno grać.
Go to the top of the page
+Quote Post
Strarus
post 17.01.2009, 21:14:36
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Dzięki. Teraz tylko nie wiem dlaczego gdy umieszczam przed zmienną $content (czy tam strona haha.gif) kod php to strona wygląda jak bez szablonu...

Teraz się wyświetla wszystko ale ten kod php się nie wykonuje, ponieważ widzę puste inputy biggrin.gif

Ten post edytował Strarus 17.01.2009, 21:20:14
Go to the top of the page
+Quote Post
phpion
post 17.01.2009, 22:08:48
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Strarus @ 17.01.2009, 23:14:36 ) *
Teraz tylko nie wiem dlaczego gdy umieszczam przed zmienną $content (czy tam strona haha.gif) kod php to strona wygląda jak bez szablonu...

Może dlatego, że (jak rozumiem) szablon definiujesz zanim powołasz do życia zmienną?

template/layout.php:
  1. <?php
  2. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">';
  3. print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">';
  4. print '<head>';
  5. print '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />';
  6. print '<meta name="robots" content="' . $robots . '" />';
  7. print '<meta name="description" content="' . $description . '" />';
  8. print '<meta name="keywords" content="' . $keywords . '" />';
  9. print '<link rel="shortcut icon" href="favicon.ico" />';
  10. print '<link rel="stylesheet" type="text/css" href="style.css" />';
  11. print '<title>Untitled</title>';
  12. print '</head>';
  13. print '<body>';
  14. echo $strona;
  15. print '</body>';
  16. print '</html>';
  17. ?>


index.php:
  1. <?php
  2. $robots = 'roboty';
  3. $description = 'opis';
  4. $keywords = 'slowa kluczowe';
  5. $strona = '<p>Moja <strong>wyczesana</strong> strona!';
  6.  
  7. include 'template/layout.php';
  8. ?>

Powinno działać. Odpalasz oczywiście index.php, a nie template/layout.php.
Go to the top of the page
+Quote Post
Strarus
post 17.01.2009, 23:38:47
Post #7





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Hmmm... Ten problem rozwiązałem (nawiasem mówiąc te dane są pobierane z bazy haha.gif) ale pojawił się kolejny. Jak mogę umieścić w zmiennej kod php np. kod rejestracji? Czy ewentualnie można to inaczej rozegrać?
Go to the top of the page
+Quote Post
Crozin
post 18.01.2009, 00:30:05
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


W kodzie szablonu nie stosuj cały czas print, print, print. Po co? Daj to jako zwykły kod HTML, a tam gdzie chcesz wyświetlić zmienną PHP dajesz
  1. <?php echo $zmienna; ?>


Do szablonu nie możesz przekazać kodu PHP rejestracji. Tworzysz sobie osobny szablon, gdzie będzie formularz rejestracji. Tworzysz nowy plik na kształt index.php. W nim odbierasz dane (z formularza) wykonujesz całą logikę (sprawdzasz czy dane są poprawne, czy nazwa użytkownika jest wolna, próbujesz rejestrować itd.). Do szablonu przekazujesz jedynie wynik operacji, czyli informację "zostałeś zarejestrowany"/"nie zostałeś: LISTA_BŁĘDÓw"
Go to the top of the page
+Quote Post
decha-design
post 18.01.2009, 10:21:59
Post #9





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

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


Cytat(Crozin @ 18.01.2009, 00:30:05 ) *
W kodzie szablonu nie stosuj cały czas print, print, print. Po co? Daj to jako zwykły kod HTML, a tam gdzie chcesz wyświetlić zmienną PHP dajesz
  1. <?php echo $zmienna; ?>


Moim zdaniem nie jest to efektywne ... Jak ma milion zmiennych to póżniej idzie człowieka szlag trafić w znalezieniu czegoś ... a na pewno mnie ...

Ja preferują metodę ...
  1. <?php
  2. <meta name="robots" content="' . $robots . '" />
  3. <meta name="description" content="' . $description . '" />
  4. <meta name="keywords" content="' . $keywords . '" />';
  5. ?>


Ja bym rozwiazanie @phpion zrobił jeszcze inaczej ...
templates/header.tpl
  1. <?php
  2. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">';
  3. print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">';
  4. print '<head>';
  5. print '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />';
  6. print '<meta name="robots" content="' . $robots . '" />';
  7. print '<meta name="description" content="' . $description . '" />';
  8. print '<meta name="keywords" content="' . $keywords . '" />';
  9. print '<link rel="shortcut icon" href="favicon.ico" />';
  10. print '<link rel="stylesheet" type="text/css" href="style.css" />';
  11. print '<title>Untitled</title>';
  12. print '</head>';
  13. print '<body>';
  14. ?>


templates/footer.tpl
  1. <?php
  2. print '</body>';
  3. print '</html>';
  4. ?>


index.php
  1. <?php
  2. $robots = 'roboty';
  3. $description = 'opis';
  4. $keywords = 'slowa kluczowe';
  5. include 'templates/header.tpl';
  6. include 'templates/index.tpl'; // lub include 'modules/index.php';
  7. include 'templates/footer.tpl';
  8. ?>


--------------------
Go to the top of the page
+Quote Post
Crozin
post 18.01.2009, 11:16:09
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@decha-design:
Zdajesz sobie sprawę z tego, że ciężko będzie znaleźć edytor, który będzie kolorował składnię HTMLa przy takim zapisie. Że trzeba się bawić w escapeowanie znaków. Że <?=$zmienna?> zastąpujesz '.$zmienna.' (1 znak różnicy od biedy). Że rezygnujesz z wcięć w tekście?
Go to the top of the page
+Quote Post
phpion
post 18.01.2009, 11:30:50
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(decha-design @ 18.01.2009, 12:21:59 ) *
Moim zdaniem nie jest to efektywne ... Jak ma milion zmiennych to póżniej idzie człowieka szlag trafić w znalezieniu czegoś ... a na pewno mnie ...

No to tylko Twoim. Wysyłanie statycznych ciągów przez PHP jest kompletną głupotą. Zdecydowanie lepiej (i dla mnie wygodniej) jest robić w ten sposób:
  1. <znacznik><?= $zmienna ?></znacznik>
Go to the top of the page
+Quote Post
bartg
post 18.01.2009, 11:54:17
Post #12





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

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


Nie kłóćcie się Panowie smile.gif

Starus:
Zastosuj się do pomysłu decha-design. Daj sobie góre szablonu (to includujesz na początku), potem wyswietlaj kod rejestracji, a potem includuj sobie dół szablonu.


--------------------
Go to the top of the page
+Quote Post
Strarus
post 18.01.2009, 12:24:17
Post #13





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Dzięki bardzo wszystkim za pomoc. Przeglądając źródła php-fusion zauważyłem podobne rozwiązanie i postanowiłem takie zastosować ale przed tym zapytać o Wasze zdanie na forum, a tu - spora dawka informacji smile.gif Zastosuję się do pomysłu decha-design smile.gif dzięki

Ten post edytował Strarus 18.01.2009, 12:24:50
Go to the top of the page
+Quote Post
Sillan
post 23.04.2009, 14:36:03
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.11.2008

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


Chciałem nawiązać do przykładu, który podał decha-design, wynika z niego, że dla każdej podstrony trzeba robić oddzielny index.php (żeby nadać odpowiednie meta). Czy dla stron mających powiedzmy 30 podstron takie rozwiązanie się nadaje czy są może jakieś inne sposoby?
Go to the top of the page
+Quote Post
Crozin
post 23.04.2009, 15:13:51
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Yyyy... w jednym pliku index.php w zależności od wybranej podstrony definujesz jeszcze zmienne zawierające dane meta?
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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:44