Убрать из выборки первый уровень вызова pdoMenu
Приветствую сообщество!
В общем вопрос следующего характера, есть вот такая конструкция, например:
-Главная (id — 1)
-Категория 1 (id — 2)
--Подкатегория 1.1 (Раздел с тикетами) (id — 5)
--Подкатегория 1.2 (Раздел с тикетами) (id — 6)
--Подкатегория 1.3 (обычный документ) (id — 7)
-Категория 2 (id — 3)
--Подкатегория 2.1 (Категория товаров) (id — 8)
--Подкатегория 2.2 (Категория товаров) (id — 9)
--Подкатегория 2.3 (обычный документ) (id — 10)
-Служебные страницы (id — 4)
так вот, смысл в том, что мне надо соорудить меню! Но логика (как хотелось бы, чтобы она работала) должна работать следующим образом:
Дело в том, что как бы я не пытался динамически вызвать сниппет для построения меню, он выводит максимум только так:
--Подкатегория 1.2 (Раздел с тикетами) (id — 6)
То да… однозначно он выводит меню того уровня который мне нужен! Далее… Проблемы продолжаются… Если я есесна перейду в один из созданных тикетов данного подраздела, то вся динами есесна пропадает!
В общем надеюсь, что задача ясна!
П.С.
Чтобы предотвратить наплыв комментов о том, почему бы не использовать жесткое назначение ID для родителя в вызове сниппета, отвечу… НЕ выход! Т.к. при этом теряется динамичность и придется создавать два разных типа шаблонов для одной категории и для другой или шаблоны или чанки городить, без разницы, костыли однозначно не выход!
В общем вопрос следующего характера, есть вот такая конструкция, например:
-Главная (id — 1)
-Категория 1 (id — 2)
--Подкатегория 1.1 (Раздел с тикетами) (id — 5)
--Подкатегория 1.2 (Раздел с тикетами) (id — 6)
--Подкатегория 1.3 (обычный документ) (id — 7)
-Категория 2 (id — 3)
--Подкатегория 2.1 (Категория товаров) (id — 8)
--Подкатегория 2.2 (Категория товаров) (id — 9)
--Подкатегория 2.3 (обычный документ) (id — 10)
-Служебные страницы (id — 4)
так вот, смысл в том, что мне надо соорудить меню! Но логика (как хотелось бы, чтобы она работала) должна работать следующим образом:
- На главной отображается два элемента, тип выбор куда попасть в Категорию 1 или в Категорию 2 (это легко, при помощи pdoTools сделал, допустим, фигня)
- Нажимаю на Подкатегория 1.1 и здесь должно быть только меню этой категории, т.е. так:
--Подкатегория 1.1 (Раздел с тикетами)
--Подкатегория 1.2 (Раздел с тикетами)
--Подкатегория 1.3 (обычный документ) - соответственно во второй категории так же...
Дело в том, что как бы я не пытался динамически вызвать сниппет для построения меню, он выводит максимум только так:
[[pdoMenu?
&parents=`[[*parent]]`
&level=`1`
]]
Т.е. ровно до второго уровня как мне якобы и надо… НО! только если я нахожусь например здесь: --Подкатегория 1.2 (Раздел с тикетами) (id — 6)
То да… однозначно он выводит меню того уровня который мне нужен! Далее… Проблемы продолжаются… Если я есесна перейду в один из созданных тикетов данного подраздела, то вся динами есесна пропадает!
В общем надеюсь, что задача ясна!
П.С.
Чтобы предотвратить наплыв комментов о том, почему бы не использовать жесткое назначение ID для родителя в вызове сниппета, отвечу… НЕ выход! Т.к. при этом теряется динамичность и придется создавать два разных типа шаблонов для одной категории и для другой или шаблоны или чанки городить, без разницы, костыли однозначно не выход!
Комментарии: 8
В parents указывай текущий id страницы.
та емае! :D
Я ж говорю не выход!
Т.к. генерировать надо так:
-Категория 1 (id — 2) — захожу сюда и генерируется меню так:
+ ко всему теряется динамичность, ведь мне надо чтобы меню само генерировалось для обоих категории со своими подкатегориями!
Я ж говорю не выход!
Т.к. генерировать надо так:
-Категория 1 (id — 2) — захожу сюда и генерируется меню так:
--Подкатегория 1.1 (Раздел с тикетами) (id — 5)НО! Если я зайду например в дочерний документ подкатегории:
--Подкатегория 1.2 (Раздел с тикетами) (id — 6)
--Подкатегория 1.3 (обычный документ) (id — 7)
--Подкатегории 1.2 (Раздел с тикетами) (id — 6)то меню начнет генерироваться с учетом её родителя, а именно вот как так:
--Подкатегории 1.2 (Раздел с тикетами) (id — 6)И все, больше в меню по идее ничего не будет!
+ ко всему теряется динамичность, ведь мне надо чтобы меню само генерировалось для обоих категории со своими подкатегориями!
Если всё правильно понял, то здесь поможет pdoField, а конкретно его возможность UltimateParent.
ууу, где ж вы раньше были :DDD
Да, сам уже дошел до этого, сделал вот такой костыль:
[[pdoMenu?
&parents=`[[*id:pdofield=`{«topLevel»:2,«field»:«id»}`]]`
]]
Таким образом, теперь все вызывается как надо!
Но Вам тем не менее спасибо, за подтверждение! :D
Да, сам уже дошел до этого, сделал вот такой костыль:
[[pdoMenu?
&parents=`[[*id:pdofield=`{«topLevel»:2,«field»:«id»}`]]`
]]
Таким образом, теперь все вызывается как надо!
Но Вам тем не менее спасибо, за подтверждение! :D
Мне кажется или есть выход проще если уровень вложенности не изменится. По идее можно просто проверить parent текущего документа:
т.е. если документ в корне значит скормить id иначе скормить parent
[[pdoMenu?
&parents=`[[*parent:is=`0`:then=`[[*id]]`:else=`[[*parent]]`]]`
]]
т.е. если документ в корне значит скормить id иначе скормить parent
Если я правильно понял то вот ссылка. Если решит проблему хорошо, если нет то скину позже как оставить одинаковое меню на 3 уровнях вложенности на одном шаблоне. Просто с телефона.
Этот вариант наверное костыль, т.к сделал его методом тыка)
Этот вариант наверное костыль, т.к сделал его методом тыка)
{set $a = [$id]}
{if $_modx->resource.parent in list $a}
{'!pdoMenu' | snippet : [
'parents' => $_modx->resource.id,
'level' => '1',
'tplOuter' => '@INLINE <div style="padding: 15px; text-align: center!Important;">{$wrapper}</div>',
'tpl' => '@INLINE <h2 style="padding: 15px; margin:0; display: inline-block; font-size:20px;" class="text_bold">
<a href="{$link}">{$menutitle}</a>
</h2>{$wrapper}'
]}
{elseif $_modx->resource.parent in list $a}
{'!pdoMenu' | snippet : [
'parents' => $_modx->resource.parent,
'level' => '1',
'tplOuter' => '@INLINE <div style="padding: 15px; text-align: center!Important;">{$wrapper}</div>',
'tpl' => '@INLINE <h2 style="padding: 15px; margin:0; display: inline-block; font-size:20px;" class="text_bold">
<a href="{$link}">{$menutitle}</a>
</h2>{$wrapper}'
]}
{elseif ($_modx->resource.parent | resource : "parent") in list $a}
{'!pdoMenu' | snippet : [
'parents' => $_modx->resource.parent,
'level' => '1',
'tplOuter' => '@INLINE <div style="padding: 15px; text-align: center!Important;">{$wrapper}</div>',
'tpl' => '@INLINE <h2 style="padding: 15px; margin:0; display: inline-block; font-size:20px;" class="text_bold">
<a href="{$link}">{$menutitle}</a>
</h2>{$wrapper}'
]}
{else}
{'!pdoMenu' | snippet : [
'parents' => ($_modx->resource.parent | resource : "parent"),
'level' => '1',
'tplOuter' => '@INLINE <div style="padding: 15px; text-align: center!Important;">{$wrapper}</div>',
'tpl' => '@INLINE <h2 style="padding: 15px; margin:0; display: inline-block; font-size:20px;" class="text_bold">
<a href="{$link}">{$menutitle}</a>
</h2>{$wrapper}'
]}
{/if}
3 уровня
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.