ďťż

[php] klasa do obsługi szablonów takie tam małe... ;]

       

Podstrony


telcocafe

Witam :) Napisałem sobie ot tak małą klasę do obsługi szablonów. Oto ona:
class Template {  var $plik,      $show,      $skin = 'default';  // konstruktor ze sciezka do szablonu  function Template($plik) {    $this->plik = @file('templates/'.$this->skin.'/'.$plik.'.php');  }  // parsowanie  function show() {    for($i = 0; $i < count($this->plik); $i++) {      $this->plik[$i] = str_replace('{COS TAM}','lol lol lol',$this->plik[$i]);      echo $this->plik[$i];    }  } }
użycie:
$tpl = new Template('index'); $tpl->show(); // wyświetli zawartość pliku templates/default/index.php

Klasa oczywiście będzie rozbudowana bardziej, to taki kodzik podstawy.
I tutaj mam problem. Co zrobić, aby można było umieszczać w plikach szablonowych skrypty php? Tj. jak wpiszę w przykładkowym pliku spod adresu templates/default/index.php:
<?php echo '<b>HAHAHA</b>'; ?>
to wyświetli: <b>HAHAHA</b>, a nie <?php echo '<b>HAHAHA</b>'; ?>?

Chyba wiecie o co mi chodzi? Z góry thx za odpowiedzi ;)
Użytkownik Coldpeer edytował ten post 31 marzec 2006, 19:08


zapisuj w plikach html :P

Możesz w pętli wyszukać wszystkie ciągi "<?php ... ?>" itp. a następnie zamienić je na wynik funkcji eval :)

http://pl.php.net/ma...tmlentities.php
Użytkownik bikstopa edytował ten post 31 marzec 2006, 22:01



zapisuj w plikach html
i co to ma niby dać? :huh:


http://pl.php.net/ma...tmlentities.php


...
Hmm... Coś kombinuję, ale... nie wychodzi mi... ;] Może ktoś napisac jak to zrobić bo próbuję już różnymi sposobami?

Ale wy macie straszne problemy...
class Template {  var $plik,      $show,      $skin = 'default';  // konstruktor ze sciezka do szablonu  function Template($plik) {    $this->plik = @file_get_contents('templates/'.$this->skin.'/'.$plik.'.php' );  }  // parsowanie  function show() {      $this->plik = str_replace('{COS TAM}','lol lol lol',$this->plik);      eval('?>'.$this->plik.'<?');    }  } }
?

Dzięki, działa wszystko :)

//edit: mam jeszcze problem mały inny. Gdy zaincluduję w pliku z szablonem plik tresc.php o np. takiej tresci:
<?php    $show = strip_tags($_GET['show']);    if(!empty($show)) {      if(@is_file("$show.php")) @include "$show.php";      else echo '404';    }    else @include 'main.php'; ?>
Dostaję komunikat:

Warning: include(tresc.php) [function.include]: failed to open stream: No such file or directory in C:\...\template.php(31) : eval()'d code on line 68

Warning: include() [function.include]: Failed opening 'tresc.php' for inclusion (include_path='.;C:\php5\pear') in C:\...\template.php(31) : eval()'d code on line 68

Gdzie 31 linijka template.php to:
eval('?>'.$tekst.'<?');
A 68 linijka pliku z szablonem to oczywiście:
<?php include('tresc.php');
Wiecie jak rozwiązać ten problem? :rolleyes:
Użytkownik Coldpeer edytował ten post 01 kwiecień 2006, 00:13
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.