Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System szablonów i parsowanie kodu php, Prawie działa, ale nie do końca
Simson
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.05.2010

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


Witam serdecznie wszystkich użytkowników! Jest to mój pierwszy post, więc mam nadzieję, że wybrałem dobry dział. Mój problem polega na tym, iż korzystam z "innego" systemu szablonów - mam na myśli, że nie są to smarty, czy OPT, tylko mniej skomplikowany, a za razem zaawansowany system. I próbuję uruchomić na nim kod php, który includuje system newsów na stronie głównej. Obecnie wygląda to tak: http://irex-gliwice.pl/ Jak widać kod działa poprawnie, ale nie wyświetla się na przewidzianym dla niego miejscu oraz tle. Dosyć długo już próbuję rozwiązać ten problem, niestety bezskutecznie, dlatego też zwracam się do was z prośbą o pomoc. Załączam też plik z mojej www.

1) Klasa do obsługi szablonów
  1. <?
  2. class CTemplate
  3. {
  4. var $content;
  5. var $keywords;
  6. var $url;
  7.  
  8. function CTemplate($url='')
  9. {
  10. $this->url = $url;
  11. $this->keywords = array();
  12. if ($url)
  13. $this->code=file_get_contents($url);
  14.  
  15. }
  16.  
  17. function Load($url)
  18. {
  19. $this->code=file_get_contents($url);
  20. }
  21.  
  22. function Clear()
  23. {
  24. unset($this->keywords);
  25. $this->keywords = array();
  26. }
  27.  
  28. function Add($keyword, $text)
  29. {
  30. $this->keywords[$keyword] = $text;
  31. }
  32.  
  33. function Get()
  34. {
  35. reset($this->keywords);
  36. while (list ($key, $val) = each ($this->keywords))
  37. $this->code = str_replace($key, $val, $this->code);
  38. return $this->code;
  39. }
  40. }
  41. ?>


2)Plik index.php, dodałem w nim funkcję eval
  1. <?
  2. include('library/ctemplate.php');
  3.  
  4. $strona = new CTemplate('template/CSite.html');
  5.  
  6. switch($HTTP_GET_VARS['site'])
  7. {
  8. default:
  9. case 'start':
  10. $strona->Add('{SRODEK}', eval('?>' . file_get_contents('template/CSiteStronaGlowna.html'). '<?'));
  11. break;
  12. case 'galeria':
  13. $strona->Add('{SRODEK}', file_get_contents('template/CSiteGaleria.html'));
  14. break;
  15. case 'o_nas':
  16. $strona->Add('{SRODEK}', file_get_contents('template/CSiteONas.html'));
  17. break;
  18. case 'kontakt':
  19. $strona->Add('{SRODEK}', file_get_contents('template/CSiteKontakt.html'));
  20. break;
  21. }
  22. $strona->Add('{MENU}', file_get_contents('template/CSiteMenu.html'));
  23. $strona->Add('{INFO}', file_get_contents('template/CSiteInfo.html'));
  24.  
  25. echo $strona->Get();
  26. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


Twoja klasa się nie nadaje do tego co chcesz zrobić, więc musisz ją przerobić, nie wiem co masz w tych wszystkich plikach które masz opisane w kodzie ale wg. mnie to mogło by wyglądać mniej więcej tak:

plik index.php
  1. <?php
  2.  
  3. class easyTemplate
  4. {
  5.  
  6. function setAktualnaStrona ($aktualnaStrona)
  7. {
  8.  
  9. $this->aktualnaStrona = $aktualnaStrona;
  10. }
  11.  
  12. function setDozwoloneStrony ($dozwoloneStronArr)
  13. {
  14.  
  15. $this->dozwoloneStrony = $dozwoloneStronArr;
  16. }
  17.  
  18. function add ($name, $value)
  19. {
  20.  
  21. $this->zmienne[$name] = $value;
  22. }
  23.  
  24. function make ()
  25. {
  26.  
  27. if (in_array($this->aktualnaStrona, $this->dozwoloneStrony))
  28. {
  29. if (count($this->zmienne)>0)
  30. {
  31. foreach ($this->zmienne as $klucz => $wartosc)
  32. {
  33. $$klucz = $wartosc;
  34. }
  35. }
  36. include "strony/$this->aktualnaStrona.php";
  37. }
  38. }
  39. }
  40.  
  41. $easyTemplate = new easyTemplate();
  42.  
  43. $easyTemplate->setDozwoloneStrony(array('index' , 'galeria' , 'kontakt'));
  44. $easyTemplate->setAktualnaStrona($_GET['strona']);
  45. $easyTemplate->add('test', 'bbbbbbb');
  46. $easyTemplate->make();
  47.  
  48. ?>



plik strony/index.php
  1. sdasdasd
  2.  
  3. <?= $test ?>


To taki przykład, do bardziej zaawansowanych rzeczy polecam się z zapoznaniem z jakimś frameworkiem np. Kohana (proty do nauki, najlepiej w wersji 2.3.4 bo wersja 3 ma jeszcze kiepską dokumentacje)
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 - 05:58