Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > создание плагина smarty(с использованием {include}


Автор: Borland 25.3.2010, 00:11
Всем доброго времени суток. Достаточно давно рыскаю по форуму  и никак найти ответа не могу, может потому что его нету, может потому что туплю.

Вот есть, скажем так, массив (многомерный) (этакое дерево) вида

массив
- ветвь 1 ....
- ветвь 2 ....
- ....

каждая ветвь имеет свой идентификатор, по которому она отображается на странице.

Структура ветвей не важна. Главное то - что каждая ветвь - некий блок данных сходной структуры. Передаю этот массив в смарти. И дальше уже его разбираю и представляю в приятном для глаза виде. Трудность возникла в следующем. Пользователь (который не должен обладать глубокими знаниями в сайтах (формально должен знать только html) должен сам решить какой кусок куда ему отображать. В данный момент ему надо написать нечто типа 

Код

{include file="blok.tpl" name="имя (идентификатор) ветви"}


я бы хотел чтобы пользователь писал только {blok name="имя (идентификатор) ветви"}

поскольку это короче и несёт в себе меньше ошибок. В результате человек сможет быстро решить что и куда выводить....

Понимаю что надо написать плагин но не могу понять как в нём воспользоваться шаблоном blok.tpl т е как посути проинклудить шаблон ручками. Ибо этот шаблони и разбирает структуру ветви правильно.....

Подскажите пожалуйста!.



Автор: skyboy 25.3.2010, 00:21
Цитата(Borland @  24.3.2010,  23:11 Найти цитируемый пост)
name="имя (идентификатор) ветви"

а как в изначальном варианте 
Цитата(Borland @  24.3.2010,  23:11 Найти цитируемый пост)
{include file="blok.tpl" name="имя (идентификатор) ветви"}

внутри шаблона blok.tpl появлялись данные не об имени, а о параметрах узла ветви(имя или что там есть)?
чтоб внутри плагина вызвать обработку шаблона, можно воспользоваться методом http://www.smarty.net/manual/ru/api.fetch.phpобъекта $smarty:
Код

function smarty_function_block($params, &$smarty)
{
   if (!$smarty->template_exists('blocl.tpl')) {
      $smarty->trgiger_error('block.tpl does not exists');
   }
   if (!isset($params['name'])) {
      $smarty->trigger_error('Param named name must be set');
   }
    return $smarty->fetch('block.tpl');
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)