Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Niedziałający system szablonów
Forum PHP.pl > Forum > Gotowe rozwiązania
Fipaj
Zrobiłem sobie system szablonów, prosty aż do bólu winksmiley.jpg, żeby go potem można rozwijać, udoskonalać itp.

Oto klasa:

  1. <?php
  2. /*
  3. szablon.klasa.php
  4. autor: fipaj
  5. wersja: 1.0
  6. */
  7. class szablon {
  8.     var $lokalizacja;
  9.  
  10.     function zaladuj_szablon () {
  11.         $szablon = file_get_contents ($this->lokalizacja, 'r');
  12.     }
  13.  
  14.     function dodaj_tag ($tag, $zamiennik) {
  15.         $szablon = str_replace ('{' . $tag . '}', $zamiennik, $szablon);
  16.     }
  17.  
  18.     function wyswietl_szablon () {
  19.         print ($szablon);
  20.         fclose ($szablon);
  21.     }
  22. }
  23. ?>


A oto jak ją wykorzystałem:

  1. <?php
  2. include ('szablon.klasa.php');
  3. $strona = new szablon ();
  4. $strona->lokalizacja_szablonu = &#092;"index.php\";
  5. $strona->zaladuj_szablon ();
  6. $strona->dodaj_tag ('tytul', 'To jest tytul!');
  7. $strona->wyswietl_szablon ();
  8. ?>


No i tak ją sobie przetestowałem na Lycosie. I oczywiście nie działa - wyświetla pustą stronę. Same reklamy sad.gif

Czy wina leży po stronie Lycosa czy po stronie skryptu??
nospor
Aż za prosta. A gdzie zmienna $szablon w klasie? he? powinna być zadeklarowana:
  1. <?php
  2.  
  3. class ...
  4. {
  5. var $szablon;
  6.  
  7. ?>

Odwoluj się do niej poprzez $this->szablon
Fipaj
Ups... Jasne, masz rację. Ale ze mnie ... winksmiley.jpg

Ale nadal nie działa
Nievinny
A gdzie deklaracja zmiennej szablon, powinno być tak:
  1. <?php
  2.  
  3. class szablon {
  4. var $lokalizacja_szablonu;
  5. var $szablon;
  6.  
  7. function zaladuj_szablon () {
  8. $this->szablon = file_get_contents ($this->lokalizacja, 'r');
  9. }
  10.  
  11. function dodaj_tag ($tag, $zamiennik) {
  12. $this->szablon = str_replace ('{' . $tag . '}', $zamiennik, $this->szablon);
  13. }
  14.  
  15. function wyswietl_szablon () {
  16. return ($this->szablon);
  17. }
  18. }
  19.  
  20. ?>

Użycie:
  1. <?php
  2. include_once('szablon.klasa.php');
  3. $strona = new szablon ();
  4. $strona->lokalizacja_szablonu = &#092;"index.php\";
  5. $strona->zaladuj_szablon ();
  6. $strona->dodaj_tag ('tytul', 'To jest tytul!');
  7. print $strona->wyswietl_szablon ();
  8. ?>


@nospor - ech, sekundy...
Fipaj
Czekajcie, bo tam jest w tym kodzie jeszcze jeden błąd. Oto najnowszy kod:

  1. <?php
  2. /*
  3. szablony.klasa.php
  4. autor: fipaj
  5. wersja: 1.0
  6. */
  7. class szablon {
  8.     var $lokalizacja;
  9.     var $szablon;
  10.  
  11.     function zaladuj_szablon () {
  12.         $this->szablon = file_get_contents ($this->lokalizacja);
  13.     }
  14.  
  15.     function dodaj_tag ($tag, $zamiennik) {
  16.         $this->szablon = str_replace ('{' . $tag . '}', $zamiennik, $this->szablon);
  17.     }
  18.  
  19.     function wyswietl_szablon () {
  20.         return $this->szablon;
  21.     }
  22. }
  23. ?>


  1. <?php
  2. include ('szablon.klasa.php');
  3. $strona = new szablon ();
  4. $strona->lokalizacja = &#092;"index.php\";
  5. $strona->zaladuj_szablon ();
  6. $strona->dodaj_tag ('tytul', 'To jest tytul!');
  7. print $strona->wyswietl_szablon ();
  8. ?>


Skrypt oczywiście nadal nie działa...
nospor
Może pliku ci nie zaczytal. Sprawdz funkcją file_exist czy on ten plik wogole widzi
Fipaj
Zaczytał... sad.gif

Plik cały czas nie działa, powinien jakiś błąd wyskoczyć, parse error czy coś, a tu nic sad.gif
nospor
po print daj echo "ckolwiek" i zobacz czy się to wyswietli. Jak tak to napewno nie ma bledu skladniowego jakiegos, jak nie, znaczy ze jednak jest blad

edit: metoda file_get_contents nie ma takiego drugiego argumentu 'r'. poczytaj se o niej
bela
daj error_reporting(E_ALL);
Fipaj
Co do tego "drugiego" atrybutu file_get_contents to oczywiście pomyłka, ale wynikająca nie z niewiedzy, lecz roztrzepania: początkowo było tam fopen(), ale zmieniłem...

Kiedy dałem error_reporting i jeszcze napisałem na końcu print 'cokolwiek' efekty widzicie na tej stronie:

http://www.members.lycos.co.uk/fipaj/scrip...zablon.test.php
angel2953
a CHMOD'y sprawdziłeś... Mi to wygląda jakby skrypt nie miał dostępu do tego pliku...
Fipaj
CHMODY na pewno są OK. Jestem już prawie pewny, że wina leży po stronie Lycosa, ale na tym systemie będzie bazować cała moja strona i zanim kupię serwer z prawdziwego zdarzenia muszę mieć działający system szablonów. Błędne koło...
angel2953
@Fipaj: a nie możesz sobie postawić serwerka na localhoście?? Tam się najlepiej testuje :] Pod Windows'a polecam XAMPP...
Fipaj
Noszę się z postawieniem Locala od dawna... MySQL już zainstalowałem, ale php i Apache... ehhhh

Tymczasem musi mi ten skrypcik zadziałać :grrr:
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.