Лимит вывода ресурсов в подкатегориях pdoMenu
        Всем привет. Нужна помощь.
Как можно ограничить количество ресурсов в подкатегории. Чтоб выводилось по 2 ресурса в подкатегории. Вывод через Pdomenu.
Структура Сайта
Категория (id=1)
— Подкатегория 1
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
— Подкатегория 2
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
— Подкатегория 3
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
    
    
                                                                                
            Как можно ограничить количество ресурсов в подкатегории. Чтоб выводилось по 2 ресурса в подкатегории. Вывод через Pdomenu.
Структура Сайта
Категория (id=1)
— Подкатегория 1
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
— Подкатегория 2
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
— Подкатегория 3
— Ресурс 1
— Ресурс 2
— Ресурс 3
— Ресурс 4
[[!pdoMenu?
  &parents=`1`
  &level=`1`
  &tplOuter=`@INLINE [[+wrapper]]`
  &tplInnerRow=`@INLINE <div><a href="[[+link]]">[[+menutitle]]</a></div>`
]]если выставить &limit то ограничивается вывод всех ресурсов    Комментарии: 19
                В pdoMenu, скорее всего, такой функционал не предусмотрен (т.к. возникает сложность с последовательностью нумерации результатов) — т.е. даже модификаторы от [[+idx]] тут особо не помогут.
Если вопрос с меню косметического плана — то можно решить задачу при помощи jquery.
В противном случае разве что вызывать при помощи pdoResources первый уровень меню, а внутри при помощи него же — второй (с выставленным &limit). Или попробовать расписать составной джоин потомков к первому вызову.
UPD: …или же вообще сверстать все руками, без запросов к бд. А активный пункт присваивать уже при помощи Jquery.
                    Если вопрос с меню косметического плана — то можно решить задачу при помощи jquery.
В противном случае разве что вызывать при помощи pdoResources первый уровень меню, а внутри при помощи него же — второй (с выставленным &limit). Или попробовать расписать составной джоин потомков к первому вызову.
UPD: …или же вообще сверстать все руками, без запросов к бд. А активный пункт присваивать уже при помощи Jquery.
                Хотелось бы максимально оптимизировать. Т.к как количество подкатегорий может меняться.
Pdomenu не принципиально.
Нужно вывести вот в таком формате prntscr.com/9xqji9
Pdomenu взял, потому что там можно использовать tplStart
В данный момент вот так, через снипет getChildIds получаю всех потомков категории, и вывожу их
Если подскажите лучше решение, как правильней или в какую сторону копать, буду очень признателен
                    Pdomenu не принципиально.
Нужно вывести вот в таком формате prntscr.com/9xqji9
Pdomenu взял, потому что там можно использовать tplStart
В данный момент вот так, через снипет getChildIds получаю всех потомков категории, и вывожу их
[[!pdoMenu?
  &parents=`[[!getChildIds]]`
  &level=`1`
  &displayStart=`1`
  &tplStart=`@INLINE <div><h3>[[+menutitle]]</h3><ul class="list">[[+wrapper]]</ul><div class="documents-list__all"><a class="documents-list__all-link btn btn_small" href="#">все документы</a></div></div>`
  &tplOuter=`@INLINE [[+wrapper]]`
  &tplInnerRow=`@INLINE <div><a href="[[+link]]">[[+menutitle]]</a></div>`
]]снипет getChildIds$child = $modx->getChildIds(8, 1, array('context' => 'web'));
return implode(',',$child);всё бы хорошо, только ограничить вывод по 5 не знаю.Если подскажите лучше решение, как правильней или в какую сторону копать, буду очень признателен
                Возможно сделать такое на pdoMenu без стороних снипетов. Посмотри мою недавную тему, она очень похоже на твою, за исключением того, что мне подкатегории >3 нужно было оборачивать в див. В твоем случае просто ничего не выводить.
modx.pro/help/7710/
Возникнут вопросы пиши.
                    modx.pro/help/7710/
