Вывод списка каталогов

Добрый день! Есть небольшой опыт работы с сайтами на MODX и поднятия их на серверах, знаю PHP. Но пока не до конца понял структуру MODX и как всё работает. Сейчас поверх пустого MODX на данный момент установлен бесплатный пакет ShopModxBox (за что огромное вам спасибо!)

Есть «Каталог товаров». В этом каталоге есть группы товаров «Группа 1», «Группа 2»… «Группа N»

Но сейчас выводится перечень товаров из самих групп, но не наименования групп.
Насколько понял, за вывод товаров отвечает: shopmodx/shop/catalog/list.tpl

Внутри файла содержится код:

{* Получаем товары*}
{extends «common/list/list.tpl»}
{block name=params append}
{$params = array_merge((array)$params, [
 «limit» => 6,
 «cache» => 1,
 «sort» => «modResource.id»
])}
{$processor = «web/catalog/products/getdata»}
{$no_records_error = «Товары не были получены»}
{$outer_tpl = «shop/catalog/list/fetch.tpl»}
{/block}

Вопрос 1. Чтобы получить и вывести не перечень самих товаров, а перечень категорий товаров — какой параметр нужно использовать? . И ещё вопрос №2 После установки на голый modx сборки ShopModxBox в разделе «Контакты» на капчу всё время отображаются ошибки прям в тексте WEB-страницы.

[2015-07-07 16:47:37] (ERROR @ /home/...sitename.ru/docs/core/model/modx/modx.class.php: 1836)
 
PHP warning: Missing argument 2 for modX::parseChunk(), called in /home/...sitename.ru/docs/core/components/modxsmarty/compiled/shopmodx/web/c4f67f496bd0e191c1968a23cbd74a8ce1e0a5ac_0.file.feedback.tpl.php on line 161 and defined

Подскажите, что не так и где копать?

Comments

Вопрос 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;
    }

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

Спасибо за квалифицированный ответ!!!

Продажа товаров сейчас сопровождается через 1С Управление торговлей 8.1. Там же хранятся номера деталей, по которым планируется искать товар на сайте. Т.е. в будущем, хотим выгружать из 1С-ки перечень имеющихся товаров и их свойства (описание, количество на складе, стоимость). Вложенные уровни не планируются. Т.е.: | Главная | Каталог товаров | Группа товара | Товар

Подскажите, по какому из вышеописанных Вами путей нам лучше идти с взглядом на будущее?

Если проект серьезный, лучше закажите у меня написать вам этот процессор. Он будет тогда учитывать и все добавляемые вам параметры поисков. То есть, к примеру, если вы в процессе допилите в web/catalog/products/getdata поиск по каким-то товарам, то новый расширяющий процессор сможет учитывать эти параметры поиска и выводить только те категории, для которых товары будут найдены. Цена вопроса 3000 рублей.

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

Я правильно понимаю, что это стоимость процессора вместе с автоматической загрузкой перечня товара из 1С Управление торговлей 8.1?

Нет, это только процессор для вывода категорий. То есть примерно полтора часа работы (я с запасом беру). Импорт из 1С у нас от 30 000 руб.

Понятно. Мы бы с радостью воспользовались таким предложением, т.к. это весьма разумная цена, но пока такой возможности у нас нет… Мы лучше потом когда Интернет-продажи заработают вам безвозмездно на развитие проекта денег переведём. Это у нас есть в планах такое.

Возвращаясь к моему первоначальному вопросу, с учётом имеющейся у нас 1С-ки 8.1 — по какому пути озвученному Вами в первом посте посоветуете идти?

Сначала попробуйте выгрузку из 1С выполнить через ShopModx1C. Что у вас вообще на сайт выгрузится и выгрузится ли вообще. И еще там надо будет прописать импорт дополнительных полей и обновление потом имеющихся товаров. И вот если уж у вас каталог будет, тогда уже и категории выводить будете.

Да, вы правы, надо начинать с импорта из 1С.

Насчёт вывода — вариант с [[Wayfinder?level=1]] пока вполне устроил. Спасибо!

Пока разбираюсь с устройством модуля ShopModxBox. Для себя делаю наброски в виде понятных взаимосвязей в каталоге. Кстати, думаю, они будут полезны для других, хотелось бы опубликовать эти картинки.

А что насчёт ошибки во вкладке КОНТАКТЫ в районе капчи? Куда копать, из-за чего возникает эта ошибка?