Warunki w plikach .tpl

0

Mam taką prostą klasę:

<?php
 class template
  {
      public $dir = "templates/default/"; 
      public $file; 
      public $tags;

      public function  __construct($file, $tags = array())
      {
          $this->file = $file;
          foreach($tags as $tag => $tagvalue)
          {
              $this->tags["{".$tag."}"] = $tagvalue;
          }
      }

      public function tag($tags, $value = NULL) 
      {
          if(!isset($value))
          {
              foreach($tags as $tag => $tagvalue)
              {
                  $this->tags["{".$tag."}"] = $tagvalue; 
              }
          }
          else
          {
              $this->tags["{".$tag."}"] = $tagvalue; 
          }
      }

      public function display() 
      {
              $tmp = file_get_contents($this->dir.$this->file); 
              $tmp = str_replace(array_keys($this->tags), array_values($this->tags), $tmp);
              $tmp = preg_replace("#\(\.(.*?)\.\)#", "", $tmp); 
              echo $tmp; 
      }
  }
?>

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

$szablon = new template('page_header.tpl');
$szablon->tag(array(
	'U_KEYWORDS' => 'opis',
	'U_DESCRIPTION' => 'opis',
	'U_BLOG_NAME' => 'test ?> Blog')
);
$szablon->display();

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

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

A w pliku .tpl odtwarzać to tak:

<!-- 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.

0

Najprościej: zamień swoje znaczniki na PHP. Ewaluacja takiego szablonu to będzie proste include.

Przykładowo:
{zmienna} -> <?php print $zmienna; ?>
{if zmienna > 5} -> <?php if($zmienna > 5): ?>
{else} -> <?php else: ?>
{/if} -> <?php endif; ?>

Więcej tego typu konstrukcji po stronie PHP masz na http://php.net/manual/en/control-structures.alternative-syntax.php

0

A czy jest inne rozwiązanie? Finalnie, chciałbym aby to działało tak jak w phpbb.

0

Tak to właśnie działa w phpbb. Otwórz sobie dowolny plik z katalogu "cache" istniejącego forum.

1 użytkowników online, w tym zalogowanych: 0, gości: 1