Да, надо бы допилить этот момент в сборке. А так вот ревизия: 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. Как разную стоимость реализовать в зависимости от отдельных параметров — ты это уже все проходил. К сожалению, пока более удобного ничего не могу посоветовать.