Как сделать вывод количества одинаковых имен бренда товаров в категории?

Для того чтобы вывести количество одинаковых имен брендов товаров в категории в системе MODX, необходимо выполнить несколько шагов.

1. Получение товаров в категории:
Первым шагом нужно получить список всех товаров, которые находятся в выбранной категории. Для этого можно использовать API MODX и запрос к базе данных или воспользоваться сниппетом, например, getResources или pdoResources, чтобы получить список товаров через их атрибуты категории.

2. Получение списка имен брендов:
После получения списка товаров, нужно пройтись по каждому товару и получить его бренд (имя). Для этого в MODX вы можете использовать TV (Template Variable), в котором будет храниться информация о бренде товара. Варианты вариаблов могут варьироваться, это может быть как текстовое поле, так и список (dropdown), поле с множественным выбором (multiselect) и так далее. В зависимости от варианта, вам придется использовать различные методы получения значения выбранного бренда.

3. Формирование списка уникальных имен брендов:
Для того чтобы получить количество одинаковых имен брендов, сначала нам нужно создать массив, в котором будут храниться все имена брендов. Затем, перебирая каждый товар, мы будем проверять, есть ли его бренд в массиве. Если бренда нет в массиве, добавляем его туда. Если бренд уже есть в массиве, проходим к следующему товару. В результате получим массив, содержащий все уникальные имена брендов.

4. Подсчет количества одинаковых имен брендов:
После формирования массива уникальных брендов, можно подсчитать количество каждого из этих брендов в списке всех товаров. Для этого можно использовать цикл, который будет считать количество вхождений каждого элемента массива брендов в списке товаров. Каждый раз, когда мы найдем совпадение, увеличиваем счетчик соответствующего бренда на 1.

5. Вывод результатов:
После подсчета количества каждого бренда, можно вывести результаты на страницу как угодно. Например, используя конструкцию foreach, можно перебрать массив брендов и для каждого бренда вывести его имя и количество.

Вот пример кода на языке PHP, который позволяет выполнить все вышеперечисленные шаги:

// Получение списка товаров в категории
$products = $modx->runSnippet('getResources', array(
   'parents' => '[[!id_of_category]]', // ID нужной категории
   'tpl' => '@CODE:[+pagetitle+]', // Шаблон вывода названий товаров
));

// Формирование списка уникальных брендов
$brands = array();
foreach ($products as $product) {
   $brand = $modx->runSnippet('getTVValue', array(
      'document' => $product['id'],
      'tvName' => 'brand', // Имя TV, содержащего бренд товара
   ));

   if (!in_array($brand, $brands)) {
      $brands[] = $brand;
   }
}

// Подсчет количества брендов
$brandCounts = array();
foreach ($brands as $brand) {
   $count = 0;
   foreach ($products as $product) {
      $productBrand = $modx->runSnippet('getTVValue', array(
         'document' => $product['id'],
         'tvName' => 'brand',
      ));

      if ($brand == $productBrand) {
         $count++;
      }
   }

   $brandCounts[$brand] = $count;
}

// Вывод результатов
foreach ($brandCounts as $brand => $count) {
   echo $brand . ": " . $count . "<br>";
}

Не забудьте заменить [[!id_of_category]] на ID нужной вам категории и 'brand' на имя вашего TV-поля, содержащего бренд товара.

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