Как в pdoMenu запретить выводить ссылку на раздел?
Всем привет. Подскажите пожалуйста как решить такую проблему:
Вывожу меню из нескольких разделов i.shotnes.com/gVb7FKP2 так
Понимаю, что конструкция должна быть примерно такой:
Я писал уже об этом, извините, что дублирую но решения так и не придумал.
Вывожу меню из нескольких разделов i.shotnes.com/gVb7FKP2 так
[[pdoMenu? &parents=`4, 8, 13, 51` &displayStart=`1`
&tplStart=`@INLINE <li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`
&tplOuter=`@INLINE <ul>[[+wrapper]]</ul>` &level=`1`
&tplInner=`@INLINE <div class="drop"><ul>[[+wrapper]]</ul></div>`
]]
Получается всё правильно, но нужно убрать ссылку с главных пунктов только у тех, у которых есть подпункты, что бы не городить промежуточные страницы разделов.Понимаю, что конструкция должна быть примерно такой:
&tplStart=
ЕСЛИ КОНТЕЙНЕР ТО=`@INLINE <li> [[+menutitle]] [[+wrapper]]</li>`
В ПРОТИВНОМ=`@INLINE <li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`
Но как это реализовать не знаю.Я писал уже об этом, извините, что дублирую но решения так и не придумал.
Комментарии: 24
Почему нельзя сделать так?
&tplStart=`@INLINE <li> <span> [[+menutitle]] </span> [[+wrapper]]</li>`
Тогда конечно ссылка пропадёт, но пропадает она у всех
У кого это, «у всех»?
&tplStart работает только для корневых пунктов меню, у остальных должен работать параметр &tpl.
А, вижу, ты дописал в топик про потомков. Тогда да, или проверять плейсхолдер [[+children]], или отключать ссылку на javascript — что быстрее и, по моему, правильнее.
&tplStart работает только для корневых пунктов меню, у остальных должен работать параметр &tpl.
А, вижу, ты дописал в топик про потомков. Тогда да, или проверять плейсхолдер [[+children]], или отключать ссылку на javascript — что быстрее и, по моему, правильнее.
Я указываю несколько родителей i.shotnes.com/gVb7FKP2 указывая &parents=`4, 8, 13, 51`
Получается у каждого начального элемента свой &tplStart
Получается у каждого начального элемента свой &tplStart
Подскажи пожалуйста, как нибудь по простому можно его проверить, что бы вот такое реализовать:
ЕСЛИ КОНТЕЙНЕР ТО=`@INLINE <li> [[+menutitle]] [[+wrapper]]</li>`
В ПРОТИВНОМ=`@INLINE <li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`
А то мод сниппета я точно не сделаю :)
*isfolder:is=`1`:then=`true`:else=`false` в чанке или аналогичное условие в prepareSnippet
&tplStart=`@INLINE [[*isfolder:is=`1`:then=`<li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`:else=`<li> [[+menutitle]] [[+wrapper]]</li>`]]`
Работает, но почему тосчитает всё папками
Так ты в контейнере и вызываешь, и условие проверяешь для isfolder текущего документа.
docs.modx.pro/components/pdotools/general-settings — обрати внимание на картинку с Бартом.
docs.modx.pro/components/pdotools/general-settings — обрати внимание на картинку с Бартом.
В очередной раз Спасибо! :)
Надо было убрать в чанк
Надо было убрать в чанк
[[+isfolder:is=`1`:then=`<li> <a> [[+menutitle]] </a> [[+wrapper]]</li>`:else=`<li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`]]
И всё заработало как надо :)
Расшифрую, что сказал Василий. Перед isfolder нужно ставить "+", а не звездочку.
нет, так вообще не работает :)
Ну так Василий же написал, что в @INLINE фильтры работать не будут. А я подсказал, что в чанке нужно поставить + вместо звездочки.
Комментарии нужно читать внимательнее.
Комментарии нужно читать внимательнее.
и убрать @INLINE :)
подскажите плиз что не так?
мне не нужна ссылка у родителя
мне не нужна ссылка у родителя
[[pdoMenu?
&parents=`0`
&level=`2`
&displayStart=`1`
&tplStart=`@INLINE <li> <span> [[+menutitle]] </span> [[+wrapper]]</li>`
&tplOuter=`@INLINE <ul class="sf-menu">[[+wrapper]]</ul>`
&tpl=`@INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]`
&tplHere=`@INLINE <li class="active"><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]`
&tplParentRow=`@INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a><ul>[[+wrapper]]</ul>`
&tplInner=`@INLINE <li>[[+wrapper]]`
&tplParentRowHere=`@INLINE <li class="active"><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a><ul>[[+wrapper]]</ul>`
&tplParentRowActive=`@INLINE <li class="active"><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a><ul>[[+wrapper]]</ul>`
]]
Убрать ссылку в tplParentRow.
блин)
спасибо
спасибо
а если в меню контейнер есть?
Вот так выведет пункт контейнер без ссылки на родителя:
&tplParentRow=`@INLINE <li><span>[[+menutitle]]</span><ul>[[+wrapper]]</ul>`
Или я не так понял задачу =)
так ссылка пропадет у всех родителей не зависимо контейнер там или нет
а нужно чтобы если контейнер то ссылка оставалась
а нужно чтобы если контейнер то ссылка оставалась
Тогда у каких родителей не должно быть ссылки, если tplParentRow это чанк оформления пункта контейнера (родителя)?
Приводи код структуры меню, где чего не должно быть, а то так долго можно гадать)
Приводи код структуры меню, где чего не должно быть, а то так долго можно гадать)
контейнер в смысле ссылка на страницу контейнер
zulus.pp.ua/
«услуги» ведет на страницу контейнер а «статьи» на обычную страницу
нужно чтобы на контейнер осталась а на обычные нет
zulus.pp.ua/
«услуги» ведет на страницу контейнер а «статьи» на обычную страницу
нужно чтобы на контейнер осталась а на обычные нет
Думаю тут проще всего проверкой сделать:
{if $id == 4}<span>{$pagetitle}</span>{else}<a href="{$link}" {$attributes}>{$menutitle}</a>{/if}
Где 4 это id страницы «статьи».
клас спасибо работает )
а id через запятую там можно будет перечислять если еще пункты меню добавятся?
а id через запятую там можно будет перечислять если еще пункты меню добавятся?
Да, конечно
{if $id in [1, 2, 3, 4]}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.