MS2: Как добавить товару картинку с другого сайта?

Делаю импорт товаров. У каждого товара есть одна большая картинка на старом сайте.

Я добавляю товар:
$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) Какие именно процессоры запустить для генерации всего нужного из одной большой картинки?

Заранее благодарю за помощь!
Peter Zenin
Peter Zenin
02 июня 2013, 00:24
modx.pro
3 009

Комментарии: 10

Peter Zenin
02 июня 2013, 10:05
Разобрался вроде.

Положил свой тестовый файл файл в папку /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));
Андрей Ятин
21 июля 2013, 19:32
Сделал аналогичным способом
$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 срабатывает, в остальных нет.
В чем может быть причина?


    Воеводский Михаил
    21 июля 2013, 20:49
    У Товаров в базе есть поле source, в которое пишется ид источника товаров. По Умолчанию туда заносится 1. нужно руками при добавлении товаров указывать ему это свойство с ид нужного источника.
      Андрей Ятин
      22 июля 2013, 04:17
      Не помогло, видно дело не в этом.
        Андрей Ятин
        22 июля 2013, 04:33
        Спасибо, помогло. Единственное почему то через сохранение объекта msProduct не заносит в базу пришлось прямой запрос делать.
          Воеводский Михаил
          22 июля 2013, 07:04
          Объект msProductData.

          Или нет… Позже посмотрю.
            Воеводский Михаил
            25 июля 2013, 13:34
            У меня такой код создает ресурс и выставляет необходимый источник файлов:

            $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());
              Андрей Ятин
              04 августа 2013, 22:11
              У вас через процессор работает, так конечно намного лучше, но медленее, мне пришлось через запросы писать там очень много в прайсах позиций, слишком долго выходит, может в этом и дело.
              $this->modx->getOption('ms2_product_source_default')
              по идее должен число возвращать, так?

      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10