Возникнут вопросы пиши.
                Вот навалял, Выводит категорию, подкатегорию и 3 ресурса
                    [[!pdoMenu?
    &parents = `1`
    &level = `2`
    &displayStart = `1`
    &levelClass = `level`
    &firstClass =``
    &lastClass = ``
    
    &tplOuter = `@INLINE    <div class="out">[[+wrapper]]</div>`
    &tplParentRow = `@INLINE    <div class="block-cat">
                                        <p>[[+menutitle]]-Подкатегория</p>
                                    [[+wrapper]]
                                </div>`
    &tplInner = `@INLINE    <div class="items">
                                [[+wrapper]]
                            </div>`
    &tplInnerRow =  `test`
   
]]Чанк «test», т.к. фильтры обязательно в чанк. В нем прописанно кол-во выводимых ресурсов, в данном случае 3.[[+classes:is=`class="level3"`:then=`
    [[+idx:islte=`3`:then=`
        <div><a href="">[[+menutitle]]-Ресурс</a></div>
    `]]
`]]            
                Спасибо            
                    
                Всегда пожалуйста            
                    [[+classes:is=`class="level3"`:then=`
    [[+idx:islte=`3`:then=`
        <div><a href="">[[+menutitle]]-Ресурс</a></div>
    `]]
`]]как это будет выглядеть на Fenom?            
                Сорри, без понятия. Еще не сталкивался с fenom, времени небыло. Может кто знает ответит.            
                    {if $classes == 'class="level3"' && $idx <= 3}
	<div><a href="">{$menutitle}-Ресурс</a></div>
{/if}            
                Это Глебу надо...., лучше ему ответить, так придет ему письмо об ответе.            
                    
                ничего не выводит(
                    {$_modx->runSnippet('pdoMenu', [
    'parents' => 8,
    'level' => 2,
    'displayStart' => 1,
    'levelClass' => 'level',
    'firstClass' => '',
    'firstClass' => '',
    'tplStart' => '@INLINE  [[+wrapper]]',
    'tplOuter' => '@INLINE  <div class="documents">[[+wrapper]]</div>',
    'sortby' => 'publishedon',
    'sortdir' => 'DESC',
    'tplParentRow ' => '@INLINE
    <li class="list-item documents-list__item">
      <h3 class="documents-list__ttl h3">[[+menutitle]]</h3>
      [[+wrapper]]
      <div class="documents-list__all">
        <a href="[[+link]]" class="documents-list__all-link btn btn_small">Все документы</a>
      </div>
    </li>',
    'tplInner' => '@INLINE  <ul class="list documents-list">[[+wrapper]]</ul>',
    'tplPath' => './assets/elements/tpl/',
    'tplInnerRow' => '@FILE docs.tpl',
])}docs.tpl{if $classes == 'class="level3"' && $idx <= 3}
  <div><a href="">{$menutitle}-Ресурс</a></div>
{/if}            
                => Смотрим лог ошибок.
            
                    
                Лог ошибок пуст
если
тест тест тест тест тест
условие не срабатывает(
                    если
{if $classes == 'class="level3"' && $idx <= 3}
  <div><a href="">{$menutitle}-Ресурс</a></div>
  {else}
  тест
{/if}то выводиттест тест тест тест тест
условие не срабатывает(
                Попробуйте вызвать в чанке плейсхолдеры {$idx} и {$classes} и посмотреть, что они возвращают.
Скорее всего, idx всех ресурсов больше 3.
                    Скорее всего, idx всех ресурсов больше 3.
                вызвал так:
                    <li{$classes} id="idx-{$idx}">{$menutitle}</li>получил вот так:<ul class="list documents-list">
  <li class="level2" id="idx-1">Документы федеральных органов</li>
  <li class="level2" id="idx-2">Документы конференции</li>
  <li class="level2" id="idx-3">Документы регионального совета</li>
  <li class="level2" id="idx-4">Документы председателя</li>
  <li class="last level2" id="idx-5">Пресс-релизы</li>
</ul>            
                => проверка не проходит по условию 
— нужен не level3, а level2.
+ в случай, если у вас в контейнере будет 3 или менее ресурса — последний пункт не будет проходить т.к. у него в классах будет висеть «last».
                    $classes == 'class="level3"'— нужен не level3, а level2.
+ в случай, если у вас в контейнере будет 3 или менее ресурса — последний пункт не будет проходить т.к. у него в классах будет висеть «last».
                Сорри, хотел ответить Максиму Кузнецову. Это для него.
Почему? Можно например использовать &levelClass, и по нему определять какой уровень вложенности с помощью фильтров.
                    Почему? Можно например использовать &levelClass, и по нему определять какой уровень вложенности с помощью фильтров.
                Упс...)            
                    
                Вообщем сделал вот таким способом:
                    {$_modx->runSnippet('pdoMenu', [
    'parents' => $_modx->runSnippet('getChildIds'),
    'level' => 2,
    'displayStart' => 1,
    'fenomModifiers'=>'dateAgo'
    'tplOuter' => '@INLINE
      <div class="documents">
        <ul class="list documents-list">{$wrapper}</ul>
      </div>',
    'tplInner' => '@INLINE {$wrapper}',
    'tplStart' => '@INLINE
      <li class="list-item documents-list__item">
        <h3 class="documents-list__ttl h3">{$menutitle}</h3>
        <ul class="list list_marker-circle documents-list__sub-list">{$wrapper}</ul>
        <div class="documents-list__all">
          <a class="documents-list__all-link btn btn_small" href="{$link}">все документы</a>
        </div>
      </li>',
    'tplInnerRow' => '@INLINE
    {if $idx <= 3}
      <li class="list-item documents-list__sub-item">
        <a class="documents-list__item-link" href="[[+link]]">{$menutitle}</a>
        <span class="documents-list__item-date">
          <i class="icon icon-date"></i>
          {$publishedon | dateago}
        </span>
      </li>
    {/if}',
])}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.