Как использовать Fenom в шаблонах сниппетов?
Всем привет.
Вопрос простой, но я не могу найти примеров решения.
Есть пример вызова сниппета:
Спасибо за помощь.
Вопрос простой, но я не могу найти примеров решения.
Есть пример вызова сниппета:
{'pdoResources' | snippet : [
'tpl' => 'card_tpl',
'parents' => '4',
'includeTVs' => 'images,price,params,tomain',
'limit' => '8',
'tvFilters' => 'tomain==1',
'processTVs' => '1'
]}
Вопрос в том, как правильно составить чанк card_tpl. Плейсхолдеры TV-параметров в синтаксисе Fenom ({$price}, {$images}) не работают.Спасибо за помощь.
Комментарии: 3
Добавьте в вызов:
'tvPrefix' => '',
Ну если посмотреть документацию… то мы увидим, что в чанке надо сделать так:
{$_pls['tv.tv_name']}
Да, действительно, в документации есть такой блок:
Плейсхолдеры с точкой или тире
Во многих местах MODX используются плейсхолдеры, которые нельзя указывать в Fenom, так как они не соотвествуют правилам наименования переменных PHP. Например, плейсхолдеры с точкой (MODX обычно выставляет так данные массивов) или с тире (ТВ параметры).
Для доступа к этим плейсхолдерам нужно использовать вторую служебную переменную - {$_pls}:
<!-- Вывод сразу -->
{$_pls['tag.subtag']}
<!-- Или через переменную -->
{var $tv_name = $_pls['tv-name']}
{$tv_name}
Если плейсхолдер был выставлен в глобальный массив modX::placeholders, то его нужно получать вот так:
{var $tag_sub_tag = $_modx->getPlaceholder('tag.sub_tag')}
{$tag_sub_tag}
{$_modx->getPlaceholder('tv_name')}
При указании неправильных переменных ваш шаблон не будет скомпилирован и вы получите запись об этом в системном журнале.
Но мне не было очевидно, что это распространяется на обычные плейсхолдеры в шаблонах. Спасибо за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.