Get Smarty

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Check reviews of PHP Web Hosting, compatible with Smarty Templates

Префильтры/Постфильтры

Концепция плагинов префильтров и постфильтров очень проста; они отличаются местом исполнения, или, точнее, временем их исполнения.

string smarty_prefilter_name( $source,  
  &$smarty);  
string $source;
object &$smarty;
 

Префильтры используются для обработки исходного кода шаблона непосредственно перед компиляцией. Первый параметр функции префильтра - это исходный код шаблона, который, возможно, уже изменен другими префильтрами. Такой плагин возвращает модифицированый исходный код. Заметьте, что этот исходный код нигде не сохраняется, он используется только для компиляции.

string smarty_postfilter_name( $compiled,  
  &$smarty);  
string $compiled;
object &$smarty;
 

Постфильтры используются для обработки скомпилированного вывода шаблона (по сути - PHP-кода) сразу по завершению компиляции, но перед сохранением откомпилированного шаблона в файловой системе. Первым параметром функции постфильтра является скомпилированный код шаблона, возможно уже модифицированый другими постфильтрами. Плагин возвращает модифицированную версию этого кода.

Example 16.7. Плагин префильтра


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Файл:     prefilter.pre01.php
 * Тип:     prefilter
 * Имя:     pre01
 * Назначение:  Перевести все тэги html в нижний регистр.
 * -------------------------------------------------------------
 */
 function smarty_prefilter_pre01($source, &$smarty)
 {
    return preg_replace('!<(\w+)[^>;]+&gt;!e', 'strtolower("$1")', $source);
 }
 ?>

 

Example 16.8. Плагин постфильтра


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Файл:     postfilter.post01.php
 * Тип:     postfilter
 * Имя:     post01
 * Назначение:  Вывести код, перечисляющий все текущие
 * переменные шаблона.
 * -------------------------------------------------------------
 */
 function smarty_postfilter_post01($compiled, &$smarty)
 {
     $compiled = "<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" . $compiled;
     return $compiled;
 }
?>

 

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 18 plus 10? (Are you human?)

Sponsors [info]

Cheap Website Hosting @hostdone.com
email marketing @ActiveCampaign
broadband deals @BroadbandGenie
Best UK Web Hosting @webhost.uk.net
Reliable UK and US Web Hosting @rshosting.com
Cheap US and UK Web Hosting @infrenion.com
I.T Certification Exams @pass-guaranteed.com
Certification Practice Tests @firsttrycertify.com
Certification Practice Exam Questions @ace-it-certifications.com
Broadband Speed Test @broadbandspeed.co.uk
bulk email software @americaint.com
ASP.NET hosting @aspnethosting.co.uk