Не тяжелый вопрос

Сеньоры, вывожу список категорий, в каждый из которых вложены другие ресурсы, некоторые сгруппированы в суб категорию(тарифные планы) + одна запись отзывы в которой с помощью тикет люди оставляют отзывы.
Получается каталог категорий, человек зашел посмотрел тарифные планы, зашел в отзывы и т.д
Вопрос, как вывести количество записей в суб категории(тирифы), и количество комментариев(отзывов). в карточке категории. До этого я находил снипет который выводил количество товаров из любой нужной категории, id которой просто подставлял в ТВ, но снипет работает только с минишоп и товарами.
Фото примера, что должно получиться в итоге.

v2254303
29 ноября 2015, 11:33
modx.pro
1 323
+1

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

Максим Кузнецов
29 ноября 2015, 14:47
1
+2
Если вы выводите структуру при помощи pdoMenu, то в вашем распоряжении есть параметры шаблонов, которые позволяют кастомизировать меню на нужном уровне — например &tplCategoryFolder.

Количество комментариев в нужном разделе:
[[!TicketCommentsCount:default=`0`? &id=`[[+id]]`]]

Количество записей:
— пишем сниппет, например CatalogItemsCount:
<?php
	if (empty($parent)) {
		return;
	}

	$pids = array_merge(array($parent), $modx->getChildIds($parent));
	$ids = array();

	$q = $modx->newQuery('modResource');
	$q->where(array('parent:IN' => $pids,'published' => 1,'deleted' => 0));
	//здесь можно переписать на простое получение count-запроса, но оставил так на случай, если потребуется использовать где-то список id потомков
	$q->select('`modResource`.`id`');
	if ($q->prepare() && $q->stmt->execute()) {
		$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
		return count($ids);
	}
	else {
		return '0';
	}

— вызываем в нужном месте
[[!CatalogItemsCount? &parent=`[[+id]]`]]
    v2254303
    29 ноября 2015, 15:00
    0
    Маским спасибо за Ваш ответ. Вы весьма активно помогаете с ответами, за это Вам отдельное спасибо. Количество комментариев сделаю по Вашему примеру. Просьба подсказать как вывести количество записей из суб категории(на картинке 36 тарифов), структуру каталога я привел для примера как расположены блоки у меня в админке, тоисть я не буду на сайте выводить через pdoMenu. Мне просто нужно вывести сколько записей находится в категории тарифа. Спасибо
      Максим Кузнецов
      29 ноября 2015, 15:09
      0
      Если количество записей непосредственно в суб-категории (а не все потомки для суб-категории в принципе), то в вышеописанном сниппете нужно убрать строчку получения всех потомков для потомков:
      $pids = array_merge(array($parent), $modx->getChildIds($parent));

      и заменить условие:
      'parent:IN' => $pids
      на:
      'parent' => $parent

      — таким образом вы получите непосредственно всех потомков 1-го уровня для нужной категории. Сниппет вызывать также.

      Если же вы спрашивали по поводу того, какой в каком шаблоне нужно вызвать данный сниппет, то ~так:
      &displayStart=`1`
      &tplStart // это шаблон для раздела (1 уровень)
      &tplParentRow // это шаблон подразделов тут вставляем нужные сниппеты.
      //также можно использовать &tplCategoryFolder, если у потомков нет своих потомков
      &tpl //шаблон внутренних пунктов
        v2254303
        29 ноября 2015, 15:12
        0
        спасибо
    Максим Кузнецов
    29 ноября 2015, 14:58
    0
    P.S. Если не секрет, по какому принципу вы генерируете названия для своих вопросов?)
      v2254303
      29 ноября 2015, 15:01
      0
      В народе это называют седьмое чувство, я называю жопа чует не тяжелый вопрос )
        Воеводский Михаил
        29 ноября 2015, 16:17
        +2
        Название вопроса должно включать в себя краткое описание сути. «Помогите», «Простой вопрос» и прочие совершенно не передают сути. В некоторых сообществах/форумах за такое даже наказывают.
          v2254303
          29 ноября 2015, 19:09
          -1
          Михаил, не будьте букой :)
            Воеводский Михаил
            30 ноября 2015, 02:06
            +1
            Я букой не являюсь, но уважайте сообщество, в которое обращаетесь за помощью :)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9