Mam taką prostą klasę:

  1. <?php
  2. class template
  3. {
  4. public $dir = "templates/default/";
  5. public $file;
  6. public $tags;
  7.  
  8. public function __construct($file, $tags = array())
  9. {
  10. $this->file = $file;
  11. foreach($tags as $tag => $tagvalue)
  12. {
  13. $this->tags["{".$tag."}"] = $tagvalue;
  14. }
  15. }
  16.  
  17. public function tag($tags, $value = NULL)
  18. {
  19. if(!isset($value))
  20. {
  21. foreach($tags as $tag => $tagvalue)
  22. {
  23. $this->tags["{".$tag."}"] = $tagvalue;
  24. }
  25. }
  26. else
  27. {
  28. $this->tags["{".$tag."}"] = $tagvalue;
  29. }
  30. }
  31.  
  32. public function display()
  33. {
  34. $tmp = file_get_contents($this->dir.$this->file);
  35. $tmp = str_replace(array_keys($this->tags), array_values($this->tags), $tmp);
  36. $tmp = preg_replace("#\(\.(.*?)\.\)#", "", $tmp);
  37. echo $tmp;
  38. }
  39. }
  40. ?>



Wszystko leci do .tpl'ki w ten sposób:

  1. $szablon = new template('page_header.tpl');
  2. $szablon->tag(array(
  3. 'U_KEYWORDS' => 'opis',
  4. 'U_DESCRIPTION' => 'opis',
  5. 'U_BLOG_NAME' => 'test ?> Blog')
  6. );
  7. $szablon->display();


Jednak chciałbym, aby można było przypisać do tej tablicy, 'nazwę', czyli w ten sposób:

  1. $szablon->tag('moja_nazwa', array(


A w pliku .tpl odtwarzać to tak:

Kod
<!-- BEGIN moja_nazwa -->
moj kod html
<!-- END moja_nazwa -->


I nie mogę za cholerę nic sensownego wymyśleć, aby to ładnie działało ;/ Jakaś pomoc? Google przekopałem pod tym względem doszczętnie, ale tam nic nie ma na ten temat.