@alexalexes

Как передать свой параметр в чанк, который выступает в роли шаблона?

Есть сниппет, который формирует меню сайта:
[[pdoMenu ?
      &parents=`0`
      &level=`1`
      &tplOuter=`page_main_menu_other_tpl`
      &tpl=`page_main_menu_row_tpl`
      &tplHere=`page_main_menu_row_tpl`
	  &outerClass=`main-menu`
      &firstClass=``
	  &hereClass=`current`
	  &lastClass=``
	  &countChildren=`1`
    ]]

Я бы хотел передать в чанк page_main_menu_other_tpl свой параметр my_param и использовать внутри чанка плейсхолдер.
Если бы я отдельно использовал чанк, то выглядело бы это так:
[[$page_main_menu_other_tpl ? my_param=`12345`]]
Чанк выглядел бы так:
<div>[[+my_param]]</div>
Как передать аналогичный параметр при использовании pdoMenu?
  • Вопрос задан
  • 573 просмотра
Пригласить эксперта
Ответы на вопрос 2
an-tar
@an-tar Куратор тега MODX
Full stack web developer
Значение чего вы передаете?

Не прямой ответ, но все же - в чанке можно напрямую обратиться к полям выбираемых ресурсов, или по ID к полям любых других ресурсов.
Также может быть вам поможет следующее: pdoMenu наследует общие параметры pdoTools https://docs.modx.pro/komponentyi/pdotools/snippet... , среди которых есть

&tplCondition - Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls.
&tplOperator - Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls.
&conditionalTpls - JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях - чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.


При их помощи можно также вводить параметризацию, правда, если ваш параметр идет из ресурса.
&tplCondition=`id`
  &tplOperator=`==`
  &conditionalTpls=`{"1":"имя чанка 1", "2":"имя чанка 2"}`
Ответ написан
Комментировать
ig0r74
@ig0r74
MODX-разработчик
Над вызовом меню
{$_modx->setPlaceholder('key', 'value')}
В месте, где нужно получить значение
{$_modx->getPlaceholder('key')}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы