Перенос фото товаров из TV в галерею miniShop2
Постановка задачи: был интернет магазин, где товары — обычные ресурсы, а изображения — TV поля (в моем примере 5 штук). Необходимо сделать товары типа msProduct, а изображения перенести в стандартную галерею miniShop2.
Небольшой скрипт, решающий вторую часть задачи, ниже. (первая часть задачи решается примерно так)
Что он делает? Скрипт берет все записи с типом msProduct, и копирует изображения из TV в галерею miniShop2.
Надеюсь кому-нибудь будет полезным (скрипт не 100% универсальный, подгоняйте под себя! и да, я запускаю его из Console, если у вас просто php файл, то необходимо сначала авторизоваться в админке через API).
Небольшой скрипт, решающий вторую часть задачи, ниже. (первая часть задачи решается примерно так)
Что он делает? Скрипт берет все записи с типом msProduct, и копирует изображения из TV в галерею miniShop2.
Надеюсь кому-нибудь будет полезным (скрипт не 100% универсальный, подгоняйте под себя! и да, я запускаю его из Console, если у вас просто php файл, то необходимо сначала авторизоваться в админке через API).
<?php
// увеличиваем время выполнения скрипта
set_time_limit(3600);
// путь к изображениям в TV
$path = MODX_BASE_PATH;
$products = $modx->getCollection('msProduct');
foreach($products as $product) {
// устанавливаем корректный источник файлов
$product->set('source', 2);
$product->save();
// список TV, в которых прописаны картинки
$tvs = array('image','image2','image3','image4','image5');
foreach($tvs as $tv) {
$image = trim($product->getTVValue($tv));
if(!empty($image)) {
$image = $path.$image;
if(file_exists($image)) {
// запускаем процессор
$response = $modx->runProcessor('gallery/upload',
array('id' => $product->get('id'), 'name' => basename($image), 'file' => $image),
array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
);
if ($response->isError()) {
echo "Error on upload \"$image\": \n". print_r($response->getAllErrors(), 1);
}
else {
echo "Successful upload \"$image\": \n". print_r($response->getObject(), 1);
}
echo '<br />';
}
}
}
}
Комментарии: 3
Спасибо, полезный скрипт!
А к Тикетам интересно как прикрутить? Как решить ту же задачу, но с переносом картинок из тв-шек в тикет-файлы?
В теории немного правок и можно к Тикетам прикрутить
$response = $modx->runProcessor('file/upload .... array('processors_path' => MODX_CORE_PATH.'components/tickets/processors/web/')
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.