Задать вопрос
@medvedgoff

Подсчет количества только тех ресурсов которые показываются в меню?

Интернет магазин, товары которые в наличии это ресурсы которые показываются в меню hidemenu 0; нужно что бы подсчитывалось количество товаров в категории которые в наличии.

Стандартное решение через pdomenu выводить всех дочерних ресурсов не подходит, он считает все ресурсы, которые hidemenu 0 и 1.
Вывод двух уровней ресурсов с подсчетом количества вложенных:
[[pdoMenu?
    &parents=`0`
    &level=`2`
    &tplInner=`@INLINE [[+wrapper]]`
    &tplParentRow=`@INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]`
    &countChildren=`1`
]]
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
alelunegov
@alelunegov
Фрилансер. Разработка сайтов на MODX, верстка
Придется использовать свой сниппет.
Для этого код вывода категории переносим в отдельный чанк:
[[pdoMenu?
    &parents=`0`
    &level=`2`
    &tplInner=`@INLINE [[+wrapper]]`
    &tplParentRow=`svoeImyaChanka`
    &countChildren=`1`
]]

Чанк svoeImyaChanka:
<li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[childrenCounter? &id=`[[+id]]`]])</li>[[+wrapper]]

Сниппет childrenCounter:
<?php
/**
 * childrenCounter
 *
 * DESCRIPTION
 *
 * Сниппет выводит количество дочерних ресурсов для ресурса с указанным id.
 *
 * PROPERTIES:
 *
 * &id целое число. Default: ID текущего ресурса
 *
 * USAGE:
 *
 * [[childrenCounter? &id=`7`]]
 *
 */
$id = (int) $modx->getOption('id', $scriptProperties);
if (!isset($scriptProperties['id'])) {
    $id = $modx->resource->get('id');
}
$q = $modx->newQuery('modResource');
$q->where(array(
   'parent' => $id,
   'deleted' => 0,
   'published' => 1,
   'hidemenu' => 0
));
$counter = $modx->getCount('modResource', $q);
return $counter;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы