Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z systemem szablonów
batat
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 8.03.2004
Skąd: Stalowa Wola

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


Witam,
Od 3 dni usiłuję sklecić, przerobić, ściągnąć jakikolwiek system szablonów, który pomógłby mi zrobić szkielet stronki. Testowałm już kilka klas, próbowałem też prostych, gotowych systemów. Jednak nic nie działa tak jak chce. Jedyne do czego doszedłem to podmiana jakiejść treści na drugą, ale jak tu oddzielić kod php od html o czym tak głośno wszyscy piszą, mówiąc o szablonach, to nie wiem ;/ dla przykładu mam taką klasę:

  1. <?php
  2. class template
  3. {
  4. private $root;
  5. private $uncompiled;
  6. private $compiled;
  7. private $vars;
  8.  
  9. public function __construct($root)
  10. {
  11. if(is_dir($root))
  12. {
  13. $this->root = $root;
  14. }
  15. }
  16.  
  17. public function load($file)
  18. {
  19. if(file_exists($this->root.$file.'.tpl'))
  20. {
  21. $this->uncompiled = file_get_contents($this->root.$file.'.tpl');
  22. }
  23. }
  24.  
  25. public function assign($key, $value)
  26. {
  27. $this->vars[$key] = $value;
  28. }
  29.  
  30. public function compile()
  31. {
  32. preg_match_all('#{([_a-zA-Z0-9]+)}#i', $this -> uncompiled, $found);
  33. $blockNames = $blockValues = array();
  34. foreach($found[1] as $var) {
  35. if(isset($this->vars[$var]))
  36. {
  37. $blockNames[] = '{'.$var.'}';
  38. $blockValues[] = &$this->vars[$var];
  39. }
  40. }
  41. echo str_replace($blockNames, $blockValues, $this -> uncompiled);
  42. }
  43. }
  44. ?>


której używam tak:

  1. <?php
  2. $szablon = new template('katalog/skinow/');
  3. $szablon -> load('szablon');
  4. $szablon -> assign('forum', 'tutaj to co sie pojawia za forum');
  5. $szablon -> compile();
  6. ?>


i jak na razie działanie tego całego kolosa ogranicza się do zamiany taga {forum} na tekst "tutaj to co sie pojawia na forum". Ale ja chce zamiast tego tekstu zainkludować plik .php odpowiedzialny za pobieranie tematów z forum. To tylko przykład. Chodzi mi o to, że przy zamianie tagów chce zrobić inkludy. Mi już ręce opadają smile.gif Mam nadzieję, że pomożecie smile.gif

p.s. chciałem jeszcze dodać, że raczej nie znam się na obiektówce snitch.gif jedynie jakieś proste poprawki umiem zrobić ;/

Ten post edytował batat 9.06.2007, 21:35:42
Go to the top of the page
+Quote Post
domis86
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


jezeli chces zincludowac plik php no to i tak nie oddzielasz kod php od html bo musi sie i tak wykonac ten zaincludowany.

W ogole ja nie widze sensu tego typu szablonow a la smarty - wolne i niepotrzebne.
najlepsze są zwykle szablony czyli HTML + echa phpowe

Ten post edytował domis86 9.06.2007, 23:35:07
Go to the top of the page
+Quote Post
batat
post
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 8.03.2004
Skąd: Stalowa Wola

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


niby tak, ale stronę już mam gotową i chce to tylko trochę przerobić. dodatkowo wykorzystuje 2 szablony e 2 wersjach kolorystycznych, więc trochę nie chce mi się bawić z echo ;-)
Go to the top of the page
+Quote Post
domis86
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


nie musisz pisac echo smile.gif

zamiast:
  1. <? echo $x; ?>

mozna dac:
  1. <?=$x;?>

aarambo.gif
Go to the top of the page
+Quote Post
eai
post
Post #5





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


  1. <?php
  2.  include 'tematy_z_forum.php';
  3.  $tematy_z_forum = ob_get_contents();
  4.  
  5.  
  6. $szablon = new template('katalog/skinow/');
  7. $szablon -> load('szablon');
  8. $szablon -> assign('forum', $tematy_z_forum);
  9. $szablon -> compile();
  10. ?>


Nie wiem czy o to Ci chodziło?
Go to the top of the page
+Quote Post
batat
post
Post #6





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 8.03.2004
Skąd: Stalowa Wola

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


właśnie o to chodziło ;-) Tylko teraz jeszcz jedno pytanie, czy da się jakoś to zrobić łądniej/krócej bo takich plików do includowania mam kilkanaście ;-) no i trochę uciążliwe i niezbyt ergonomiczne chyba byloby cały czas powtarzanie tego kodu ;]
Go to the top of the page
+Quote Post
eai
post
Post #7





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


  1. <?php
  2. function GetContentFromInclude($file)
  3. {
  4.  ob_start();
  5. include $file;
  6. $content = ob_get_contents();
  7.  
  8.  return $content;
  9. }
  10. ?>


  1. <?php
  2. $szablon = new template('katalog/skinow/');
  3. $szablon -> load('szablon');
  4. $szablon -> assign('forum', GetContentFromInclude('tematy_z_forum.php'));
  5. $szablon -> assign('newsy', GetContentFromInclude('news.php'));
  6. $szablon -> compile();
  7. ?>


Ten post edytował eai 10.06.2007, 13:06:11
Go to the top of the page
+Quote Post
batat
post
Post #8





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 8.03.2004
Skąd: Stalowa Wola

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


Że też o tym nie pomyślałem biggrin.gif Wszystko śmiga tak jak chciałem, wielkie dzięki!
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 Aktualny czas: 21.08.2025 - 20:34