pdoMenu + Smarty

Вывод меню в шаблоне сделан следующим образом:
{block name="sub_menu"} {snippet name="pdoMenu" assign="navdata" params=[ 'parents' => $modx->resource->parent, 'level' => 1 ]} {if $navdata}<nav class="sub-menu">{$navdata}</nav>{/if} {/block}
Как правильно добавить
&where=`{"isfolder": "1"}`
?
Наклонные кавычки надо заменить на обычные. То есть в вашем случае получится так:
{block name="sub_menu"} {snippet name="pdoMenu" assign="navdata" params=[ 'parents' => $modx->resource->parent, 'level' => 1, 'where' => {"isfolder": "1"} ]} {if $navdata}<nav class="sub-menu">{$navdata}</nav>{/if} {/block}
Можно вообще вот так записать, так как с массивом удобней работать:
{block name="sub_menu"} {snippet name="pdoMenu" assign="navdata" params=[ 'parents' => $modx->resource->parent, 'level' => 1, 'where' => json_encode([ "isfolder" => 1 ]) ]} {if $navdata}<nav class="sub-menu">{$navdata}</nav>{/if} {/block}
Но вообще я бы вот так написал:
{block name="sub_menu"} {if $navdata = $modx->runSnippet("pdoMenu", [ 'parents' => $modx->resource->parent, 'level' => 1, 'where' => json_encode([ "isfolder" => 1 ]) ])} <nav class="sub-menu">{$navdata}</nav> {/if} {/block}
Кстати, а у вас не возникает критическая ошибка из-за вот этого?: {«isfolder»: «1»} Ведь фигурные скобки — это Smarty-теги.
Ошибка возникает.
Вот этот вариант работает нормально:
{block name="sub_menu"} {if $navdata = $modx->runSnippet("pdoMenu", [ 'parents' => $modx->resource->parent, 'level' => 1, 'where' => json_encode([ "isfolder" => 1 ]) ])} <nav class="sub-menu">{$navdata}</nav> {/if} {/block}
Лайфхак, чтобы json нормально работал без ошибок в смарти надо проьелы поставить { «isfolder»: «1» }

Добавить комментарий