Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: prosty system szablonów
Forum PHP.pl > Forum > PHP
zomb
Witam,
Postanowiłem sobie zrobić odpowiadający moim potrzebom prosty system szablonów, wygląda on tak:

  1. $temp = file_get_contents('styles/'.$style.'/index.php');
  2.  
  3. foreach($lang as $t => $content){
  4. $temp=str_replace("{".$t."}", $content, $temp);
  5. }
  6.  
  7. $temp=preg_replace('({(.*?)})', "", $temp);
  8.  
  9. echo $temp;


to jest zawartość pliku głównego - index.php.
Mój problem jest taki:
gdy umieszczę w pliku "styles/'.$style.'/index.php" jakikolwiek kod php parser nie czyta go w ogóle, w źródle strony pokazuje się on tylko podświetlony na różowo....
proszę o pomoc.
kokers
ponieważ nie inlcludujesz pliku tylko wyświetlasz jego zawartość. echo nie spowoduje ci że kod php się wykona.

poczytaj poszukaj poszperaj jak ten problem rozwiązują inne systemu szablonów jak np smarty
zomb
no właśnie przed stworzeniem tego tematu grzebałem w smarty i z tego co widzę tam też jest zwykłe echo
  1. echo $_output;
kokers
uhum, ale z jakiegoś powodu wymagają aby ten kod php nie rozpoczynał się od <?php tylko od {php}

http://www.smarty.net/docsv2/en/language.function.php.tpl

już pomijam fakt, że parser smartów jest o wiele bardziej skomplikowany od file_get_contents i str_replace ;o)
jeśli tak bardzo chcesz na nowo wymyślać system szablonów, zamiast skorzystać z darmowego, gotowego i zapewne bezpieczniejszego, to musisz się przyjrzeć między innymi funkcji eval i poguglać.


zomb
no tak, nic nie wiedziałem do tej pory o {php}
ale kurde nie moge nic znaleźć na ten temat w plikach smartów ani w google, możesz mnie jakoś na to bardziej naprowadzić ?

to moge liczyć na wskazówki jak zrobić aby "po echu" parsowało mi kod php ?
lub ewentualnie jak to inaczej zrobić nie używając echo ?
Fifi209
przecież napisał Ci o eval - bądź ostrożny.
kokers
napisała ohmy.gifP

i powtórzę to co fifi napisał: bądź ostrożny. Jeśli nie musisz, nie używaj jej.
kiler129
...do tego eval() obniża mocno wydajność kodu. Zaimplementuj podstawowy echo_if oraz include_if w szablonach a nie wklejej tam kod php - nie od tego one są.
Szablon to widok a nie kontroler - tam nie kodujemy (no chyba, że js czy drobne warunki dotyczące np. koloru komunikatu czy stylu listy).
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.