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 в параметры сниппета передаются но внутри чанка этого сниппета они уже не доступны.
14 августа 2016, 13:07    Ilya Ev   
0    790 0


Комментарии ()

  1. Сергей Шлоков 14 августа 2016, 18:23 # 0
    А чего выводится в ссылке вместо {$link}?
    1. Максим Кузнецов 14 августа 2016, 19:04 # 0
      'tplFilter.row.default'=>'@INLINE <a href="'~ $link ~'">bla-bla</a>',
      — ты об этом?
      1. Алексей Бгатов 15 августа 2016, 01:32 # 0
        'tplFilter.row.default' => ('@INLINE <a href="'~ $link ~'">bla-bla</a>')
        без скобочек развалится
      2. Ilya Ev 15 августа 2016, 10:34 # 0
        Спасибо за помощь. вариант
        ('@INLINE <a href="'~ $link ~'">bla-bla</a>')
        работает.

        Интересно а почему вызов
        {$link}
        ничего не выводит а
        '~ $link ~'
        выводит все верно, любопытно)
        1. Алексей Бгатов 15 августа 2016, 11:49 # 0
          потому что Вы УЖЕ внутри синтаксиса fenom.
          таким образом:
          '@INLINE <a href="{$link}?vendor={$value}">{$title} <sup>{$num}</sup></a>'
          здесь будет распарсен чанк с подстановкой плейсхолдеров этого чанка. А в нем этого самого link не предполагается.
          ('@INLINE <a href="'~ $link ~'">bla-bla</a>')
          а здесь мы заранее формируем строку из внешней переменной и передаем ее в чанк уже готовую.
          1. Ilya Ev 15 августа 2016, 14:14 # 0
            Спасибо буду знать)
          2. Константин Ильин 01 мая 2018, 16:00 # 0
            Работаю с 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}
            // Никак не хотят работать
            
            1. Дмитрий 01 мая 2018, 16:36 # 0
              Передать в сниппет параметр, который он не поддерживает, и надеяться, что параметр сработает, хм…
              Если хотите закинуть свои параметры в сниппет на основе PDOTools, то нужно использовать параметр PrepareSnippet. Вот тут и тут подробнее о том, как с этим работать
              1. Константин Ильин 01 мая 2018, 18:00 # 0
                Со сниппетом pdoResources такой фокус проходит, вот в консоле попробовал:
                <?php
                $btnAddNew = true;
                $q = $modx->runSnippet('pdoResources',[
                    'parents'=> 4
                    ,'tpl' => '@INLINE {$btnAddNew}'
                    ,'btnAddNew' => $btnAddNew
                ]);
                echo $q;
                
                joxi.ru/BA0nZkjIJ5GJOm

                Про PrepareSnippet знаю, часто использовал на практике.

                Спасибо за ссылки! нашел там решение от Василия:
                $pdoTools->config["btnAddNew"]
                
                для msProducts тоже работает.
            Вы должны авторизоваться, чтобы оставлять комментарии.