Как вывести количество дочерних документов ресурса в MODX Revo

Добрый день, друзья!

Если вы хоть раз делали сайт на MODX, вам хорошо знакомо дополнение Wayfinder. С его помощью можно создавать меню разных уровней.

У меня это расширение входит в список MUST-HAVE. И все же иногда его функций недостаточно. Например, когда нужно, чтобы рядом с ссылкой на раздел выводилось количество дочерних ресурсов, как на этой картинке

Вывод количества дочерних ресурсов в MODX Revo

В таком меню выводятся не только ссылки на разделы, но и число дочерних документов каждого ресурса. Это очень хорошее решение для каталогов или интернет-магазинов, где нужно показать количество товара в каждой категории. Давайте посмотрим, как это можно сделать на своем сайте.

Как вывести количество дочерних ресурсов

Устанавливаем Wayfinder. Для подсчета количества дочерних ресурсов создаем новый сниппет с именем getChildCount.
Код сниппета:

    <?php
$count = 0;
$parent = isset($parent) ? (integer) $parent : 0;
if ($parent > 0) {
    $criteria = array(
        'parent' => $parent,
        'deleted' => false,
        'published' => true,
    );
    $count = $modx->getCount('modResource', $criteria);
}
return (string) $count;
?>

Создаем новый чанк menu_li. Это будет шаблон вывода одного пункта меню:

<li [[+wf.classes]]>
    [[+wf.title]] 
    <span>[[getChildCount? &parent=`[[+id]]`]]</span>
</li>

Остается в нужном месте шаблона вызвать Wayfinder и указать шаблон пункта меню в параметре rowTpl:

[[Wayfinder? 
&startId=`0`
&level=`1`
&rowTpl=`menu_li`]]

Вот и все! Очень просто =) Надеюсь, эта шпаргалка вам пригодится. Если есть вопросы или дополнения, добро пожаловать в комментарии!

  • Николай Текстов

    Привет, Ольга. Рад видеть Твой почерк. Хотя я не являюсь пользователем данной системы.
    Еще хочу уточнить почему в виджете: Лучшие статьи — сдвинуты названия последних 2-х статей.
    Я вот тоже у себя на блоге столкнулся с такой же проблемой и не знаю как ее решить…

    • Ольга

      Привет, Николай! Куда сдвинуты? У меня в Мозилле все ровно. Можешь показать скрин?

      • Николай Текстов

        Сделал скрин и сбросил тебе его ВК или лучше на почту?

        • Ольга

          Николай, спасибо! Постаралась исправить, добавила свойство clear:both к стилю картинок. Не знаю, помогло ли, у меня в Мозилле, Хроме и IE все корректно отображается.

          Есть еще один способ — после картинки в коде сделать перенос строки.

  • Виктор

    Спасибо! Удобная штукенция. Вот бы она еще могла считать чайлды и у дочерних ресурсов… Хех.

    • Ольга

      Виктор, а почему бы нет? Надо будет попробовать увеличить количество уровней в меню.

      • Виктор

        Уверен, что это пригодится. Отпишитесь, пожалуйста, если получится.

        Спасибо!

        • Ольга

          Обязательно! Кстати, спасибо за идею. На одном из сайтов может пригодиться.

          И еще, может шепнете в личку адрес своего проекта, когда закончите работу, очень интересно посмотреть))

          • Виктор

            Проект еще только на стадии разработки. Поскольку в нем все упирается в мои возможности и в частности возможности МОД-Икса, то дизайн проекта клепается на ходу, что, кстати, довольно уместно — нет капризного дизайнера, который нарисовал каляки-малаки и еще хочет, чтоб все было пиксель в пиксель.

            Как запущу — обязательно покажу результат и не только в личку, а для всех. Потому что проект некоммерческий и настроенный на помощь людям и их питомцам.

            На настоящем этапе ищу информацию о том, как добиться автоматического создания дочернего ресурса или ресурсов (при создании объявления из фронтэнда), куда бы помещалось объявление. Это бы избавило от ручного труда в админке. Просто в моем случае у объявлений довольно богатый уровень вложенности: Все страны / страна / область / город / статус / объект / адрес + описание + фото. Страны будет только 3 для начала, но вот областей в них и городов, что собак нестреленных)

            Можно, конечно, как-либо попытаться сортировать объявления по тв-параметрам, и хранить все объявление в одной большой помойке, но как-то это не по-православному. :)

            Еще хотел спросить. У вас на сайте некоторые пользователи имеют фотографии в объявлениях, а некоторые нет. Откуда берется фотка?

            Спасибо!

            • Ольга

              Виктор, если вы о картинках в комментариях, то это граватар. Нужно привязать картинку к своему email на https://ru.gravatar.com тогда на всех блогах, которые вы будете комментировать, указывая этот адрес, будет отображаться ваш аватар.

              Без премодерации вижу только такой выход: самому ручками создать ресурсы всех городов и сел (закрыть их от индексации, пока пустые), а в форме выпадающим списком сделать выбор категории.

              • Виктор

                Да. Все страны, области и города по идее должны выбираться из слелектов.

                Но я не вижу смысла в создании всех возможных подкатегорий (на уровне админки). Можно, приличия ради, создать ресурсы стран. А раз админка позволяет создавать страницу из фронтэнда, то должна позволять и ресурс создавать, в который будет вложена объявка. А создаваемому ресурсу дать соответствующий чанк, который будет выводить объявления этого ресурса на одной странице.

                В общем — все сложно.) С гаватаркой разобрался. Спасибо!

  • Иван

    Доброго времени суток! Скажите, пожалуйста как исключить одного родителя, т.е. чтобы у него не считалось количество детей. Спасибо!

  • Алексей

    Как вывести общее количество документов в ресурсе?Мне нужно только количество и что бы оно суммировалось
    Если можно код, только изучаю поэтому плаваю