Фото товаров в MIniShop2
Товарищи, коллеги и иные представители родства с MODX.
Добрый день!..
Столкнулся с проблемой MiniShop2. Модуль крашнулся и единственным выходом его восстановление стало удаление и чистка кеша для повторной установки.
Всё заработало, но при этом все товары потеряли фотографии при том, что они физически есть на сервере и структура сохранена.
Можно, как-то, привязать эти фото к товарам без перезаливки в каждый товар?
Заранее спасибо если найдутся те-кто уже решил такую проблему.
Добрый день!..
Столкнулся с проблемой MiniShop2. Модуль крашнулся и единственным выходом его восстановление стало удаление и чистка кеша для повторной установки.
Всё заработало, но при этом все товары потеряли фотографии при том, что они физически есть на сервере и структура сохранена.
Можно, как-то, привязать эти фото к товарам без перезаливки в каждый товар?
Заранее спасибо если найдутся те-кто уже решил такую проблему.
Комментарии: 7
Перенесите топик в раздел «Вопросы». Раздел «Сайты на MODX»о том, как кто-то что-то сделал, а не о том, как у кого-то что-то сломалось и надо это починить.
А по поводу вопроса — достаточно просто. Можете тупо пройтись по файлам и папкам скриптом, брать название папки как ID товара, и с помощью процессора загрузки картинок перезагрузить фото.
Не знаю, насколько хорош код, как код, но работает. Делал пару месяцев назад. Комментарии по качеству кода — приветствуются.
<?php
//set_time_limit(00);
define('MODX_API_MODE', true);
require 'index.php';
$basePath = getcwd();
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(array
(
'target' => 'FILE',
'options' => array
(
'filename' => 'gallery.' . strftime('%Y-%m-%dT%H:%M:%S')
)
)
);
chdir($basePath . '/assets/images/resources/');
$folders = scandir(getcwd(),0);
foreach ($folders as $folder) {
if (($folder != '.') && ($folder != '..')) {
if (is_dir($folder)) {
$catalog = getcwd() . '/' . $folder;
chdir($catalog);
$files = scandir(getcwd(),0);
foreach ($files as $file) {
if (is_dir($file) == FALSE) {
//для лога выведем все файлы и id ресурсов
//echo 'Грузим: ' . getcwd() . '/' . $file . ' ID ресурса: ' . $folder . '
';
$res = $modx->runProcessor('gallery/upload', array(
'file' => getcwd() . '/' . $file,
'id' => $folder
), array(
'processors_path' => MODX_CORE_PATH . 'components/ms2gallery/processors/mgr/'
)
);
if ($res->isError()) {
print_r($res->getAllErrors());
} else {
print_r($res->getObject());
}
}
}
chdir(getcwd() . '/..');
}
}
}
Спасибо за совет, тему перенёс
Не за что) Два момента:
1. Скрипт актуален для ms2Gallery, для стандартной галереи miniShop2, наверное, нужно будет что-нибудь подправить. Подозреваю, что путь к процессору. В любом случае, это можно найти в постах на этом ресурсе.
2. Запускать скрипт нужно из консоли. Не из Console, не через браузер, а через SSH. Иначе скрипт по таймауту вылетит на 10-ом товаре (условно, конечно).
1. Скрипт актуален для ms2Gallery, для стандартной галереи miniShop2, наверное, нужно будет что-нибудь подправить. Подозреваю, что путь к процессору. В любом случае, это можно найти в постах на этом ресурсе.
2. Запускать скрипт нужно из консоли. Не из Console, не через браузер, а через SSH. Иначе скрипт по таймауту вылетит на 10-ом товаре (условно, конечно).
К сожалению код не помог. Изменил корневой путь до фото и строка 4 кода выводиться как ошибка в консоле.
ах. ну-да. Вы уточнили про ms2Gall
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.