Как в pdoMenu запретить выводить ссылку на раздел?

Всем привет. Подскажите пожалуйста как решить такую проблему:

Вывожу меню из нескольких разделов 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>`
Но как это реализовать не знаю.

Я писал уже об этом, извините, что дублирую но решения так и не придумал.
Михаил
19 октября 2014, 07:30
modx.pro
1
3 838
0

Комментарии: 24

Василий Наумкин
19 октября 2014, 11:36
0
Почему нельзя сделать так?
&tplStart=`@INLINE <li> <span> [[+menutitle]] </span> [[+wrapper]]</li>`
    Михаил
    19 октября 2014, 11:40
    0
    Тогда конечно ссылка пропадёт, но пропадает она у всех
      Василий Наумкин
      19 октября 2014, 11:44
      0
      У кого это, «у всех»?
      &tplStart работает только для корневых пунктов меню, у остальных должен работать параметр &tpl.

      А, вижу, ты дописал в топик про потомков. Тогда да, или проверять плейсхолдер [[+children]], или отключать ссылку на javascript — что быстрее и, по моему, правильнее.
        Михаил
        19 октября 2014, 11:48
        0
        Я указываю несколько родителей i.shotnes.com/gVb7FKP2 указывая &parents=`4, 8, 13, 51`
        Получается у каждого начального элемента свой &tplStart
          Михаил
          19 октября 2014, 12:01
          0
          Подскажи пожалуйста, как нибудь по простому можно его проверить, что бы вот такое реализовать:
          ЕСЛИ КОНТЕЙНЕР ТО=`@INLINE <li>  [[+menutitle]]  [[+wrapper]]</li>` 
          В ПРОТИВНОМ=`@INLINE <li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`
          А то мод сниппета я точно не сделаю :)
            Максим Кузнецов
            19 октября 2014, 12:19
            0
            *isfolder:is=`1`:then=`true`:else=`false` в чанке или аналогичное условие в prepareSnippet
              Михаил
              19 октября 2014, 12:43
              0
              &tplStart=`@INLINE [[*isfolder:is=`1`:then=`<li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`:else=`<li>  [[+menutitle]]  [[+wrapper]]</li>`]]`
              Работает, но почему тосчитает всё папками
                Василий Наумкин
                19 октября 2014, 12:48
                0
                Так ты в контейнере и вызываешь, и условие проверяешь для isfolder текущего документа.

                docs.modx.pro/components/pdotools/general-settings — обрати внимание на картинку с Бартом.
                  Михаил
                  19 октября 2014, 16:24
                  0
                  В очередной раз Спасибо! :)
                  Надо было убрать в чанк
                  [[+isfolder:is=`1`:then=`<li> <a> [[+menutitle]] </a> [[+wrapper]]</li>`:else=`<li> <a href="[[+link]]"> [[+menutitle]] </a> [[+wrapper]]</li>`]]
                  И всё заработало как надо :)
                  Сергей Шлоков
                  19 октября 2014, 14:27
                  0
                  Расшифрую, что сказал Василий. Перед isfolder нужно ставить "+", а не звездочку.
                    Михаил
                    19 октября 2014, 16:16
                    0
                    нет, так вообще не работает :)
                      Сергей Шлоков
                      19 октября 2014, 17:44
                      0
                      Ну так Василий же написал, что в @INLINE фильтры работать не будут. А я подсказал, что в чанке нужно поставить + вместо звездочки.
                      Комментарии нужно читать внимательнее.
                      Михаил
                      19 октября 2014, 16:24
                      0
                      и убрать @INLINE :)
          Игорь
          23 ноября 2019, 17:42
          0
          подскажите плиз что не так?
          мне не нужна ссылка у родителя
          [[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>`
          ]]
            Андрей
            23 ноября 2019, 18:12
            1
            0
            Убрать ссылку в tplParentRow.
              Игорь
              23 ноября 2019, 18:47
              0
              блин)
              спасибо
                Игорь
                23 ноября 2019, 18:53
                0
                а если в меню контейнер есть?
                  Андрей
                  23 ноября 2019, 19:27
                  1
                  +1
                  Вот так выведет пункт контейнер без ссылки на родителя:
                  &tplParentRow=`@INLINE <li><span>[[+menutitle]]</span><ul>[[+wrapper]]</ul>`
                  Или я не так понял задачу =)
                    Игорь
                    23 ноября 2019, 19:39
                    0
                    так ссылка пропадет у всех родителей не зависимо контейнер там или нет
                    а нужно чтобы если контейнер то ссылка оставалась
                      Андрей
                      23 ноября 2019, 19:53
                      0
                      Тогда у каких родителей не должно быть ссылки, если tplParentRow это чанк оформления пункта контейнера (родителя)?

                      Приводи код структуры меню, где чего не должно быть, а то так долго можно гадать)
                        Игорь
                        23 ноября 2019, 20:02
                        0
                        контейнер в смысле ссылка на страницу контейнер
                        zulus.pp.ua/
                        «услуги» ведет на страницу контейнер а «статьи» на обычную страницу
                        нужно чтобы на контейнер осталась а на обычные нет
                          Андрей
                          23 ноября 2019, 20:25
                          1
                          +1
                          Думаю тут проще всего проверкой сделать:
                          {if $id == 4}<span>{$pagetitle}</span>{else}<a href="{$link}" {$attributes}>{$menutitle}</a>{/if}
                          Где 4 это id страницы «статьи».
                            Игорь
                            23 ноября 2019, 20:57
                            0
                            клас спасибо работает )
                            а id через запятую там можно будет перечислять если еще пункты меню добавятся?
                              Андрей
                              23 ноября 2019, 21:25
                              0
                              Да, конечно
                              {if $id in [1, 2, 3, 4]}
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              24