Да, надо бы допилить этот момент в сборке. А так вот ревизия: gist.github.com/Fi1osof/cedd7b34d38708abad81/revisions

вот процессор для выборки ВСЕХ дочерних категорий. <?php /* Получаем все дочерние категории. По умолчанию поиск выполняется во всем каталоге */

require_once dirname(dirname(dirname(FILE))).'/resources/getdata.class.php';

class modWebCatalogCategoryGetdataProcessor extends modWebResourcesGetdataProcessor{

public function initialize(){
    
    $this->setDefaultProperties(array(
        'category_id'   => 85,
        
        'image_url_schema'      => 'base',
    ));
    
    if(!(int)$this->getProperty('category_id')){
        return "Не была указана категория";
    }
    
    return parent::initialize();
}

public function prepareQueryBeforeCount(xPDOQuery $c) {
    $c = parent::prepareQueryBeforeCount($c);
     
    $categories = array();
    $where = array(
        'id:in'    => $this->getCategories((int)$this->getProperty('category_id'), $categories),
    );
    
    $c->where($where);
    
    return $c;
}

protected function getCategories($parent, array & $categories){
    $q = $this->modx->newQuery('modResource', array(
        'deleted'   => 0,
        'published' => 1,
        'hidemenu'  => 0,
        'isfolder'  => 1,
        'parent'    => $parent,
    ));
    $q->select(array(
        'id',    
    ));
    if($s = $q->prepare() AND $s->execute()){
        while($row = $s->fetch(PDO::FETCH_ASSOC)){
            $categories[] = $row['id'];
            $this->getCategories($row['id'], $categories);
        }
    }
    return $categories;
}

//
public function afterIteration(array $list){
    $list = parent::afterIteration($list);
    
    switch($this->getProperty('image_url_schema')){
        case 'base':
            $images_base_url = $this->modx->runSnippet('getSourcePath');
            break;
            
        case 'full':
            $images_base_url = $this->modx->getOption('site_url');
            $images_base_url .= preg_replace("/^\//", "", $this->modx->runSnippet('getSourcePath'));
            break;
            
        default: $images_base_url = '';
    }
    
    foreach($list as & $l){
        $l['image'] = '';
        if(!empty($l['tvs']['image']['value'])){
            $l['image'] = $images_base_url . $l['tvs']['image']['value'];
        }
        else{
            $l['imageDefault'] = $images_base_url . 'products/No-Photo.jpg';
        }
    }
    return $list;
}

}

return 'modWebCatalogCategoryGetdataProcessor'; где что подкрутить чтобы выводился только один уровень категорий.

Сегодня представляю вашему вниманию первую бету компонента shopModx1C. Пока эта версия совсем сырая, но главное она выполняет — импорт каталога из 1С. В дальнейшем компонент будет постоянно прокачиваться, и будет реализована полная двухсторонняя интеграция с 1С. На сегодня возможности: Используется родной механизм 1С для взаимодействия с сайтами. Поддержка авторизации и сессий (в параметрах соединения в 1С обязательно надо будет указать логин/пароль MODX-пользователя с достаточными привилегиями). Импорт категорий и товаров. Импорт картинок. Обновление остатков и цен будет в самом ближайшем будущем (просто надо дописать обработку параметров). После установки компонента его надо сконфигурировать (плюс к этому еще и создать TV-поле для хранения артикула 1С). https://modxclub.ru/uploads/images/00/00/01/2014/04/20/53846ae08c.png В настройках 1С указать адрес http://yourDomain/assets/components/shopmodx1c/connectors/exchange/catalog/import.php P.S. У кого есть 1С (версии 8+) с каталогом товаров (с картинками), обращайтесь, потестируем.

Все равно начинать когда-то надо, так лучше на чем-нибудь реальном, чем просто так )

Не за что! Но наберись терпения. Эта задача совсем не на один час.

Почитать следует не по migxDB, а по ExtJS, потому что мига — это только обертка для конфигурации. Но учитывая твою задачу, лучше его и не трогать. Правильней допилить или наш групповой редактор, добавив в него редактирование этих цен/цветов и т.п. через дополнительный интерфейс по правой кнопки мыши, или в редактор документа еще одну вкладку сделать и там уже интерфейс. Как вкладку добавить смотри или плагин ShopModx, или плагин в XLexicon.

Понял. Я, в принципе начал ковыряться с процессорами и понял уже, что многие переписывать придется. Тут такая картина: у товара может быть несколько цветов, и по каждому цвету может быть задано разное количество размеров. А migxDB позволяет вложенные таблички делать? Не посоветуешь, где лучше почитать по нему?

Саша, привет! На самом деле очень не советую лезть в эти модели. Механизм крайне обширен, и не до конца проработан. Эта основа готовилась под конкретный проект и там индивидуально дорабатывалась, и на это были серьезные бюджеты. Там дело не только в сложных выборках, но и в интерфейсах управления и т.п. Пока для тебя наиболее приемлемый вариант — использовать TV-шки и migxDB. Как разную стоимость реализовать в зависимости от отдельных параметров — ты это уже все проходил. К сожалению, пока более удобного ничего не могу посоветовать.