шаблонизатор с нативным php

Статус
В этой теме нельзя размещать новые ответы.

arrecck

Создатель
Регистрация
18 Фев 2009
Сообщения
18
Реакции
0
Собственно кто какие методы использует, include, include с буферизацией.Возможно есть более интересное решение, про шаблонизаторы с псевдокодом писать не надо
 
Собственно кто какие методы использует, include, include с буферизацией.Возможно есть более интересное решение, про шаблонизаторы с псевдокодом писать не надо
Что ты понимаешь под псевдокодом?
 
%%some_var%% в html допустим, которая используется в регулярном выражении для подстановки, в большинстве классов шаблонизаторов что то похожее
 
Я делаю так:

В .htaccess настроен на передачу управления в index.php (ЧПУ)

Код:
AddDefaultCharset UTF-8
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Дальше идет разбор параметров в index.php

PHP:
<?php
// Разбираем ЧПУ
function extract_parameters($array)
{
	$c=sizeof($array);
	$tmp_array=array();
	for($i=0; $i<$c; $i++){
		if ((trim($array[$i]) != "") and (trim($array[$i]{0}) != '?')){
			$tmp_array[]=trim($array[$i]);
		}
	}
	return $tmp_array;
}
$_SERVER['REQUEST_URI'] = rawurldecode($_SERVER['REQUEST_URI']);
$param=$_SERVER['REQUEST_URI'];
$params=explode("/",$param);
$in_data=extract_parameters($params);	// Массив $in_data содержит входные параметры ЧПУ
unset($params);
unset($param);
$html = array();
...
//Тут идет передача управления в PHP скрипт для обработки запроса
//По ходу выполнения, скрипты заполняют массив $html
...
require 'template.php';	// Шаблонизатор
?>

По ходу выполнения заполняется массив $html, например

PHP:
$html['header']['title'] = 'Тайтл';
...
$html['sidebar']['menu'][] = array('name' => 'Пункт меню 1', 'url' => '/link1', 'type' => 'expanded_menu');
$html['sidebar']['menu'][] = array('name' => 'Пункт меню 2', 'url' => '/link2', 'type' => 'collapsed_menu');
...
$html['footer']['copyright'] = 'Some text...';

Вот код template.php
PHP:
function load_template($data,$template_name){
	global $template_path,$themes;
	@require $template_path.$template_name.'.tpl.php';
}

$template_path = 'templates/frontend/';
reset($html);
foreach($html as $key => $value){
	$data = $value;
	load_template($data,$key);
}

Вот пример шаблона sidebar.tpl.php
PHP:
<div id="menu">
<ul>
<? foreach($data as $val){ ?>
<li>
<? load_template($val,$val['type']); ?>
</li>
<? } ?>
</ul>
</div>

Дальше текст expanded_menu.tpl.php
PHP:
<a href="<?=$data['url']?>" class="left-menu-item-expanded"><?=$data['name']?></a>

Текст collapsed_menu.tpl.php
PHP:
<a href="<?=$data['url']?>" class="left-menu-item-collapsed"><?=$data['name']?></a>

В коде разобраться не сложно, хотя, может, пример с меню не совсем наглядный.
 
Раньше пользовался Для просмотра ссылки Войди или Зарегистрируйся, недавно перешёл на его облегчённо-переписанного клона: Для просмотра ссылки Войди или Зарегистрируйся. Оба они используют шаблоны с "псевдокодом", которые при первом же использовании единожды компилируются в нативный PHP-код.
 
zend_view попробуй
 
require_once для простеньких скриптов, подключаю шаблон в нем php инструкции идет работа с переменными доступными от скрипта который вызывает
 
еще ссылка на Для просмотра ссылки Войди или Зарегистрируйся шаблонизатора, где используется нативный php
Пока не разбирался, вечером буду все смотреть, тогда отпишу о своих впечатлениях
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху