mając paser:
  1. <?php
  2. /**
  3. * Plik zawiera definicje klasy Templates
  4. * @author Łukasz Janicki <darkspirit@strefaphp.net>
  5. * @package msf
  6. * @subpackage libs
  7. * @version 1.0
  8. * @copyright Łukasz Janicki 2004
  9. */
  10.  
  11.  /**
  12.    * System szablonów
  13.    *
  14.    * System szablonów do strony, forum etc.
  15.    */
  16.  class Templates
  17.  {
  18.  
  19. /**
  20. * Przechowuje nie zamieniony kod stron.
  21. * @var array
  22. * @see load()
  23. */
  24. var $unparsed = array ();
  25.  
  26. /**
  27. * Przechowuje zamieniony kod stron.
  28. * @var array
  29. * @see parse()
  30. */
  31. var $parsed = array ();
  32.  
  33. /**
  34. * Przechowuje bloki do zamiany.
  35. * @var array
  36. */
  37. var $blocks = array();
  38.  
  39. /**
  40. * Przechowuje nazwę ostatnio wczytanego szablonu.
  41. * @var string
  42. * @see load()
  43. */
  44. var $last_loaded = array();
  45.  
  46. /**
  47. * Wczytuje szablon z pliku.
  48. * @return void
  49. */
  50. function load($plik)
  51. {
  52.  if($plik == $last_loaded)
  53.  {
  54. $this->unparsed[] = end($this->unparsed);
  55.  }
  56.  elseif(file_exists(F_TPL.$plik.'.tpl'))
  57.  {
  58. $file = @fopen(F_TPL.$plik.'.tpl',r);
  59. flock($file, 2);
  60. $this -> unparsed[] = fread($file,filesize(F_TPL.$plik.'.tpl'));
  61. flock($file, 3);
  62. $this->last_loaded = $plik;
  63.  }
  64.  else
  65. echo 'Plik ' .$plik. ' nie istnieje.';
  66. }
  67.  
  68. /**
  69. * Parsuje szablon.
  70. *
  71. * Zamienia bloki z kodu strony na odpowiednie wartości zadeklarowane w
  72. * atrybucie block()
  73. * @return void
  74. */
  75. function parse()
  76. {
  77.  $i=0;
  78.  foreach ($this->unparsed as $template)
  79.  {
  80. $found = array();
  81. if(preg_match_all("#{(.+?)}#is", $template, $found))
  82. {
  83.  foreach($found[1] as $block)
  84.  {
  85. $block_name = '{'.$block.'}';
  86. $block_values = $this -> blocks[$i][$block];
  87. $template = str_replace($block_name, $block_values, $template);
  88.  }
  89. }
  90. $this -> parsed[] = $template;
  91. $i++;
  92.  }
  93. } #end function parse()
  94.  
  95. /**
  96. * Wyświetlamy sparsowany szablon.
  97. *
  98. * Wyświetlamy sparsowany szablon. Mamy trzy możliwości wyświetlania.
  99. * 1) Wyświetlenie wszystkich szablonów
  100. *  - wywołanie: $this->show_result();
  101. * 2) Wyświetlenie pojedyńczego szablonu
  102. *  - wywołanie: $this->show_result(x); - za x wstawiamy numer
  103. *  szablonu(numeracja zaczyna się od 0)
  104. * 3) Wyświetlanie szablonów z danego przedziału
  105. *  - wywołanie: $this->show_result(x,y); - wyświetlamy szablony z
  106. *  przedziałów:
  107. * x <= y => od x do y
  108. * x > y => od y do x
  109. */
  110. function show_result($which="all",$to=-1)
  111. {
  112.  if($which >= 0 && $to > -&& $to <= count($this->parsed) && $which != 'all')
  113.  {
  114. if($which < $to)
  115. {
  116.  while($which <= $to)
  117.  {
  118. echo $this->parsed[$which];
  119. $which++;
  120.  }
  121. }
  122. else
  123. {
  124.  while($which >= $to)
  125.  {
  126. echo $this->parsed[$which];
  127. $which--;
  128.  }
  129. }
  130.  }
  131.  elseif($which != 'all')
  132.  {
  133. echo $this->parsed[$which];
  134.  }
  135.  else
  136.  {
  137. foreach($this->parsed as $parsed)
  138. {
  139.  echo $parsed;
  140. }
  141.  }
  142. } #end function show_result()
  143.  } #end class Templates
  144.  
  145.  define('F_TPL','szablon/');
  146.  
  147. ?>
oraz plik index.php
  1. <?php
  2. include('module/szablon.class.php');
  3. $index_tytyl = 'a';
  4. $index_slowa_kluczowe = 'a';
  5. $index_opis_strony = 'a';
  6.  
  7. $index_stopka = 'a';
  8.  $templates = new Templates; 
  9.  $templates->load('naglowek'); 
  10.  $tempaltes->blocks[] = array (
  11.  'TYTUL' => $index_tytyl,
  12. 'SLOWA_KLUCZOWE' => $index_slowa_kluczowe,  
  13. 'OPIS_STRONY' => $index_opis_strony,  
  14.  ); 
  15.  $templates->load('stopka'); 
  16.  $tempaltes->blocks[] = array (
  17.  'STOPKA' => $index_stopka, 
  18.  ); 
  19.  $templates->parse();
  20.  $templates->show_result();
  21. ?>

W jaki sposób mogę wywołac plik includowany badz funkcje funkcja();