Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Własny system szablonów - problem z wyświetlaniem kodu PHP
Forum PHP.pl > Forum > PHP > Object-oriented programming
Tajgeer
Witam,

Od jakiegoś czasu pracuje nad swoim własnym CMSem.

Plik core/objects/template.class.php
http://wklej.org/id/119515/

Plik index.php
  1. <?php
  2. require('core/config.php');
  3. echo Template::ParseTemplate('index_page');
  4. ?>


Plik core/config.php
  1. <?php
  2. // klasa konfiguracyjna
  3. class Config
  4. {
  5.    // database configuration
  6.    const DBHost                    = 'xxx';
  7.    const DBUser                    = 'xxx';
  8.    const DBPassword                = 'xxx';
  9.    const DBName                    = 'xxx';
  10.    const DBCharset                    = 'xxx';
  11.  
  12.    // database tables
  13.    const DownloadTable                = 'xxx';
  14.    const NewsTable                    = 'xxx';
  15.    
  16.    // file paths
  17.    const MainPath                    = 'xxx';
  18.    const ObjectsPath                = 'core/objects/';
  19.    const SQLLogsPath                = 'logs/sql';
  20.    const InternalLogsPath            = 'logs/internal';
  21.    
  22.    // site configuration
  23.    const Template                    = '1';
  24.    const Keywords                    = 'costam niewaznego';
  25.    const Description                = 'costam niewaznego';
  26.    const Copyright                    = 'costam niewaznego';
  27.    const Charset                    = 'UTF-8';
  28. }
  29. // koniec klasy
  30.  
  31. // potrzebne pliki
  32. require(''.Config::ObjectsPath.'db.class.php');
  33. require(''.Config::ObjectsPath.'news.class.php');
  34. require(''.Config::ObjectsPath.'download.class.php');
  35. require(''.Config::ObjectsPath.'log.class.php');
  36. require(''.Config::ObjectsPath.'template.class.php');
  37.  
  38. // inicjowanie klas
  39. $db = new DB;
  40. ?>


Problem polega na tym, że jak np. dodam do jakiegokolwiek z plików (right_menu.php, left_menu.php czy index_page.php) kod PHP - na stronie nie jest on wyświetlany. Jak zmodyfikować moją klasę, aby móc również wyświetlać kod PHP, a nie tylko statyczny HTML?
drake88
Pokaż zawartość right_menu.php
Tajgeer
Najprostsza zawartość, która nie działa:
  1. <?php
  2. echo 'Hello World';
  3. ?>


Wydaje mi się, że problem tkwi w pobieraniu zawartości pliku (metodą file_get_contents()) i dlatego kod PHP nie chce działać, ale nie mam pomysłu, czym to zastąpić.
drake88
Spróbuj zamienić. Można to zastąpić include i require.
Tajgeer
Zamieniłem file_get_contents na include i teoretycznie działa, ale nie tak jak trzeba. Teraz dane, zamiast wyświetlać się w tabeli, wyświetlają się przed kodem HTML.
http://wklej.org/id/119521/ (źródło strony)

Natomiast jeśli powrócić to file_get_contents - wygląda on tak:
http://wklej.org/id/119525/ (źródło strony)
drake88
Rozwiązanie: http://forum.php.pl/index.php?act=ST&f...t=0#entry185524
Tajgeer
Nie chce być niegrzeczny, ale co do systemu szablonów mają zapytania SQL? smile.gif
erix
  1. <?php
  2. require(''.Config...
  3. ?>

A czy stałoby się coś, gdybyś zapisał:
  1. <?php
  2. require(Config...
  3. ?>

Stałoby się coś? Po chorobę utrudniać życie?

Cytat
Problem polega na tym, że jak np. dodam do jakiegokolwiek z plików (right_menu.php, left_menu.php czy index_page.php) kod PHP - na stronie nie jest on wyświetlany.

Nie dałeś żadnego kodu klasy Template. Sama konfiguracja nic nie da. tongue.gif

A możesz mieć po prostu błąd składni w którymś z dołączanych plikow.
Tajgeer
Nic by się nie stało smile.gif A jeśli chodzi o kod klasy Template - podałem: http://wklej.org/id/119515/ smile.gif

EDIT:

Już jest wszystko ok smile.gif
  1. <?php
  2. eval("?>" . $file . "<?");
  3. ?>


Dziękuje za sugestie co do tych require smile.gif.
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.