Не могу разобраться с countChildren в pdomenu

Вызываю pdoMenu так:
[[pdoMenu?
    &parents=`3`
    &level=`2`
    &tplInner=`@INLINE <ul class="dropdown-menu"> [[+wrapper]]</ul>`
    &tplOuter=`@INLINE <ul class="nav navbar-nav">[[+wrapper]]</ul>`
	&tplParentRow=`@INLINE <li[[+classes]]><a class="dropdown-toggle" data-toggle="dropdown" href="[[+link]]" [[+attributes]]>[[+menutitle]]<span></span></a>[[+wrapper]]</li>`
	&tplInnerRow=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]] <span>([[+children]] шт.)</span></a>[[+wrapper]]</li>`
	&countChildren=`1`
	&hereClass=`active open`

]]
Суть проблемы вот в чем — у меня двух двухуровневое меню в котором первый уровень — дропдаун меню, которое при клике не переходит, а разворачивает подкатегории. В которых и должен происходить подсчет внутренних документов типа:
Категория
— подкатегория (8 шт.)
Но при выставленном &countChildren=`1` для подкатегорий применяется &tplParentRow, а не &tplInnerRow, если поставить &countChildren=`0` — то все ок, кроме подсчета товаров.
Я может как-то не так использую параметры шаблонов, но прям не могу ничего придумать, как сделать, что бы заработало.
Ростислав
07 ноября 2016, 09:34
modx.pro
2 119
0

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

Евгений Webinmd
03 августа 2017, 16:44
0
этот баг можно повторить и в текущей версии (2.9.0)
    Максим
    03 августа 2017, 16:50
    0
    А почему вы решили что это баг? Вроде логичное поведение…
      Евгений Webinmd
      03 августа 2017, 16:56
      0
      ок, описываю ситуацию:
      есть меню в каталоге, у части разделов есть подкатегории. У всех есть товары.
      — Категория 1
      — Категория 2
      — подкатегория 1
      — подкатегория 2
      — Категория 3

      и у всех необходимо считать дочерние ресурсы.
      Выставляем параметр и тогда для всех пунктов (1 и 2 уровня) параметр parentClass срабатывает.
      Казалось бы логично, мы же считаем для всех подпункты, но на практике parentClass необходим только для Категория 2.
      И тут уже не понятно, баг это или фича.
        Максим
        03 августа 2017, 17:15
        0
        У категории 1, как и у категории 2, имеются дочерние ресурсы.
        Соответственно они являются папками (контейнерами, родителями).
        Разница только в том что у категории 2 эти ресурсы имеют тип «категория», а у категории 1 — «товар».
        Не может быть так, чтобы у категории 1 имелось 20 ресурсов (товаров) внутри, но она бы не являлась при это родителем (контейнером)!
          Евгений Webinmd
          03 августа 2017, 17:19
          0
          ок, я это прекрасно понимаю и вот только что это увидел, но если не использовать параметр &countChildren, то категория с подкатегориями это родитель, а категория с товарами это не родитель ))) и тогда можно parentClass использовать без проблем.

            Максим
            03 августа 2017, 17:24
            0
            Ну так логично же, если ты отображаешь количество товаров внутри — значит это категория! раз у нее внутри определенное количество товаров!
            То же самое, если ты выведешь меню с level = 1, то пункты меню не будут категориями, но если level = 2, то эти же пункты уже будут категориями (если внутри них есть товары или другие ресурсы)
            П.С. Либо я туплю, либо не понимаю что ты хочешь.
              Евгений Webinmd
              03 августа 2017, 17:30
              0
              не хочу тратить ничье время впустую, но наверное лучше разобраться до конца.
              Вызов меню

              {$_modx->runSnippet('!pdoMenu', [
                          'parents' => 5,
                          'level' => 2,
                          'templates' => '4',
                          'outerClass' => 'side-menu', 
                          'countChildren' => 1,
              	   'parentClass' => 'parent'
                      ])}
              При таком вызове класс parent будет у всех категорий.
              Если убрать параметр countChildren (не меняя другие параметры)
              то parent остаётся только у категорий с подкатегориями.
              Может так и задумано, но мне кажется что countChildren не должен влиять на parentClass.
                Максим
                03 августа 2017, 17:42
                0
                Как это не должен?
                Еще влияет на это и:
                'templates' => '4'
                Убери этот параметр и у категорий, у которых ранее не было класса «parent», этот класс появится, т.к. внутри появятся пункты с товарами!
                Тоже самое и с параметром:
                'level' => 2,
                Когда level = 1 класса «parent» нет, когда 2 и более, то у тех же пунктов уже добавляется «parent».
                и с
                'countChildren' => 1,
                по аналогии

                Не знаю, может меня логика подводит…
                  Евгений Webinmd
                  03 августа 2017, 17:53
                  0
                  ты считаешь что должен влиять, я считаю что не должен.
                  Ну не понимаю я почему подсчет дочерних должен влиять на parentClass.
                  Как бы технически то я понимаю почему, а вот практически не очень.
                  В общем предлагаю тему закрыть.
                  Тут скорей всего от задач зависит. Мне было бы удобно чтобы не влияло, кому-то наоборот.
                  Но судя по посту не у одного меня возникает эта путаница.
                  Благодарю за дискуссию
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9