Мега меню с PdoMenu
Всем ДВС!
Помогите с реализацией мега меню сниппетом pdoMenu. Проблема в том что один из пунктов меню имеет свой шаблон (услуги) с выводом своих потомков в несколько колонок, и у каждого потомка по несколько ресурсов.
Обыскал все, находил много решений но не одно ни смог реализовать к сожалению, видимо из за недостатка опыта и знаний.
Пробовал реализовать с помощью параметра &tplCategoryFolder, ни чего не получилось, получается какая то каша.
Пробовал реализовать с помощью условий создав два tpl шаблона, один с стандартным выпадающим меню, второй шаблон как раз с мега меню, и условием типа
Плагин самостоятельно написать не смогу не хватает знаний((((
Видел статью где данное меню реализовывается с помощью pdoResources, но в данном решение любое выпадающее меню, является мега, поэтому проблем с его реализацией нет!
У меня же проблема как определить отдельный шаблон для отдельного пункта. Один парень мне предлагал решить проблему двумя вызовами pdoMenu (в теории), но на практике ни чего не получилось.
Пробовал решить с помощью &tpl_N, но в pdoMenu данный параметр не работает, позже нашел топик с комментариями гуру Modx.))
Там же почитал что можно реализовать с помощью шаблонизатора Fenom прописав условия, но к сожалению не хватает знаний…
Вот мое меню
Структура сайта следующая:
Сразу скажу что прочитал всю документацию pdoTools и не нашел ни чего полезного
3 день просто перекапываю гугл и яндекс так же безрезультатно. Где находил схожие проблемы других людей, там не было решения.
Заранее спасибо!
Помогите с реализацией мега меню сниппетом pdoMenu. Проблема в том что один из пунктов меню имеет свой шаблон (услуги) с выводом своих потомков в несколько колонок, и у каждого потомка по несколько ресурсов.
Обыскал все, находил много решений но не одно ни смог реализовать к сожалению, видимо из за недостатка опыта и знаний.
Пробовал реализовать с помощью параметра &tplCategoryFolder, ни чего не получилось, получается какая то каша.
Пробовал реализовать с помощью условий создав два tpl шаблона, один с стандартным выпадающим меню, второй шаблон как раз с мега меню, и условием типа
[[+id:is=`2`:then=`[[$dropdownMenuMega]]`:else=`[[$dropdownMenu]]`]]
, где 2 это как раз ID пункта меню которое должно выводить мега, а остальные обычное выпадающее, а в самом параметре &tplParentRow указал чанк где прописано данное условие. Короче тоже не получилось.Плагин самостоятельно написать не смогу не хватает знаний((((
Видел статью где данное меню реализовывается с помощью pdoResources, но в данном решение любое выпадающее меню, является мега, поэтому проблем с его реализацией нет!
У меня же проблема как определить отдельный шаблон для отдельного пункта. Один парень мне предлагал решить проблему двумя вызовами pdoMenu (в теории), но на практике ни чего не получилось.
Пробовал решить с помощью &tpl_N, но в pdoMenu данный параметр не работает, позже нашел топик с комментариями гуру Modx.))
Там же почитал что можно реализовать с помощью шаблонизатора Fenom прописав условия, но к сожалению не хватает знаний…
Вот мое меню
<nav id="main-navigation" class="main-navigation">
<ul id="menu" class="clearfix">
<li class="current"><a href="ссылка">Главная</a></li>
<li><a href="#">О компании</a></li>
<li class="dropdown has-megamenu"><a href="#">Услуги</a>
<div class="sub-menu-wrap mega-menu flex-row">
<div class="mega-submenu">
<h5 class="mega-title"><span class="cicon-heating"></span>Гидравлика</h5>
<ul>
<li><a href="ссылка">Услуга</a></li>
<li><a href="ссылка">Услуга</a></li>
</ul>
</div>
<div class="mega-submenu">
<h5 class="mega-title"><span class="cicon-cooling"></span>Запчасти</h5>
<ul>
<li><a href="ссылка">Услугаr</a></li>
<li><a href="ссылка">Услуга</a></li>
</ul>
</div>
<div class="mega-submenu">
<h5 class="mega-title"><span class="cicon-plumbing"></span>ДВС</h5>
<ul>
<li><a href="ссылка">Услуга</a></li>
<li><a href="ссылка">Услуга</a></li>
</ul>
</div>
<div class="mega-submenu">
<h5 class="mega-title"><span class="cicon-air-quality"></span>Металлообработка</h5>
<ul>
<li><a href="ссылка">Услуга</a></li>
<li><a href="ссылка">Услуга</a></li>
</ul>
</div>
<div class="mega-submenu">
<h5 class="mega-title"><span class="cicon-electircal"></span>Масла</h5>
<ul>
<li><a href="ссылка">Услуга</a></li>
<li><a href="ссылка">Услуга</a></li>
</ul>
</div>
</div>
</li>
<li class="dropdown"><a href="ссылка">Наши работы</a>
<div class="sub-menu-wrap">
<ul>
<li><a href="ссылка">Гидроцилиндры</a></li>
<li><a href="ссылка">Гидромоторы</a></li>
<li><a href="ссылка">Гидронасосы</a></li>
</ul>
</div>
</li>
<li><a href="ссылка">Новости</a></li>
<li><a href="ссылка">Контакты</a></li> -->
</ul>
</nav>
Вот сайт, где можно наглядно посмотреть как оно выглядитСтруктура сайта следующая:
Главная
О компании
Услуги
<--!это и есть мега меню-->
Подуслуга
Подподуслуга
Подподуслуга
Подуслуга
Подподуслуга
Подподуслуга
Подуслуга
Подподуслуга
Подподуслуга
Подуслуга
Подподуслуга
Подподуслуга
Подуслуга
Подподуслуга
Подподуслуга
Портфолио
<!--это обычное выпадающее меню -->
Пример
пример
пример
Новости
Контакты
Господа может быть найдутся кто сможет подсказать в решении данной задачи, тыкнуть пальцем на какую либо статейку где описаны похожие примеры?Сразу скажу что прочитал всю документацию pdoTools и не нашел ни чего полезного
3 день просто перекапываю гугл и яндекс так же безрезультатно. Где находил схожие проблемы других людей, там не было решения.
Заранее спасибо!
Комментарии: 10
Может быть есть какой то регламент по вопросам?
Последнее время что нибудь спросишь, ни кто ни чего не отвечает…
Последнее время что нибудь спросишь, ни кто ни чего не отвечает…
Проверять можно является ли пункт папкой или номер шаблона. Проверять можно как на fenom так и стандартными модификаторами
Можно подкорректировать верстку под вывод. На схеме вывод по умолчанию.
Можно подкорректировать верстку под вывод. На схеме вывод по умолчанию.
Можно попробовать так заколхозить :)
tpl.megamenu:
В проверке соответственно подставить свои id нужных страниц.
p.s. Вызов на Fenom, для него должна быть включена настройка — Использовать Fenom на страницах, или перепишите на обычный синтаксис.
{'!pdoMenu' | snippet:[
'parents' => 0,
'level' => 2,
'tplOuter'=>'@INLINE <ul id="menu" class="clearfix">{$wrapper}</ul>',
'tplInner'=>'@INLINE <div class="sub-menu-wrap"><ul>{$wrapper}</ul></div>'
'tpl'=>'tpl.megamenu'
]}
tpl.megamenu:
{if $id == 2}
<li class="dropdown has-megamenu"><a href="#">{$menutitle}</a>
<div class="sub-menu-wrap mega-menu flex-row">
{'pdoMenu' | snippet : [
'parents'=>$id,
'level'=>2,
'outerTpl'=>'@INLINE {$wrapper}',
'innerTpl'=>'@INLINE <ul>{$wrapper}</ul>',
'tpl'=>'@INLINE <div class="mega-submenu"><h5 class="mega-title"><span class="cicon-heating"></span>{$menutitle}</h5>{$wrapper}</div>',
'tplInnerRow'=>'@INLINE <li><a href="{$link}">{$menutitle}</a></li>'
]}
</div>
</li>
{elseif $id == 3}
<li class="dropdown"><a href="{$link}">{$menutitle}</a>{$wrapper}</li>
{else}
<li {$classes}><a href="{$link}" {$attributes}>{$menutitle}</a>{$wrapper}</li>
{/if}
В проверке соответственно подставить свои id нужных страниц.
p.s. Вызов на Fenom, для него должна быть включена настройка — Использовать Fenom на страницах, или перепишите на обычный синтаксис.
Андрей спасибо огромное за решение!!!
Но вот вопрос почему у меня тогда не работает такая конструкция:
Тот же самый велосипед, только на обычном синтаксисе.
У меня как раз «услуги» имеет ID = 2…
Конечно Андрей еще раз спасибо, и Мите что откликнулись! Буду пробовать с Fenom.
Но вот вопрос почему у меня тогда не работает такая конструкция:
[[pdoMenu?
&parents=`0`
&level=`2`
&hereClass=`current`
&parentClass=`dropdown`
&tpl=`@INLINE <li[[+classes]]><a href="[[+link]]">[[+menutitle]]</a></li>`
&tplInner=`@INLINE <ul id="menu" class="clearfix">[[+wrapper]]</ul>`
&tplParentRow=`dropDownAll`
]]
dropDownAll:[[*parent:is=`2`:then=`[[$dropdownMenuMega]]`:else=`[[$dropdownMenu]]`]]
Естественно dropdownMenuMega — это вывод мега, а dropdownMenu это обычное выпадающее меню.Тот же самый велосипед, только на обычном синтаксисе.
У меня как раз «услуги» имеет ID = 2…
Конечно Андрей еще раз спасибо, и Мите что откликнулись! Буду пробовать с Fenom.
Ппц Fenom включил и работает такая конструкция:
{if $id == 2}
[[$dropdownMenuMega]]
{else}
[[$dropdownMenu]]
{/if}
Спасибо еще раз!
Собственно ответ на вопрос выше) нужно проверять не parent а id. И чанки, если уходить от обычного синтаксиса, можно вызывать так:
{if $id == 2}
{'dropdownMenuMega' | chunk}
{else}
{'dropdownMenu' | chunk}
{/if}
Спасибо еще раз!
{if $id == 2}
{'dropdownMenuMega' | chunk}
{else}
{'dropdownMenu' | chunk}
{/if}
Кстати попробовал, не работает, вот так работает:{if $id == 2}
[[$dropdownMenuMega]]
{else}
[[$dropdownMenu]]
{/if}
Странно, конструкция 100% рабочая, даже проверил у себя на сайте :) Да и в принципе, здесь дополнительные вызовы чанков излишни, можно просто писать любой код внутри проверок, как в моём примере выше.
Ну согласен!
Ладно буду дальше доводить до завершения!
Спасибо!
Ладно буду дальше доводить до завершения!
Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.