Template-uri in Php

 Template-uri in Php

Acum vreo doi ani am găsit clasa de mai jos pentru lucrul cu template-uri. Cred ca e cea mai simpla clasa de acest gen. Practic se parsează un fișier html unde se înlocuiesc tagurile {nume} cu un conținut setat de către utilizator. Daca nume = "Continut" atunci peste tot unde se gaseste {nume} se va inlocui cu codul html. 

Continut "tpl.class.php"

 /***************************************************************************

*
* Author   : Eric Sizemore ( www.secondversion.com & www.phpsociety.com)
* Package  : Simple Template Engine
* Version  : 1.0.2
* Copyright: (C) 2006 - 2007 Eric Sizemore
* Site     : www.secondversion.com
* Email    : hide@address.com
* File     : tpl.class.php
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
***************************************************************************/

// Template engine
class template
{
 /**
 * Template variables and their replacements
 *
 * @var array
 */
 var $tpl_vars;

 /**
 * Constructor
 */
 function template()
 {
  $this->tpl_vars = array();
 }

 /**
 * Assign our variables and replacements
 *
 * @param  array  Template variables and replacements
 * @return none
 */
 function assign($var_array)
 {
  // Must be an array...
  if (!is_array($var_array))
  {
   die('template::assign() - $var_array must be an array.');
  }
  $this->tpl_vars = array_merge($this->tpl_vars, $var_array);
 }

 /**
 * Parse the template file
 *
 * @param  string  Template file
 * @return string  Parsed template data
 */
 function parse($tpl_file)
 {
  // Make sure it's a valid file, and it exists
  if (!is_file($tpl_file))
  {
   die('template::parse() - "' . $tpl_file . '" does not exist or is not a file.');
  }
  $tpl_content = file_get_contents($tpl_file);

  foreach ($this->tpl_vars AS $var => $content)
  {
   $tpl_content = str_replace('{' . $var . '}', $content, $tpl_content);
  }
  return $tpl_content;
 }

 /**
 * Output the template
 *
 * @param string Template file
 */
 function display($tpl_file)
 {
  echo $this->parse($tpl_file);
 }
}

Exemplu

Un exemplu foarte simplu folosind clasa "template" arata cam asa:


include("tpl.class.php");

$header = "Header";
$meniu = "linkuri meniu";
$continut = "continut pagina";
$footer = "linkuri footer";

$tpl_pagina = &new template();
$tpl_pagina->assign(array('modul_header' => $header, 
                          'modul_meniu' => $meniu, 
                          'modul_continut' => $continut, 
                          'modul_footer' => $footer
                         )
                   );

$pagina_de_afisat = $tpl_pagina->display_template('templates/new-newsletter/interfata.tpl');
echo $pagina_de_afisat;

Template

 Conținutul interfata.tpl este o pagina normala html dar care conține următoarele variabile {modul_header} {modul_meniu} {modul_continut} {modul_footer}, care vor poziționate în website unde dorește utilizatorul. Practic posibilitățile sunt nelimitate, iar partea de html este complet deconectata de Php. Mai simplu de atat nu se poate.
O zi plăcută tuturor !

Etichete

Afișați mai multe

Arhiva

Afișați mai multe