20 нояб. 2016 г., 11:44

Вызов сниппета фильтром вывода

Добрый день! Прошу прощения за свою дремучесть, но как мне вывести
[[*content:makeContents]]
в Smarty? makeContents — это сниппет, который автоматически создает оглавление статьи. Спасибо!
{$params=[ 'input'=>$modx->resource->content ]} {snippet name='makeContents' params=$params}
как вариант — перенести код сниппета в смарти-плагин (примеры есть в папке core/components/modxsmarty/smarty_plugins) и вызывать его, например,
{makeContents input=$modx->resource->content}
Спасибо! А если сниппет makeContents нужно вывести в TV {field name=text_description} к примеру?
{$params=[ 'input'=>$modx->resource->getTVValue('text_description') ]} {snippet name='makeContents' params=$params}
Просто ради интереса: а почему вам не написать просто [[*content:makeContents]]? Почему именно через смарти надо?
Дело в том, что в шаблонах все, кроме этого, в Smarty. К тому же, надеюсь, что это снизит нагрузку на сервер и увеличит скорость загрузки страницы (хоть немного).
Вряд ли это хоть сколько-то ускорит работу, слишком простой объект. А в случае с ТВ-полями текущего документа и вовсе может быть потеря скорости при переводе на смарти (при неправильном подходе). Так что руководствуйтесь принципом «работает? — не лезь!».

Добавить комментарий