создать пользовательский тэг в smarty и как получить содержимое внутри него - PullRequest
0 голосов
/ 23 января 2012

in smarty Smarty_Compiler.class.php выполнил некоторую операцию между двумя тегами, например {if}{/if} если я хочу получить текст в новом теге, то как это сделать внутри

function _compile_tag($template_tag)
    {
     ....
     switch ($tag_command) {
    -----
     case 'newtag':
      break;
     case  '/newtag':
       break;
      }

Как я могу получить содержимое tpl в новом теге

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Вы должны создать плагин Smarty. Вы можете прочитать документацию здесь (о расширении Smarty) и здесь (точнее, о создании плагинов функций блока ).

По сути, вы должны создать свою smarty_make_pdf() функцию PHP (см. Параметры во второй ссылке, которую я вам дал), поместить ее в файл с именем block.make_pdf.php (см. здесь ) и попросите Smarty выполнить поиск плагинов в папке, в которой вы создали этот файл, с помощью $smarty->addPluginsDir() (см. здесь ).

PS: Полагаю, вы используете Smarty 3.

3 голосов
/ 23 января 2012

Вы действительно не должны редактировать основной код Smarty для достижения этой цели.

Посмотрите registerPlugin () , если вы используете Smarty 3 (или register_block () , если вы используете Smarty 2).

Эти методы позволят вам создавать собственные теги Smarty и писать функции-обработчики, которые их реализуют.

...