pdoMenu, fenom и вывод id
Привет. Странная штука.
В чанке для tplInner не выводится id обрабатываемого ресурса через fenom.
При чем с синтаксисом modx все работает — [[+id]] выводит правильный id. А {$id} не выводит ничего. Перепробовал, кажется, все:
{$_pls['id']}
{$_modx->getPlaceholder('id')}
{'id' | placeholder}
Во всех вариантах пустой вывод.
При чем в шаблоне вернего уровня {$id} работает.
Как можно решить эту проблему?
В чанке для tplInner не выводится id обрабатываемого ресурса через fenom.
При чем с синтаксисом modx все работает — [[+id]] выводит правильный id. А {$id} не выводит ничего. Перепробовал, кажется, все:
{$_pls['id']}
{$_modx->getPlaceholder('id')}
{'id' | placeholder}
Во всех вариантах пустой вывод.
При чем в шаблоне вернего уровня {$id} работает.
Как можно решить эту проблему?
Комментарии: 16
tplInner это же обертка, разве она содержит какие либо плейсхолдеры кроме как [[+wrapper]], [[+classnames]]...?
Если оставить tplInner пустым внутри, то выведет все плейсхолдеры, которые содержаться в чанке. Вызов:
[[!pdoMenu?
&parents=`0`
&level=`2`
&tplInner=`test`
]]
Результат:- … и так далее. А мне надо всередину пункты дополнительные натыкать ((
Хм… спасибо.
Только непонятно, почему тогда [[+id]] работает…
Только непонятно, почему тогда [[+id]] работает…
У вас, случайно, не inline-чанк?
Возможно, в памяти системы уже выставлен плейсхолдер [[+id]] и родной парсер просто подхватывает его.
Возможно, в памяти системы уже выставлен плейсхолдер [[+id]] и родной парсер просто подхватывает его.
Нет. не инлайн. Отдельный чанк.
При чем, если я пишу что-то вроде
{var $rid = '[[+id]]'}, а потом вывожу, как {$rid} — он выводит правильное значение. Только в $rid он сохраняет всю конструкцию [[+id]], а уже потом ее обрабатывает
При чем, если я пишу что-то вроде
{var $rid = '[[+id]]'}, а потом вывожу, как {$rid} — он выводит правильное значение. Только в $rid он сохраняет всю конструкцию [[+id]], а уже потом ее обрабатывает
Оберните подпункты в tplParentRow, а в tplInner оставьте только wrapper.
Мне надо подгрузить в меню «пункты», которые не являються ресурсами. Грубо говоря, на некоторых страницах есть внутреннее меню, которое скролит страницу на нужное место, но это все один ресурс. Поэтому, я во внутреннем меню проверяю, есть ли на этой странице TV, с таким «меню». И в дальнейшем мне надо сделать что-то типа
— Услуги (ресурс 1)
— — Покраска (ресурс 2, скрол на раздел покраска)
— — Рихтовка (ресурс 2, скрол на раздел рихтовка)
— — Полировка (ресурс 2, скрол на раздел полировка)
— — Продажа инструментов (ресурс 3)
Можно, конечно, подргружать дополнительные пункты яваскриптом, но хотелось обойтиись без дополнительного js
{var $scrollMenu = json_decode($id | resource : 'scrollMenu', true)}
<ul class="submenu {$classnames}">
{if $scrollMenu | len > 0}
{foreach $scrollMenu as $idx => $item}
{var $alias = $item.title | strip | lowercase | replace : " " : "-"}
<li>
<a href="{$id | url : ['scheme' => 'full'] : ['goto' => $alias]}">{$item.title}</a>
</li>
{/foreach}
{/if}
{$wrapper}
</ul>
И меню в дальнейшем должно выглядеть как-то так:— Услуги (ресурс 1)
— — Покраска (ресурс 2, скрол на раздел покраска)
— — Рихтовка (ресурс 2, скрол на раздел рихтовка)
— — Полировка (ресурс 2, скрол на раздел полировка)
— — Продажа инструментов (ресурс 3)
Можно, конечно, подргружать дополнительные пункты яваскриптом, но хотелось обойтиись без дополнительного js
Ну вот все это и поместите tplParentRow. Или я не поняла
Вот пример. Было:
Вот пример. Было:
&tplInner=`@CODE: <ul>[[+wrapper]]</ul>`
&tplParentRow=`@CODE: <li>[[+menutitle]]</li>[[+wrapper]]`
Стало:&tplInner=`@CODE: [[+wrapper]]`
&tplParentRow=`@CODE: <li>[[+menutitle]]</li><ul>[[+wrapper]]</ul>`
Так мне перед [[+wrapper]] надо добавить пункты меню вручную, предварительно проверив, есть ли они в том ресурсе, коотрый обрабатывается в данный момент… или в tplParentRow есть плейсхолдер id?
Да, содержит id.
<ul> // tplOuter
<li>Первый пункт. Содержит подменю. Активный // tplParentRowActive
<ul> // tplInner
<li>Первый подпункт, текущий</li> // tplInnerHere
<li>Второй подпункт</li> // tplInnerRow
</ul>
</li>
<li>Второй пункт. Содержит подменю // tplParentRow
<ul> // tplInner
<li>Первый подпункт</li> // tplInnerRow
<li>Второй подпункт</li> // tplInnerRow
</ul>
</li>
<li>Третий пункт</li> // tpl
</ul>
Попробую, спасибо
Не, так не выйдет ничего. [[+wrapper]] строит полностью сабменю —
В tplInner тоже не получится в середину. В MODX есть тип ресурса «ссылка», создаете и в поле «ссылка» указываете ссылку с якорем, куда нужно перебросить. Потом обычный вызов pdoMenu, документы сортируете и группируете как вам нужно.
Я сделал. В tplInner оставил только {$wrapper}, а в tpl
<ul class="mobile-nav__secondary">
{foreach $sections as $idx => $section}
{var $alias = $section.title | strip | lowercase | replace : " " : "-"}
<li>
<a href="{$id | url : ['scheme' => 'full'] : ['goto' => $alias]}">{$section.title}</a>
</li>
{/foreach}
{$wrapper}
</ul>
Я предложил правку, а там посмотрим
https://github.com/bezumkin/pdoTools/pull/306
Кому интересно, но лень разбираться в гитхабе
то вот изменения
https://github.com/bezumkin/pdoTools/pull/306
Кому интересно, но лень разбираться в гитхабе
то вот изменения
Столкнулся с подобным глюком — в tplInner на феном не выводит id. Странно прошло почти 5 лет а вопрос до сих пор не решен. Ссылки от последнего коммента уже битые
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.