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
02 июня 2013, 00:24
modx.pro
2 546
0

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

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

Положил свой тестовый файл файл в папку /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
0
Сделал аналогичным способом
$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
    0
    У Товаров в базе есть поле source, в которое пишется ид источника товаров. По Умолчанию туда заносится 1. нужно руками при добавлении товаров указывать ему это свойство с ид нужного источника.
      Андрей Ятин
      22 июля 2013, 04:17
      0
      Не помогло, видно дело не в этом.
        Андрей Ятин
        22 июля 2013, 04:33
        0
        Спасибо, помогло. Единственное почему то через сохранение объекта msProduct не заносит в базу пришлось прямой запрос делать.
          Воеводский Михаил
          22 июля 2013, 07:04
          0
          Объект msProductData.

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

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

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