fenom передать переменную внутрь снипета
Добрый день подскажите как реализовать. Нужно передать переменную внутрь inline чанка вложенного сниппета
есть вызов
есть вызов
{$_modx->runSnippet('!pdoMenu', [
'parents'=>6,
...
'tpl' => '@FILE chunks/elements/topmenuIner.tpl',
....
])}
в файле шаблона tpl код<li><a href="{$link}">заголовок</a></li>
{$_modx->runSnippet('!mFilter2',[
'element'=>'msProducts',
'parent'=>$id
...
'tplFilter.row.default'=>'@INLINE <a href="{$link}?vendor={$value}">{$title} <sup>{$num}</sup></a>',
...
])}
Как передать {$link}
внутрь tplFilter.row.default=>@INLINE
id в параметры сниппета передаются но внутри чанка этого сниппета они уже не доступны. Комментарии: 9
А чего выводится в ссылке вместо {$link}?
'tplFilter.row.default'=>'@INLINE <a href="'~ $link ~'">bla-bla</a>',
— ты об этом? 'tplFilter.row.default' => ('@INLINE <a href="'~ $link ~'">bla-bla</a>')
без скобочек развалится
Спасибо за помощь. вариант
Интересно а почему вызов
('@INLINE <a href="'~ $link ~'">bla-bla</a>')
работает.Интересно а почему вызов
{$link}
ничего не выводит а '~ $link ~'
выводит все верно, любопытно)
потому что Вы УЖЕ внутри синтаксиса fenom.
таким образом:
таким образом:
'@INLINE <a href="{$link}?vendor={$value}">{$title} <sup>{$num}</sup></a>'
здесь будет распарсен чанк с подстановкой плейсхолдеров этого чанка. А в нем этого самого link не предполагается.('@INLINE <a href="'~ $link ~'">bla-bla</a>')
а здесь мы заранее формируем строку из внешней переменной и передаем ее в чанк уже готовую.
Спасибо буду знать)
Работаю с API, вызываю сниппет
$res = $this->modx->runSnippet('msProducts',[
'parents'=> 4
,'where' => json_encode($where,1)
,'optionFilters' => json_encode($whereOption,1)
,'tpl' => 'product.item.row'
,'limit' => 0
,'sortby' => 'pagetitle'
,'sortdir' => 'ASC'
,'btnAddNew' => $btnAddNew
]);
Передаю переменную $btnAddNew (булево), как ее получить в чанке product.item.row?{$_pls['btnAddNew']}
{$btnAddNew}
...
{if $_pls['btnAddNew']}
{if $btnAddNew}
// Никак не хотят работать
Со сниппетом pdoResources такой фокус проходит, вот в консоле попробовал:
Про PrepareSnippet знаю, часто использовал на практике.
Спасибо за ссылки! нашел там решение от Василия:
<?php
$btnAddNew = true;
$q = $modx->runSnippet('pdoResources',[
'parents'=> 4
,'tpl' => '@INLINE {$btnAddNew}'
,'btnAddNew' => $btnAddNew
]);
echo $q;
joxi.ru/BA0nZkjIJ5GJOmПро PrepareSnippet знаю, часто использовал на практике.
Спасибо за ссылки! нашел там решение от Василия:
$pdoTools->config["btnAddNew"]
для msProducts тоже работает.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.