wayfinder, phx и слайдер
Всем привет. Нужна помощь.
Есть такая конструкция для горизонтального меню (табы слайдера): [[!Wayfinder? &startId=`1` &includeDocs=`2,3,4,5,6`]], есть её «дополнение» для вертикального меню (вертикальное меню в слайдере): [[$[[*id:is=`2`:then=`123`]]]] (в 123 живёт WF для вертикального меню отдельно взятой табы). Когда идёт переход по пункту меню вертикальному, теряется фокус "...id:is=.....", так как id становится другой и вертикальное меню пропадает, пока не жахнешь по какой-нибудь табе слайдера. Кстати, при переходе по любому пункту другого меню (не слайдера), разумеется, вертикальное меню слайдера тоже пропадает.
Вопрос: Как бы не терять этот фокус — сделать, чтобы вертикальное меню оставалось, а не пропадало?
П.С.
Уверен, есть и вообще другой способ организации меню слайдера, но его я не думал.
Есть такая конструкция для горизонтального меню (табы слайдера): [[!Wayfinder? &startId=`1` &includeDocs=`2,3,4,5,6`]], есть её «дополнение» для вертикального меню (вертикальное меню в слайдере): [[$[[*id:is=`2`:then=`123`]]]] (в 123 живёт WF для вертикального меню отдельно взятой табы). Когда идёт переход по пункту меню вертикальному, теряется фокус "...id:is=.....", так как id становится другой и вертикальное меню пропадает, пока не жахнешь по какой-нибудь табе слайдера. Кстати, при переходе по любому пункту другого меню (не слайдера), разумеется, вертикальное меню слайдера тоже пропадает.
Вопрос: Как бы не терять этот фокус — сделать, чтобы вертикальное меню оставалось, а не пропадало?
П.С.
Уверен, есть и вообще другой способ организации меню слайдера, но его я не думал.
Комментарии: 34
я бы использовал для слайдера migx
Это Вы про контент, полагаю. Контент я ещё не решил, как подгружать и MIGX, да, в списке рассматриваемого. Речь о меню, а не контенте.
[[*id: — ну вы тут id текущего документа меняете
попробуйте [[+id]], если я правильно понимаю суть вашего меню)
всмысле где вызывается [[$[[*id:is=`2`:then=`123`]]]], в шаблоне для wf?
попробуйте [[+id]], если я правильно понимаю суть вашего меню)
всмысле где вызывается [[$[[*id:is=`2`:then=`123`]]]], в шаблоне для wf?
Нет. WF вызывается в нём (wf для каждой табы свой), а не он в WF.
или как в шаблоне это меню выводится?
можно так тогда:
[[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]]
можно так тогда:
[[$[[*id:is=`2`:or:if=`[[*parent]]`:is=`2`:then=`123`]]]]
Да, я — гений, Вы — тоже )) В смысле, что я про подобную конструкцию и спрашивал — правильный ход мысли был, просто не дошёл до изучения их, а времени рыть сейчас, как я всегда делаю, нет, а Вы, что точно поймали проблему. Спасибо, Сергей большое, это оно)) Сейчас потестирую «разных позах и отпишусь» в течение минут десяти.
я прост не понимаю даже что нужно)
есть параметры такие: *id — текущий документ, *parent — родитель текущего документа
еще есть сниппет ultimateparent — самый первый родитель документа)
есть параметры такие: *id — текущий документ, *parent — родитель текущего документа
еще есть сниппет ultimateparent — самый первый родитель документа)
Всё чётко, всё отлично, то, что надо!)) Один только штрих остался вроде бы — когда мы находимся ВНЕ табов это меню, соответственно, пропадает. Как его можно удержать?
ну если оно всегда должно быть, нужно просто его всегда выводить, без условий, нет?
Нет, там же ещё WF есть основного меню, поэтому есть условия — инклюдим нужные папки с ресурсами в это второе меню (сами папки — меню слайдера горизонтальное), жмаки на пункты которого выводят вертикальное меню (ресурсы папок для пунктов горизонтального меню). И в случае, когда нет фокуса на заинклюженных id, нет и вертикального меню = логично всё. Вытекающий вопрос — как зафокусить конкретно желаемую вертикальную менюху, когда находимся на любом другом id, кроме тех, которые прописаны в инклюде WF слайдера.
а можно код глянуть полностью что от чего зависит? и может ссылка есть на сайт?
я просто в ступоре от таких нагромождений)
если есть такая конкретика, не проще статично сделать в html коде? а для вывода названий, например, использовать fastfield
я просто в ступоре от таких нагромождений)
если есть такая конкретика, не проще статично сделать в html коде? а для вывода названий, например, использовать fastfield
<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>
<ляляля>
контент страницы
Слайдер обычный — горизонтальные табы+вертикальное меню+контеное поле.
По Вашему условию, всё прекрасно и как надо работает. Проблема только одна осталась — когда мы находимся на любой странице сайта НЕ входящей в 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.
Ну, тогда вообще можно было бы оставить html и накатить везде [[~id страницы]] — как-то не очень.
Вообще не понимаю, почему else и isnt не фурычат. То есть отрабатывает, конечно, но криво и не так.
И надо доп условие, чтобы это вертикальное меню было всегда на месте вне зависимости от страницы нахождения пользователя, а не только страницах с id 2,3,4,5,6.я не понимаю тогда зачем условие чтобы оно было на страницах с id 2,3,4,5,6.? почему не сделать без условия вывод?
Потому, что для стр 2 своё вертикал меню, для стр 3 своё вертикал меню, для стр 4 своё вертикал меню, для стр 5 своё вертикал меню, для стр 6 своё вертикал меню, а для всех остальных оно одинаковое, одно из этих пяти, какое я укажу.
[[*id:ne=`1`:and:ne=`2`:then=`menu для остальных`]]
Помнится, у меня не отрабатывало :ne, но я чуть иную конструкцию применял… А то, что в этот список входят потомки пунктов 2, 3, 4 итд — не только п 1, но и п. 1_1 итп, не имеет значения разве?
тут был мой кодобред
Да, имеет. Теперь всё почти Ок, но при клике на вертикальное меню «догружает» снизу ещё одно вертикал меню.
пропиши еще с родителем условие ( parent )
Ну, да, так и начал делать, но что-то всё кодобред один выходит. Нет ли у Вас ссылочки на толковый рус мануал?
.
А может даже и не то это: [[*id:ne=`1`:and:ne=`2`:then=`menu для остальных`]], так как выводит постоянно `menu для остальных` и уже под ним то, которое должно быть.
ЕСТЬ КОНТАКТ!!! Я одолел его!!! )))))))
Как я предположил, 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 слайдера, в данном случае, в силу некоторой специфики построения дерева ресурсов, она достаточна.
Так что, так или иначе — спасибо за помощь, Сергей.
То есть, по факту, вот тут: modx.pro/help/762/#comment-6785, Вы всё верно сказали и вся «проблема» крылась в моём незнании, как отрабатывается условие parent.
И хотя такая конструкция оставляет брешь в случае, если мы находимся в parent отлчном от любого parent слайдера, в данном случае, в силу некоторой специфики построения дерева ресурсов, она достаточна.
Так что, так или иначе — спасибо за помощь, Сергей.
пожалуеста
да парент только текущего родителя,
выше я писал modx.pro/help/762/#comment-6737
что есть еще сниппет ultimateparent — вот он цепляет всех родителей, его из репризитория скачать можно
да парент только текущего родителя,
выше я писал modx.pro/help/762/#comment-6737
что есть еще сниппет ultimateparent — вот он цепляет всех родителей, его из репризитория скачать можно
Вот с ним и ковыряюсь. Бродят мысли, что придётся конструкцию несколько переделать, т.к. оставшаяся проблема, судя по всему, имеет корень в «любой другой 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 (и глубжее) итд условия работать не будут.
То есть, если мы имеем ресурсы 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 (и глубжее) итд условия работать не будут.
[[Ultimateparent:is=`2`:then=`1123`]] ( название сниппета возможно другое, не помню точно )
ультимайт парент, с вложенностью поможет, а так же будет работать и на странице с id = 2
ультимайт парент, с вложенностью поможет, а так же будет работать и на странице с id = 2
Это при клике на вертикаль такое замещение происходит. И это логично, судя по всему, т.к., когда мы кликаем на пункт вертикали, тамошние пункты так же не равно 1,2,3 итд => else. А так как у нас в следующих условиях сказано parent для 1,2,3, идёт подгрузка родной вертикали.
про phx — старенький перевод мануала тут.
мне все сложно понять, что вы там намутили))
делайте проще:
1. берете листок бумаги.
2. слева «да», справа «нет».
3. выписываете условия при которых должно показываться или нет.
4. переводите в код.
мне все сложно понять, что вы там намутили))
делайте проще:
1. берете листок бумаги.
2. слева «да», справа «нет».
3. выписываете условия при которых должно показываться или нет.
4. переводите в код.
Попробую от печки)
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. Перечитал написанное, решил завтра сходить к психиатру)
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. Перечитал написанное, решил завтра сходить к психиатру)
Да, старенький, я знаю его, даже более подробный есть. Хм, добавлял его точно, а в закладках не могу найти — странно… В общем — я даже метод тыка уже поюзал — не хочет он меня))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.