MS2: Как добавить товару картинку с другого сайта?
Делаю импорт товаров. У каждого товара есть одна большая картинка на старом сайте.
Я добавляю товар:
Мне к товару надо взять большую картинку с старого сайта, сделать все уменьшенные копии и т.п.
Я правильно понимаю?:
— сначала я скачиваю картинку на сервер в папку /assets/images/products/4/kartinka.jpg где 4 — это id товара
— затем запускаю какие-то процессоры из /core/components/minishop2/processors/mgr/gallery/ чтобы из большой картинки сделались маленькие, и процессор наверное должен вернуть адреса превью и картинки
— затем я обновляю свойства товара image и thumb
Не подскажете,
1) что я должен передать процессорам (путь на сервере, удаленный урл и т.п.), чтоб они сгенерили все нужные картинки?
2) Какие именно процессоры запустить для генерации всего нужного из одной большой картинки?
Заранее благодарю за помощь!
Я добавляю товар:
$addProduct = $modx->newObject('msProduct');
$addProduct->fromArray($datas);
$addProduct->save();
Мне к товару надо взять большую картинку с старого сайта, сделать все уменьшенные копии и т.п.
Я правильно понимаю?:
— сначала я скачиваю картинку на сервер в папку /assets/images/products/4/kartinka.jpg где 4 — это id товара
— затем запускаю какие-то процессоры из /core/components/minishop2/processors/mgr/gallery/ чтобы из большой картинки сделались маленькие, и процессор наверное должен вернуть адреса превью и картинки
— затем я обновляю свойства товара image и thumb
Не подскажете,
1) что я должен передать процессорам (путь на сервере, удаленный урл и т.п.), чтоб они сгенерили все нужные картинки?
2) Какие именно процессоры запустить для генерации всего нужного из одной большой картинки?
Заранее благодарю за помощь!
Комментарии: 10
Разобрался вроде.
Положил свой тестовый файл файл в папку /assets/images/petja777.jpg
id продукта, которому добавить картинку с загрузкой и созданием всех иконок = 4 ('id' => 4)
Положил свой тестовый файл файл в папку /assets/images/petja777.jpg
id продукта, которому добавить картинку с загрузкой и созданием всех иконок = 4 ('id' => 4)
$processorPath = MODX_CORE_PATH . 'components/minishop2/convert/ms1/processors/';
$file = array(
'id' => 4,
'name' => 'petja777.jpg',
'file' => MODX_ASSETS_PATH. 'images/petja777.jpg',
);
require $processorPath . '/config.inc.php';
$response = $modx->runProcessor('gallery/upload', $file, array('processors_path' => $processorPath));
Молодец, всё верно!
Сделал аналогичным способом
Генерируется только в одном ресурсе. Во всех ресурсах подхватывает по умолчанию источник файлов «Filesystem».
В одном в котором руками заменял источник файлов на MS2 Images срабатывает, в остальных нет.
В чем может быть причина?
$processorPath = MODX_CORE_PATH . 'components/minishop2/convert/ms1/processors/';
//return $modx->error->success($foto);
$file = array(
'id' => $id_product,
'name' => $id_product.'-' . translit($article).'.' . getFileType($img),
'file' => $img,
);
require $processorPath . '/config.inc.php';
$response = $modx->runProcessor('gallery/upload', $file, array('processors_path' => $processorPath));
if ($response->isError()) {
return $modx->error->success($response->getMessage());
}
Ошибок не возвращает, но не генерирует изображения.Генерируется только в одном ресурсе. Во всех ресурсах подхватывает по умолчанию источник файлов «Filesystem».
В одном в котором руками заменял источник файлов на MS2 Images срабатывает, в остальных нет.
В чем может быть причина?
У Товаров в базе есть поле source, в которое пишется ид источника товаров. По Умолчанию туда заносится 1. нужно руками при добавлении товаров указывать ему это свойство с ид нужного источника.
Не помогло, видно дело не в этом.
Спасибо, помогло. Единственное почему то через сохранение объекта msProduct не заносит в базу пришлось прямой запрос делать.
Объект msProductData.
Или нет… Позже посмотрю.
Или нет… Позже посмотрю.
У меня такой код создает ресурс и выставляет необходимый источник файлов:
$productData = array_merge(array('template' => $this->modx->getOption('ms2_template_product_default')
,'source' => $this->modx->getOption('ms2_product_source_default')
)
,$productData
);
$addProduct = $this->modx->newObject($classKey,$productData);
$response = $this->modx->runProcessor('resource/create', $addProduct->toArray());
У вас через процессор работает, так конечно намного лучше, но медленее, мне пришлось через запросы писать там очень много в прайсах позиций, слишком долго выходит, может в этом и дело.
$this->modx->getOption('ms2_product_source_default')
по идее должен число возвращать, так?
Да, возвращает число.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.