Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Smarty]szkielet strony, jak includować pliki itp.
robos85
post
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
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A jak jest z moim przykładem? Poprawnie?
Pytasz oco? O szablon? No ten na poczatku to byl zly ale nie wiem jak masz teraz bo Shili pare poprawek ci zarzuciła.

Cytat
Bo nie wiem gdzie się takie coś ustawia
To na serwerze by nie kompilowal?
  1. <?php
  2. $smarty->force_compile = ...
  3. $smarty->compile_check = ...
  4. ?>

Doczytaj sobie co tam wstawic by dzialo sie co chcesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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: 11.10.2025 - 16:22