Вопрос 1. Чтобы получить и вывести не перечень са

Вопрос 1. Чтобы получить и вывести не перечень самих товаров, а перечень категорий товаров — какой параметр нужно использовать?

Проще всего конечно использовать сниппет [[Wayfinder?level=1]] или getdata-процессор {processor action=«web/resources/getdata» ns=«modxsite» params=[«parent» => $modx->resource->id]}… Но так вы получите категории без учета есть в них товары для вывода или нет. Хотя это и не страшно, если каталог не большой и вручную легко рулится (нет товаров — поставили категории галочку «Не показывать в меню» и все). Но если нужна автоматизация (то есть чтобы точно не выводились категории, для которых товары отсутствуют), то надо уже более серьезно к этому подходить. В идеале — расширять web/catalog/products/getdata процессор (но тут есть сложности, так как там он товары будет пытаться получить, а надо родителей выводить, то есть хитро запросы переопределить), или хотя бы расширить web/resources/getdata и в запросе добавить дочерние товары, типа так:

public function prepareQueryBeforeCount(xPDOQuery $c) {
        $c = parent::prepareQueryBeforeCount($c);
        $alias = $c->getAlias();
        
        $c->innerJoin('modResource', 'Children');
        $c->innerJoin('ShopmodxProduct', 'Product', "Product.resource_id = Children.id");
        
        $c->where(array(
            "Children.published"    => 1,
            "Children.deleted"       => 0,
            // hidemenu and etc optionaly
        ));

        return $c;
    }

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