PdoMenu и тип ресурса "Ссылка" - криво работает

Всем добрый день. Прошу помощи в головоломке.

Проблема в следующем:
1. Меню имеет стандартную структуру: Категория — Подкатегории (3 штуки)

Обо мне
Образование — Учителя — Достижения

2. На уровне «Обо мне» никакого уникального текста нет, т.е. нужно сразу направлять на «Образование». С этим справлялся тип ресурса «Ссылка».
3. Но, когда я перевел сайт на pdoMenu, в том числе для того, чтобы корректно и без извращений добавлялся класс активного меню в родителя, то этот самый «класс в родителе» стал вести себя криво.
4. Если кликнуть на «Обо мне», то все корректно, у меня выделена категория «Обо мне» и подкатегория «Образование». А вот если перейти на подкатегорию «Учителя», то страница открывается, а вот все подменю исчезает, как будто родитель уже не «Обо мне».

Получается раздел «Обо мне» уже не родитель для «Учителя». Так как «Обо мне» слито с подкатегорией.
Кто-то сталкивался с подобным? Куда копать, кроме редиректов через htaccess, и «вид ресурса» — Символическая ссылка?
Валерий
13 октября 2023, 10:17
modx.pro
358
0

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

Денис Усманов
13 октября 2023, 10:21
0
Покажите вызов pdoMenu то, а то не совсем понятно, что не так…
    Валерий
    13 октября 2023, 10:32
    0
    Сейчас попробую.
    Вызов меню. У меня оформление меню вставляется через чанки, но сюда для упрощения (надеюсь) добавил само содержимое чанков. По этому так оформлено, на сайте все корректно поставлено:
    <nav class="menu">
        <a class="icon-home" title="Вернуться на главную" aria-label="Вернуться на главную" href="/"><svg viewBox="-4.5 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M19.469 12.594l3.625 3.313c0.438 0.406 0.313 0.719-0.281 0.719h-2.719v8.656c0 0.594-0.5 1.125-1.094 1.125h-4.719v-6.063c0-0.594-0.531-1.125-1.125-1.125h-2.969c-0.594 0-1.125 0.531-1.125 1.125v6.063h-4.719c-0.594 0-1.125-0.531-1.125-1.125v-8.656h-2.688c-0.594 0-0.719-0.313-0.281-0.719l10.594-9.625c0.438-0.406 1.188-0.406 1.656 0l2.406 2.156v-1.719c0-0.594 0.531-1.125 1.125-1.125h2.344c0.594 0 1.094 0.531 1.094 1.125v5.875z"></path></svg></a>
        [[!pdoMenu?
            &parents=`-1,-29,-44,-168,-775`
            &level=`2`
            &includeTVs=`icon_prev,class_item`
            &tplOuter=`<ul class="menu__top-level top-level">[[+wrapper]]</ul>`
            &tpl=`<li class="top-level__item"><a class="top-level__link" href="[[+link]]" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
            &tplHere=`<li class="top-level__item top-level__item_current active"><a class="top-level__link" href="[[+link]]" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
            &tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
            &tplParentRowHere=`<li class="top-level__item active top-level__[[+classnames]] "><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
            &tplParentRowActive=`<li class="top-level__item active top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
            &tplInner=`<ul class="menu__second-level [[+classnames]]">[[+wrapper]]</ul>`
            &tplInnerRow=`<li class="second-level__item second-level__[[+classnames]] second-level__item_[[+icon_prev]]"><a href="[[+link]]" class="second-level__link" [[+attributes]]><span class="second-level__icon">[[+class_item]]</span>
            <span class="second-level__title">[[+menutitle]]</span></a></li>[[+wrapper]]`
            &tplInnerHere=`<li class="second-level__item second-level__[[+classnames]] second-level__item_[[+icon_prev]]"><a href="[[+link]]" class="second-level__link" [[+attributes]]><span class="second-level__icon">[[+class_item]]</span><span class="second-level__title">[[+menutitle]]</span></a>[[+wrapper]]</li>`
            &hereClass=`item_current`
            &firstClass=``
            &lastClass=``
        ]]
    </nav>
      Валерий
      13 октября 2023, 10:34
      0
      Ну и если здесь можно временно разместить ссылку, то вот так это на сайте — mariadolgopolova.ru/publikatsii/stati/

      Если просто «Публикации», то переход на «Статьи» нормальный, а вот если перейти на «Видео, интервью и т.д», то меню пропадает. Точнее, категория «Публикации» перестает считаться активной.
        Денис Усманов
        13 октября 2023, 10:45
        0
        Скорее всего, проблема тут:
        &tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
        &tplParentRowHere=`<li class="top-level__item active top-level__[[+classnames]] "><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
        &tplParentRowActive=`<li class="top-level__item active top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`

        У Вас [[+wrapper]] за пределами пункта li, попробуйте заменить на:
        &tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
        &tplParentRowHere=`<li class="top-level__item active top-level__[[+classnames]] "><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
        &tplParentRowActive=`<li class="top-level__item active top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
          Валерий
          13 октября 2023, 10:53
          0
          Не, к сожалению, не так просто с этим. Сам wrapper ведь не влияет на присвоение классов. А там именно класс активности не присваивается родительскому пункту, если переходить по подкатегориям.

          Такое ощущение, что я какой-то из чанков не указал вовсе. Или не добавил в него класс активности.
            Денис Усманов
            13 октября 2023, 10:58
            0
            На вид, всё нормально

              Валерий
              13 октября 2023, 11:07
              0
              Вы не туда зашли. Я вас запутал, признаю. В примере использовал раздел «Обо мне», но когда давал ссылку, там написал, что нужно смотреть в «Публикации». Попробуйте там перейти на любую подкатегорию, например «Видео, интервью...»
                Денис Усманов
                13 октября 2023, 11:13
                0
                С выводом pdoMenu в целом, всё в порядке, дело в этом:


                Попробовал сделать так:


                И всё встало на свои места.
                  Валерий
                  13 октября 2023, 12:12
                  0
                  Вы просто добавили видимость блоку :) Конечно, оно на место встанет, CSS-то насторено.
                  Суть в том, что пункт «Публикации» должен иметь класс «top-level__item_current», который ему присваивается, если pdoMenu корректно отлеживает родителя.

                  В общем, дело не в CSS, а чисто в выводе на уровне php.
              Валерий
              13 октября 2023, 11:11
              0
              Только что перепроверил когда и как выдаются параметры оформления. Там реально получается, что «Публикации» не считаются родителем «Видео, интервью..» (хотя это не так), если «Публикации» являются ссылкой на «Статьи».
              Либо pdoMenu такое не умеет отслеживать, либо есть какой-то недокументированный параметр с оформлением подобных пунктов :(
                Денис Усманов
                13 октября 2023, 11:23
                0
                В общем то, вроде надо у параметра:
                &tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`

                Добавить [[+classnames]]:
                &tplParentRow=`<li class="top-level__item top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
                  Валерий
                  13 октября 2023, 12:22
                  0
                  Неа, не хочет pdoMenu видеть в «Публикациях» родителя :)
                  Странное поведение. Нашел в в старых своих заметках от 2016 года аж такой же вопрос, тогда мне никто так и не ответил. Похоже, не лечится, придется редиректить, плохо, что на Таймвеб этот редирект не совсем корректно отрабатывает из-за специфики url'а
                    Валерий
                    13 октября 2023, 12:22
                    +1
                    В любом случае спасибо за участие. Если до конца дня найду выход, напишу сюда, чтобы осталось на будущее.
                      Валерий
                      13 октября 2023, 12:52
                      +1
                      Нашел-таки в документации параметр:
                      &useWeblinkUrl=`0`
                      Поставил его в 0 и все заработало. Не супер-очевидно по описанию в документации было. Ну да ладно, работает теперь.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          15