Как я могу выгрузить или запретить smarty основные плагины из шаблона при использовании $smarty->fetch('mytemplate.tpl')
метод
Например шаблон mytemplate.tpl
содержит {} Html_options а также {} Html_table
Когда используешь $smarty->fetch('mytemplate.tpl')
только {} Html_options smarty должен разобрать, но {} Html_table не
удаление function.html_table.php
из папки плагина не вариант, так как он все еще используется другим $smarty->fetch()
вызов
Возможным решением является расширение от Smarty_Security
Класс и включить Securty с помощью метода
$smarty->enableSecurity($instanceOfClass)
После того, как метод выборки был вызван, disableSecurity
метод сделать трюк, чтобы включить все plugins/tags/modifiers
снова.
К сожалению, когда используется enableSecurity и используются запрещенные функции, возникает исключение
Альтернативой является замена всех тегов / переменных / …, которые вы хотите запретить {} {Буквенные forbiddenTags} {/ буквальный} используя preg_replace
перед звонком $smarty->fetch([...])
пример
# negate regular expression pattern to allow only the below tags
$pattern = "/\{(?!allowedTag1|allowedTag2).*?\}/";
$replacement = '{literal}$0{/literal}';
$content = preg_replace($pattern, $replacement, $content);
$smarty->fetch("string:" . $content);
Подробнее о классе безопасности здесь: http://www.smarty.net/docs/en/advanced.features.tpl
Других решений пока нет …