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

Комментарии: 9

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

      Интересно а почему вызов
      {$link}
      ничего не выводит а
      '~ $link ~'
      выводит все верно, любопытно)
        mngatoff
        15 августа 2016, 11:49
        2
        0
        потому что Вы УЖЕ внутри синтаксиса fenom.
        таким образом:
        '@INLINE <a href="{$link}?vendor={$value}">{$title} <sup>{$num}</sup></a>'
        здесь будет распарсен чанк с подстановкой плейсхолдеров этого чанка. А в нем этого самого link не предполагается.
        ('@INLINE <a href="'~ $link ~'">bla-bla</a>')
        а здесь мы заранее формируем строку из внешней переменной и передаем ее в чанк уже готовую.
          Ilya Ev
          15 августа 2016, 14:14
          0
          Спасибо буду знать)
          Константин Ильин
          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}
          // Никак не хотят работать
            Дмитрий
            01 мая 2018, 16:36
            0
            Передать в сниппет параметр, который он не поддерживает, и надеяться, что параметр сработает, хм…
            Если хотите закинуть свои параметры в сниппет на основе PDOTools, то нужно использовать параметр PrepareSnippet. Вот тут и тут подробнее о том, как с этим работать
              Константин Ильин
              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 тоже работает.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9