Прошу помочь с API miniShop2
Написал скрипт который переносит сайт с Drupal'а на miniShop2 (когда закончу — выложу в GitHub).
Всё работает, собирался уже запускать полный процесс импорта, как заметил, что картинки к товарам хранятся не только в таблице modx_ms2_products, но ещё и в modx_ms2_product_files.
Код функции создающей каждый отдельный товар:
Всё работает, собирался уже запускать полный процесс импорта, как заметил, что картинки к товарам хранятся не только в таблице modx_ms2_products, но ещё и в modx_ms2_product_files.
Код функции создающей каждый отдельный товар:
function CreateProduct($arr, $content, $modx)
{
/* @var msProduct $object */
$object = $modx->newObject('msProduct');
$keywords = $arr['keywords'];
unset($arr['keywords']);
foreach($arr as $key => $value){
$object->set($key, $value);
}
$object->setContent($content);
$response=array();
$response['msProduct']=($object->save())?'Created':'Fail';
$id = $object->get('id');
// SEOPro compability
$seoPro = $modx->getService('seopro','seoPro',$modx->getOption('seopro.core_path',null,$modx->getOption('core_path').'components/seopro/').'model/seopro/',$config);
$objSeoKeywords = $modx->getObject('seoKeywords', array('resource' => $id));
// Модификация для переноса всех ключевых слов
if(!$objSeoKeywords)
{
$objSeoKeywords = $modx->newObject('seoKeywords', array('resource' => $id));
}
if($objSeoKeywords){
$objSeoKeywords->set('keywords', $keywords);
$response['objSeoKeywords']=($objSeoKeywords->save())?'Saved':'Fail';
}
if($response['msProduct']=='Created' && $response['objSeoKeywords']=='Saved') $response['status']='OK'; else $response['status']='Fail';
return $response;
}Просьба пояснить по API miniShop2 — как картинки добавить правильно в продукты? Файлы уже загружены на хостинг, пути все есть в БД, в функцию передаются в параметре $arr['image']. Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Если коротко: у товара должен быть указан правильный source, а потом просто используй процессор upload из галереи.
Ну и создание товаров через API MODX неверное, при таком раскладе не отработают разные проверки и плагины. Нужно использовать обычные системные процессоры MODX (не MS2!), с указанием class_key msProduct.
В общем, смотри мой скрипт импорта, там всё есть.
Конкретно:
Процессор 'gallery/upload' при инициализации выдаёт ошибку: %ms2_gallery_err_no_product
Потому что в коде:
$id не принимается из передаваемых параметров, а считывается из $_GET.
Вобщем буду приспосабливать под себя. Может сделаю пулл-реквест.
Василий, а каким метолом создавать производителя? Например если я выгружаю из xml, мне нужно проверить если такого производителя нет, то создавать нового.уже нашёл ответвыдает ошибку ms2_gallery_err_no_product и на первом товаре сбрасывается.
1. В цикле создаю товары, класс указан msProduct
2. Закачиваю на сервер картинку
3. Закачиваю картинку через процессор.
если убрать запуск процессора gallery, то товары создаются нормально.
id и image точно передаются.
Пробовал (нашел где-то), $modx->error->reset(); в цикл пихать, проходит первую категорию, товары создаются с картинками. Помимо того, что долго он еще и вешается, мол массив пустой, хотя он не пустой, в общем это костыль какой-то.
Подскажите пожалуйста