Обновление всех превью товара MS2
Добрый день.
Подскажите где найти рабочий вариант для последний версии minishop2?
Пробовал три варианта с этой страницы bezumkin.ru/modx/minishop2/solutions/1465/ и все нерабочие причем первый удалил все картинки с сайта( с галереи minisop2)
Возможно что то не так делаю, но скрипты выложены давно и вероятно просто не совместимы.
Заранее благодарен.
Подскажите где найти рабочий вариант для последний версии minishop2?
Пробовал три варианта с этой страницы bezumkin.ru/modx/minishop2/solutions/1465/ и все нерабочие причем первый удалил все картинки с сайта( с галереи minisop2)
Возможно что то не так делаю, но скрипты выложены давно и вероятно просто не совместимы.
Заранее благодарен.
Комментарии: 42
ilyaut.ru/cheats/to-rebuild-all-previews-of-products/
Запускать в Console
Запускать в Console
Спасибо. Из корня?
Не, в дополнении Console
Спасибо. На работе буду пробовать)
рабочий вариант, проверено
<?php
define('MODX_API_MODE', true);
require 'index.php'; // Если файл лежит не в корне - здесь нужно указать верный путь
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
if (!isset($parents)) {$parents = 0;} // Можно указать список категорий для поиска товаров
if (!isset($resources)) {$resources = '';} // Можно указать конкретный список товаров
$pdo = $modx->getService('pdoFetch');
$condition = array('parents' => $parents);
$files = $pdo->getCollection('msProduct',
array(
'msProduct.class_key' => 'msProduct',
),
array(
'class' => 'msProduct',
'parents' => $parents,
'resources' => $resources,
'innerJoin' => array(
'msProductFile' => array(
'alias' => 'msProductFile',
'on' => array(
'msProduct.id = msProductFile.product_id',
'msProductFile.parent' => 0,
'msProductFile.type' => 'image',
)
)
),
'select' => array(
'msProductFile' => 'all'
),
'sortby' => 'msProduct.id'
)
);
echo '<pre>';
echo $pdo->getTime();
foreach ($files as $row) {
$file = $modx->newObject('msProductFile');
$file->fromArray($row, '', true, true);
$children = $file->getMany('Children');
foreach ($children as $child) {
$child->remove();
}
$file->generateThumbnails();
// Обновляем thumb и image товара
if ($product = $file->getOne('Product')) {
$product->updateProductImage();
}
}
echo microtime(true) - $modx->startTime;
А как сделать так что бы он учитывал вотермарку?
Этот скрипт использует стандартный механизм генерации превьюшек. Так что надо просто указать добавление вотермарки в настройках источника файлов.
Не, не хочет работать. Если в ручную обновлять то нормально, если через console то скрипт дошел до 100% иии… ничего. Просто ничего не произошло. Логи чистые.
[{«w»:227,«h»:243,«q»:90,«zc»:«0»,«bg»:«ffffff»,«fltr»:«wmi|wm.png|113x209|75»},{«w»:326,«h»:216,«q»:70,«zc»:«0»,«bg»:«ffffff»,«fltr»:«wmi|wm.png|164x189|75»}]
Укажите путь к картинке целиком
[{"w":227,"h":243,"q":90,"zc":"0","bg":"ffffff","fltr":"wmi|/assets/components/minishop2/wm.png|113x209|75"},
{"w":326,"h":216,"q":70,"zc":"0","bg":"ffffff","fltr":"wmi|/assets/components/minishop2/wm.png|164x189|75"}]
Заработало. Благодарю за помощь)
И спасибо за шпаргалки на сайте
И спасибо за шпаргалки на сайте
для ms2gallery не работает
И первый (для miniShop2) и второй (для ms2Gallery) рабочие, я совсем недавно ими пользовался.
Первый это первый в теме по ссылке или ниже тот что обновленный?
Как запускал? из корня как сказано в инструкции?
И версию установленного minishop2 напиши)
Как запускал? из корня как сказано в инструкции?
И версию установленного minishop2 напиши)
Первый — самый первый, тот что «Обновлено 23.01.2014» — это для ms2Gallery.
Да, делал файлик в корне и запускал, вроде бы не было проблем. Ну работает только очень долго :)
Да, делал файлик в корне и запускал, вроде бы не было проблем. Ну работает только очень долго :)
А те самый верхний выходит для minishop2?
Да тоже сделал и из products все удалилось. А так быстро довольно на vps:)
Да тоже сделал и из products все удалилось. А так быстро довольно на vps:)
Попробую ещё раз с console:)
Спасибо всем за помочь:) Получилось.
У меня сегодня после перегенерации скриптом с docs.modx.pro все превьюхи заглючили таким образом что визуально порядок не изменился а вот физически {$thumb} проставился по последней фотке в галерее а не по первой!!! Блин не знаю чо делать…
UPDATE `xxx_ms2_products` SET `thumb` = CONCAT('/img/product/',`id`,'/120x90/',SUBSTRING_INDEX(`image`, '/', -1));
я так исправил)
У меня тоже все переглючило после этого скрипта.
<?php
define('MODX_API_MODE', true);
require 'index.php';
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');
$files = $modx->getIterator('msResourceFile', array('parent' => 0));
foreach ($files as $file) {
$children = $file->getMany('Children');
foreach ($children as $child) {
$child->remove();
}
$file->generateThumbnails();
}
echo microtime(true) - $modx->startTime;
Картинки перегенерировались, но с сайта пропали, пришлось по одной обновить и все появилось.
Подскажите пожайлуста. Как мне обновить все превью товаров если они при заполнении сайта не устанавливались??? В галереи есть фото а в превью нет… Вот скрншот.
s018.radikal.ru/i528/1612/68/fb9880e2a0b4.png
s018.radikal.ru/i528/1612/68/fb9880e2a0b4.png
Ссылка была изменена — docs.modx.pro/components/ms2gallery/generation-preview
А где этот код исполнять нужно?
$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');
$files = $modx->getIterator('msResourceFile', array('parent' => 0));
foreach ($files as $file) {
$children = $file->getMany('Children');
foreach ($children as $child) {
$child->remove();
}
$file->generateThumbnails();
}
Нужно установить дополнение Console через управление пакетами.
Я подумал, что то в другом, в консоле вот такое выдает:
MODx 2.6.0 + miniShop2 2.4.11-pl
Есть мысли?
MODx 2.6.0 + miniShop2 2.4.11-pl
Есть мысли?
вы используете код для ms2gallery
а нужно docs.modx.pro/components/minishop2/interface/item#Обновление-превью
а нужно docs.modx.pro/components/minishop2/interface/item#Обновление-превью
текст ошибки говорит обо всем. Переведите, загуглите, подумайте…
Написал в тех.поддержку хостинга, я не знаю что это за путь /usr/share/php
если вы запускаете этот скрипт в консоли оставьте только это
// Проходимся по всем товарам
$products = $modx->getIterator('msProduct', array('class_key' => 'msProduct'));
foreach ($products as $product) {
// Получаем оригиналы их картинок
$files = $product->getMany('Files', array('parent' => 0));
foreach ($files as $file) {
// Затем получаем их преью
$children = $file->getMany('Children');
foreach ($children as $child) {
// Удаляем эти превью, вместе с файлами
$child->remove();
}
// И генерируем новые
$file->generateThumbnails();
// Если это первый файл в галерее - обновляем ссылку на превью товара
/** @var msProductData $data */
if ($file->get('rank') == 0 && $data = $product->getOne('Data')) {
$thumb = $file->getFirstThumbnail();
$data->set('thumb', $thumb['url']);
$data->save();
}
}
}
Процесс пошел, спасибо!
А как указать в каких конкретно категориях выполнить перегенерацию?
Можно с помощью msPre перегенироваровать превью товаров.
По умолчанию показывается 20 товаров, можно выставить к пример 1000-2000 товаров, отметить все, и в меню выбрать
Можно и больше конечно выставить)) Но там уже надо смотреть чтобы браузер не завис, за пару заходов обновятся все превью
По умолчанию показывается 20 товаров, можно выставить к пример 1000-2000 товаров, отметить все, и в меню выбрать
Можно и больше конечно выставить)) Но там уже надо смотреть чтобы браузер не завис, за пару заходов обновятся все превью
У меня такой вопрос по поводу перегенерации превью. Использовал этот код — ilyaut.ru/cheats/to-rebuild-all-previews-of-products Но при запуске его в консоли — просто крутится надпись Loading… и всё, хотя по идее, при клике можно посмотреть прогресс. В чём может быть проблема? Версия минишоп2 — 2.9.3
Какое кол-во картинок общее? Ошибки в логе, в консоли есть? ms2Gallery установлена или стандартная галерея?
Точное не могу сказать — не считал. Просто когда раньше пользовался — обычно выводил в консоли прогресс — типа полоска и проценты. Но её нет. Просто висит loading.
Возможно не хватает оперативной памяти на обработку шага. Попробуйте сделать поменьше количество изображений в одном шаге
А где именно не хватает оперативки? На сервере хостинга? У меня самого на локальной машине 16 гб. Ну и шаг использую минимальный — 5 штук. Я подозреваю, что это может быть изза версии пхп на сервере. Там стоит 7.4.30 или вроде того. Но это лишь моё предположение. Сам сайт на удалённом хостинге.
из моего опыта это было либо из-за версии пхп или из-за mysql 8
а есть подобный скрипт, адаптированный под 7ой пхп?.. Заодно спрошу — похожий функционал есть в минишопе2 4.2.2 и выше, но у меня установлен 2.9.3. Если я обновлюсь с 2.9.3 до 4.х версии, чтобы иметь функционал по обновлению превьюшек — у меня ничего не поломается? Есть какие то риски в этом?
он нормально работает под 7кой
Логи ошибок смотрите, там обязательно что-то есть
обновление минишоп чревато с такой разницей в версиях, скажем так процесс обновления может аукнуться, насколько помню там есть значительные изменения, лучше разобраться со скриптом.
Логи ошибок смотрите, там обязательно что-то есть
обновление минишоп чревато с такой разницей в версиях, скажем так процесс обновления может аукнуться, насколько помню там есть значительные изменения, лучше разобраться со скриптом.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.