Вывод категорий товара

Всем доброго времени суток!

Возникла задача вывести все категории к которым принадлежит товар.

Структура категорий следующая:

Категория 1
— -Подкатегория 1
— -Подкатегория 2
— -Подкатегория 3
Категория 2
— -Подкатегория 1
— -Подкатегория 2
— -Подкатегория 3
И т.д.

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

Решил следующим образом.

Взял этот сниппет: docs.modx.pro/komponentyi/minishop2/poleznyie-vyiborki/vyivod-vsex-kategorij-tovara

<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);

$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
    '`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select(array('id','pagetitle'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);

$result = array();
if ($q->prepare() && $q->stmt->execute()) {
    while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
        $url = $modx->makeUrl($row['id'], '', '', $scheme);
        $result[] = '<a href="'.$url.'">'.$row['pagetitle'].'</a>';
    }
}
return implode($delimeter, $result);

Поправил его таким образом, чтобы на выходе получались id товаров через запятую. Далее в списке товаров делаю несколько вызовов pdoResource:

[[pdoResources?
    &parents=`11` // здесь указываю родителя из которого нужно вывести категории которым назначен товар
    &resources=`[[newGetCategories?&rid=`[[+id]]`]]` // здесь список id-шников
    &tpl=`cat_tpl`
]]

Все работает отлично, за исключением одного нюанса. Сниппет выдает id всех категорий, к которым принадлежит товар, кроме той в которой он был создан первоначально. Как получить в этом сниппете id базовой категории в том числе?

Всем спасибо!
Андрей
11 августа 2021, 22:00
modx.pro
349
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0