pdoMenu – Как изменить название пункта Меню?
Доброе время суток уважаемое сообщество.
Самое обычное простое pdoMenu.
Размещается на сайте в Шапке и Сайдбаре.
Задача: Только в Сайдбаре – изменить название некоторых пунктов, menutitle. По id Ресурса.
Прописал в параметрах:
Только изучаю MODX, просьба помочь новичку.
Спасибо.
PS Поиском пользовался, ответ не найден.
Самое обычное простое pdoMenu.
Размещается на сайте в Шапке и Сайдбаре.
Задача: Только в Сайдбаре – изменить название некоторых пунктов, menutitle. По id Ресурса.
Прописал в параметрах:
&tpl=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[*parent:is=`2`:then=`Тест`:else=`[[+menutitle]]`]]</a>[[+wrapper]]</li>`
Код [[*parent:is=`2`:then=`Тест`:else=`[[+menutitle]]`]] не работает.Только изучаю MODX, просьба помочь новичку.
Спасибо.
PS Поиском пользовался, ответ не найден.
Комментарии: 13
Здравствуйте. В данном случае, в конструкции
[[*parent:is=`2`:then=`Тест`:else=`[[+menutitle]]`]]
необходимо использовать +parent
Плейсхолдер со звездочкой выводит данные той страницы, на которой вызывается.
Доброе время суток, Николай.
Не работает, привожу полный код:
А в остальных пунктах — оставить по умолчанию.
Не работает, привожу полный код:
[[pdoMenu? &level=`1` &resources=`1,2,3,4` &parents=`0` &scheme=`uri` &tpl=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+parent:is=`2`:then=`Тест`:else=`[[+menutitle]]`]]</a>[[+wrapper]]</li>` &outerClass=`my-menu`]]
Нужно, для ресурса с id=`2` изменить название пункта Меню с [[+menutitle]] — на Тест.А в остальных пунктах — оставить по умолчанию.
«В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.»
Документация.
Документация.
Доброе время суток, Максим.
Благодарю за ваш совет. Почитал документацию:
Как правильнее? Вставить код в INLINE чанк, как, собственно я и сделал, или написать отдельный чанк, как советует Николай, постом ниже?
Благодарю за ваш совет. Почитал документацию:
Поэтому для INLINE чанков предусмотрена замена [[+]] на {{+}} — такие теги MODX пропускает, а pdoTools при работе конвертирует их как нужно.Сделал так:
[[pdoMenu?
&level=`1`
&resources=`1,2,3,4`
&parents=`0`
&scheme=`uri`
&tpl=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>{{+id:is=`2`:then=`Тест`:else=`{{+menutitle}}`}}</a>[[+wrapper]]</li>`
&outerClass=`my-menu`]]
Работает.Как правильнее? Вставить код в INLINE чанк, как, собственно я и сделал, или написать отдельный чанк, как советует Николай, постом ниже?
Оба варианта правильные.
Способ с Inline-чанком избавляет от лишнего запроса к БД, способ с обычным чанком более читаем и удобнее, когда один и тот же чанк используется в нескольких вызовах. Лично я стараюсь использовать файловые чанки.
Способ с Inline-чанком избавляет от лишнего запроса к БД, способ с обычным чанком более читаем и удобнее, когда один и тот же чанк используется в нескольких вызовах. Лично я стараюсь использовать файловые чанки.
Если вам нужно проверять на id, зачем в условие ставить parent? Сделайте чанк с кодом
<li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+id:is=`2`:then=`Тест`:else=`[[+menutitle]]`</a>[[+wrapper]]</li>
Вызов сниппета [[pdoMenu? &level=`1` &resources=`1,2,3,4` &parents=`0` &scheme=`uri` &tpl=`имя.чанка` &outerClass=`my-menu`]]
Доброе время суток, Николай.
Сделал так, описал постом выше.
Выбор по +id — работает, по +parent — нет.
Почему, это ведь выбор одного и того же ресурса разными способами.
Спасибо
Если вам нужно проверять на id, зачем в условие ставить parent?Мне нужно выбрать конкретный ресурс. В документации и примерах — выбирают по parent, просто повторил.
Сделайте чанк с кодомНе хотел чанки плодить, из-за единственной строки.
Сделал так, описал постом выше.
Выбор по +id — работает, по +parent — нет.
Почему, это ведь выбор одного и того же ресурса разными способами.
Спасибо
В админке же можете указать menutitle и все
Размещается на сайте в Шапке и Сайдбаре.
Задача: Только в Сайдбаре – изменить название некоторых пунктов, menutitle.
О, можно ещё так извратиться:
&tpl=`@INLINE <li{$classes}>
<a href="{$link}" {$attributes}>
{switch $id}
{case 2}
Тест
{case default}
{$menutitle}
{/switch}
</a>
{$wrapper}
</li>`
Доброе время суток, Илья.
Или так, короче получится:
Спасибо.
Или так, короче получится:
&tpl=`@INLINE <li{$classes}>
<a href="{$link}" {$attributes}>
{$id == '2' ? 'Тест' : $menutitle}
</a>
{$wrapper}
</li>`
В моем случае, написание кода на Fenom — даст каке-либо преимущество?Спасибо.
В моём варианте можно поменять не один пункт меню, а несколько, если это понадобится:
<li{$classes}>
<a href="{$link}" {$attributes}>
{switch $id}
{case 2}
Тест
{case 7}
Контактная информация
{case 13}
Новости
{case default}
{$menutitle}
{/switch}
</a>
{$wrapper}
</li>
Доброе время суток, Илья.
Благодарю за подсказку. Как раз соображал, как у нескольких поменять.
Благодарю за подсказку. Как раз соображал, как у нескольких поменять.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.