wayfinder, phx и слайдер

Всем привет. Нужна помощь.

Есть такая конструкция для горизонтального меню (табы слайдера): [[!Wayfinder? &startId=`1` &includeDocs=`2,3,4,5,6`]], есть её «дополнение» для вертикального меню (вертикальное меню в слайдере): [[$[[*id:is=`2`:then=`123`]]]] (в 123 живёт WF для вертикального меню отдельно взятой табы). Когда идёт переход по пункту меню вертикальному, теряется фокус "...id:is=.....", так как id становится другой и вертикальное меню пропадает, пока не жахнешь по какой-нибудь табе слайдера. Кстати, при переходе по любому пункту другого меню (не слайдера), разумеется, вертикальное меню слайдера тоже пропадает.

Вопрос: Как бы не терять этот фокус — сделать, чтобы вертикальное меню оставалось, а не пропадало?

П.С.
Уверен, есть и вообще другой способ организации меню слайдера, но его я не думал.
СикретНаме
23 февраля 2013, 13:00
modx.pro
1 689
0

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

Галич Сергей
23 февраля 2013, 17:43
0
я бы использовал для слайдера migx
    СикретНаме
    23 февраля 2013, 17:45
    0
    Это Вы про контент, полагаю. Контент я ещё не решил, как подгружать и MIGX, да, в списке рассматриваемого. Речь о меню, а не контенте.
    Галич Сергей
    23 февраля 2013, 18:04
    0
    [[*id: — ну вы тут id текущего документа меняете
    попробуйте [[+id]], если я правильно понимаю суть вашего меню)

    всмысле где вызывается [[$[[*id:is=`2`:then=`123`]]]], в шаблоне для wf?
      СикретНаме
      23 февраля 2013, 18:14
      0
      Нет. WF вызывается в нём (wf для каждой табы свой), а не он в WF.
      Галич Сергей
      23 февраля 2013, 18:14
      0
      или как в шаблоне это меню выводится?
      можно так тогда:
      [[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]]
        СикретНаме
        23 февраля 2013, 18:19
        0
        Да, я — гений, Вы — тоже )) В смысле, что я про подобную конструкцию и спрашивал — правильный ход мысли был, просто не дошёл до изучения их, а времени рыть сейчас, как я всегда делаю, нет, а Вы, что точно поймали проблему. Спасибо, Сергей большое, это оно)) Сейчас потестирую «разных позах и отпишусь» в течение минут десяти.
        Галич Сергей
        23 февраля 2013, 18:17
        0
        я прост не понимаю даже что нужно)
        есть параметры такие: *id — текущий документ, *parent — родитель текущего документа
        еще есть сниппет ultimateparent — самый первый родитель документа)
          СикретНаме
          23 февраля 2013, 18:55
          0
          Всё чётко, всё отлично, то, что надо!)) Один только штрих остался вроде бы — когда мы находимся ВНЕ табов это меню, соответственно, пропадает. Как его можно удержать?
          Галич Сергей
          23 февраля 2013, 18:56
          0
          ну если оно всегда должно быть, нужно просто его всегда выводить, без условий, нет?
            СикретНаме
            23 февраля 2013, 19:06
            0
            Нет, там же ещё WF есть основного меню, поэтому есть условия — инклюдим нужные папки с ресурсами в это второе меню (сами папки — меню слайдера горизонтальное), жмаки на пункты которого выводят вертикальное меню (ресурсы папок для пунктов горизонтального меню). И в случае, когда нет фокуса на заинклюженных id, нет и вертикального меню = логично всё. Вытекающий вопрос — как зафокусить конкретно желаемую вертикальную менюху, когда находимся на любом другом id, кроме тех, которые прописаны в инклюде WF слайдера.
              Галич Сергей
              23 февраля 2013, 19:10
              0
              а можно код глянуть полностью что от чего зависит? и может ссылка есть на сайт?

              я просто в ступоре от таких нагромождений)
              если есть такая конкретика, не проще статично сделать в html коде? а для вывода названий, например, использовать fastfield
                СикретНаме
                23 февраля 2013, 19:14
                0
                <div class="1">
                [[!Wayfinder? &startId=`1` &includeDocs=`2,3,4,5,6`]] - горизонтальные вкладки слайдера
                <div class="11">
                <div class="111">
                <nav>
                вертикальные вкладки слайдера
                [[$[[*id:is=`...]] -

                [[$[[*id:is=`...]]
                [[$[[*id:is=`...]]
                [[$[[*id:is=`...]]
                [[$[[*id:is=`...]]
                </nav>
                <div class="img">
                <div class="b">
                контент слайдера
                <img src="фото слайдера" alt="" /><span class=""> очень интересный текст.... </span></div>
                <ляляля>
                контент страницы
                Слайдер обычный — горизонтальные табы+вертикальное меню+контеное поле.
                  СикретНаме
                  23 февраля 2013, 19:48
                  0
                  По Вашему условию, всё прекрасно и как надо работает. Проблема только одна осталась — когда мы находимся на любой странице сайта НЕ входящей в includeDocs — [[!Wayfinder? &startId=`1` &includeDocs=`2,3,4,5,6`]] — вертикальное меню пропадает вообще (ну, это и логично, так оно генерится из чанка, который подгружается в зависимости от условия [[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]] — в данном примере, wf для вертикального меню страницы с id 2 находится в чанке 123). И надо доп условие, чтобы это вертикальное меню было всегда на месте вне зависимости от страницы нахождения пользователя, а не только страницах с id 2,3,4,5,6.
                    СикретНаме
                    23 февраля 2013, 19:53
                    0
                    Ну, тогда вообще можно было бы оставить html и накатить везде [[~id страницы]] — как-то не очень.
                СикретНаме
                23 февраля 2013, 23:42
                0
                Вообще не понимаю, почему else и isnt не фурычат. То есть отрабатывает, конечно, но криво и не так.
                  Галич Сергей
                  24 февраля 2013, 13:06
                  0
                  И надо доп условие, чтобы это вертикальное меню было всегда на месте вне зависимости от страницы нахождения пользователя, а не только страницах с id 2,3,4,5,6.
                  я не понимаю тогда зачем условие чтобы оно было на страницах с id 2,3,4,5,6.? почему не сделать без условия вывод?
                    СикретНаме
                    24 февраля 2013, 15:44
                    0
                    Потому, что для стр 2 своё вертикал меню, для стр 3 своё вертикал меню, для стр 4 своё вертикал меню, для стр 5 своё вертикал меню, для стр 6 своё вертикал меню, а для всех остальных оно одинаковое, одно из этих пяти, какое я укажу.
                      Галич Сергей
                      24 февраля 2013, 15:55
                      0
                      [[*id:ne=`1`:and:ne=`2`:then=`menu для остальных`]]
                        СикретНаме
                        24 февраля 2013, 16:06
                        0
                        Помнится, у меня не отрабатывало :ne, но я чуть иную конструкцию применял… А то, что в этот список входят потомки пунктов 2, 3, 4 итд — не только п 1, но и п. 1_1 итп, не имеет значения разве?
                          СикретНаме
                          24 февраля 2013, 16:12
                          0
                          тут был мой кодобред
                            СикретНаме
                            24 февраля 2013, 16:19
                            0
                            Да, имеет. Теперь всё почти Ок, но при клике на вертикальное меню «догружает» снизу ещё одно вертикал меню.
                              Галич Сергей
                              24 февраля 2013, 17:02
                              0
                              пропиши еще с родителем условие ( parent )
                                СикретНаме
                                24 февраля 2013, 21:00
                                0
                                Ну, да, так и начал делать, но что-то всё кодобред один выходит. Нет ли у Вас ссылочки на толковый рус мануал?
                                СикретНаме
                                24 февраля 2013, 21:56
                                0
                                А может даже и не то это: [[*id:ne=`1`:and:ne=`2`:then=`menu для остальных`]], так как выводит постоянно `menu для остальных` и уже под ним то, которое должно быть.
                                  СикретНаме
                                  26 февраля 2013, 10:14
                                  0
                                  ЕСТЬ КОНТАКТ!!! Я одолел его!!! )))))))
                                    СикретНаме
                                    26 февраля 2013, 10:34
                                    0
                                    Как я предположил, parent не цепляет глубже/выше ne/is, чем нам один уровень. Следом почти сразу стало очевидно, что для условия [[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]], не хватает условия [[$[[*parent:is=`0`:then=`321`]]]], а вот это условие [[*id:ne=`1`:and:ne=`2`:then=`menu для остальных`]] или вообще не нужно или требует доп условия (думаю, именно не нужно).

                                    То есть, по факту, вот тут: modx.pro/help/762/#comment-6785, Вы всё верно сказали и вся «проблема» крылась в моём незнании, как отрабатывается условие parent.

                                    И хотя такая конструкция оставляет брешь в случае, если мы находимся в parent отлчном от любого parent слайдера, в данном случае, в силу некоторой специфики построения дерева ресурсов, она достаточна.

                                    Так что, так или иначе — спасибо за помощь, Сергей.

                                      Галич Сергей
                                      26 февраля 2013, 16:47
                                      0
                                      пожалуеста

                                      да парент только текущего родителя,
                                      выше я писал modx.pro/help/762/#comment-6737
                                      что есть еще сниппет ultimateparent — вот он цепляет всех родителей, его из репризитория скачать можно
                                        СикретНаме
                                        26 февраля 2013, 18:37
                                        0
                                        Вот с ним и ковыряюсь. Бродят мысли, что придётся конструкцию несколько переделать, т.к. оставшаяся проблема, судя по всему, имеет корень в «любой другой parent, кроме `0` и/или `1,2,3`.

                                        То есть, если мы имеем ресурсы 1,2,3,4,5,6,7,8,9, где каждое чётное число есть контейнер с детьми, которые в свою очередь есть тоже контейнер с детьми, а условия ( [[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]] и [[$[[*parent:is=`0`:then=`321`]]]] ), мы получаем проблему всех остальных парентов, кроме 2 и 0. То есть для документов с парент 2_2, 4_2 (и глубжее) итд условия работать не будут.
                                          Галич Сергей
                                          26 февраля 2013, 21:52
                                          0
                                          [[Ultimateparent:is=`2`:then=`1123`]] ( название сниппета возможно другое, не помню точно )
                                          ультимайт парент, с вложенностью поможет, а так же будет работать и на странице с id = 2
                            СикретНаме
                            24 февраля 2013, 23:20
                            0
                            Это при клике на вертикаль такое замещение происходит. И это логично, судя по всему, т.к., когда мы кликаем на пункт вертикали, тамошние пункты так же не равно 1,2,3 итд => else. А так как у нас в следующих условиях сказано parent для 1,2,3, идёт подгрузка родной вертикали.
                              Галич Сергей
                              25 февраля 2013, 03:28
                              0
                              про phx — старенький перевод мануала тут.

                              мне все сложно понять, что вы там намутили))

                              делайте проще:
                              1. берете листок бумаги.
                              2. слева «да», справа «нет».
                              3. выписываете условия при которых должно показываться или нет.
                              4. переводите в код.
                                СикретНаме
                                25 февраля 2013, 03:58
                                0
                                Попробую от печки)

                                1. Есть сайт. У него два основных меню никак не связанные с п.2.
                                2. На сайте есть слайдер у которого есть горизонтальные (ресурсы контейнеры) и вертикальные (ресурсы контейнеров для горизонтального меню слайдера) меню, а так же поле контента.
                                3. Каждое вертикальное меню зависит от своего пункта горизонтального меню слайдера
                                3. Горизонтальное меню слайдера вывожу WF, указывая при помощи includeDocs, какие ресурсы-контейнеры выводить.
                                4. Вертикальное — при помощи условий.
                                5. [[$[[*id:is=`q`:or:if=`[[*parent]]`:is=`q`:then=`чанк_выводящий вертикальное меню данного пункта горизонтального меню слайдера`]]]].
                                6. На данный момент всё работает как надо, за исключением ситуации, когда мы жмакаем на пункт вертикального меню — подгружается ещё одно вертикальное меню (их становится сразу два) из чанка, который мы указываем тут: [[$[[*id:ne=`q`:and:ne=`w`:and:ne=`e`:and:ne=`r`:and:ne=`t`:then=`чанк, выводящий вертикальное меню которое показывается в случае, если это условие нарушено — если пользователь жмакнул на пункт меню одного из основных меню сайта (см п.1)`]]]]
                                7. Перечитал написанное, решил завтра сходить к психиатру)
                              СикретНаме
                              25 февраля 2013, 03:35
                              0
                              Да, старенький, я знаю его, даже более подробный есть. Хм, добавлял его точно, а в закладках не могу найти — странно… В общем — я даже метод тыка уже поюзал — не хочет он меня))
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                34