Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Smarty]szkielet strony, jak includować pliki itp.
robos85
post 6.09.2008, 12:20:37
Post #1





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


Witam. Troszkę już się zapoznałem ze Smarty. Mam jakiś tam prosty skrypcik oparty o Smarty właśnie. Mam inny problem.
Do tej pory pisałem bez uzycia smarty a szablon dzieliłem na 3 główne pliki. head.php, foot.php i plik z główną zawartością.
Chciałbym dalej tak robić, lecz opierać wszystko na smarty. Przypuśćmy że mam pliki nagłówka i stopki zrobione już w smarty, i jak je teraz poprawnie dodawać do pliku głównego typu wiadomości, ogłoszenia itp....
Mam nadzieję, że rozumiecie o co mi chodzi. nie chcę w każdym pliku zaczynać od deklaracji html.... tylko podczepiać już gotowe pliki, w których już są wykonywane różne rzeczy,np w zależności od tego czy jest się zalogowanym, słowa kluczowe robione dynamicznie.

Czy jeżeli dam dołączenie
Kod
{include file='header.tpl'}
do pliku głównego czyli najpierw include headera.tpl, później zawartość pliku głównego i na koniec include foot.tpl - to kod php odpowiedzialny za te 2 pliki czyli np head.php i foot.php zostanie wykonany?

Chciałbym się dowiedzieć, jak to zrobić najlepiej, żeby później nie robić tego źle.

Z góry dzięki za odp.

Dodam, że pliki główne są w katalogu /templates, a pliki nagłówka i stopki w katalogu: /templates/includes.
Pliki php są w kat. głównym, a pliki nagłówka i stopki w katalogu/includes

Czy taki zapis jest "dobry":
header.php
  1. <?php
  2.  
  3. require_once('smarty/Smarty.class.php');
  4. $smarty = new Smarty;
  5. $smarty->template_dir = "templates/";
  6. $smarty->compile_dir ='smarty/templates_c/';
  7. $smarty->config_dir  = 'smarty/configs/';
  8. $smarty->cache_dir = 'smarty/cache/';
  9.  
  10. $tytul='Tytuł strony';
  11. $smarty -> assign('tytul', $tytul);
  12. $smarty->display('includes/header.tpl');
  13. ?>

header.tpl
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <title>{$tytul}</title>
  3. </head>


index.php
  1. <?php
  2.  
  3. require_once('includes/header.php');
  4.  
  5.  
  6. $smarty->assign('tytul', $tytul);
  7. $smarty->assign('test1', $test1);
  8.  
  9. // klikanie
  10. if(isset($_GET['id'])){
  11. switch ($_GET['id']) {
  12. case 1:
  13. $opcja=1;
  14. break;
  15. case 2:
  16. $opcja=2;
  17. break;
  18. case 3:
  19. $opcja=3;
  20. break;
  21. }
  22. }
  23. else{
  24. $opcja="Brak wybranej opcji.";
  25. }
  26. $smarty->assign('cyfra', $opcja);
  27.  
  28. //tablice
  29. $samochody = array(
  30. 'Ford', 'Opel', 'Fiat', 'BMW', 'Mercedes', 'Renault', 'Citroen', 'Volkswagen'
  31. );
  32. $smarty -> assign('samochody', $samochody);
  33.  
  34. //php dla if'ów
  35. if(isset($_GET['id'])) {
  36. $wyb_opcja=$_GET['id'];
  37. }
  38. $smarty -> assign('wyb_opcja', $wyb_opcja);
  39. //display
  40.  
  41.  
  42. $smarty->display('index.tpl');
  43. require_once('includes/footer.php');
  44.  
  45. ?>

index.tpl
  1. {include file='includes/header.tpl'}
  2. <p>Pierwszy tekst pogrubiony:<strong>{$test1|capitalize}</strong></p>
  3. <p><a href="index.php?id=1">1</a> <a href="index.php?id=2">2</a> <a href="index.php?id=3">3</a></p>
  4. <p>Cyfra zależy od kliknięcia: {$cyfra}</p>
  5. <p>Spis samochodów - tablica prosta:</p>
  6. <ul>
  7. {section name=typ loop=$samochody start=1 step=2}
  8. <li>{$smarty.section.typ.iteration} - {$samochody[typ]}</li>
  9. {/section}
  10. </ul>
  11. <p>Wybrana opcja: {if $wyb_opcja==1}1{elseif $wyb_opcja==2}2{elseif $wyb_opcja==3}3{else}0{/if}</p>
  12. {include file='includes/footer.tpl'}




W takim układzie header i footer się 2x wykonuje:/

Ten post edytował robos85 6.09.2008, 12:20:30
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 15:57