Главная/Wiki/Обновление всех превью у товаров minishop2

Wiki · MODX

Обновление всех превью у товаров minishop2

Как массово обновить превью изображений товаров miniShop2 после смены настроек.

Часто возникает ситуация, когда на всем интернет магазине, сделанном на базе minishop2, поменялся формат изображений у превью. Либо пришлось сделать изменения в настройках «Медиа» в разрешении превьюшек.

Чтобы превью на сайте отображалось корректно — нужно зайти в нужный товар в админпанели, далее зайти во вкладку «Галерея» и выбрать пункт «обновить все». Это становится неудобно если товаров с изображениями очень много на сайте.

Для этого нам поможет скрипт, который нужно выполнить просто в консоли. Изменять в скрипте ничего не нужно — просто выполните его в консоли. Конечно, желательно выполнить это на тестовой версии сайта, чтобы убедиться что код сделает именно то, что вам нужно.

<?php
$step = 5;
$offset = isset($_SESSION['wsu_offset']) && $_SESSION['wsu_offset'] ? $_SESSION['wsu_offset'] : 0;
$miniShop2 = $modx->getService('minishop2');
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('msProductFile', array('parent' => 0));
$total = $modx->getCount('msProductFile', $q);
$q->sortby('product_id', 'ASC');
$q->sortby('rank', 'DESC');
$q->limit($step,$offset);
$resources = $modx->getCollection('msProductFile', $q);
foreach ($resources as $resource) {
    $modx->runProcessor('mgr/gallery/generate', array('id' => $resource->id),
        array('processors_path' => $modx->getOption('core_path').'components/minishop2/processors/'));
}
 
$_SESSION['wsu_offset'] = $offset + $step;
if ($_SESSION['wsu_offset'] >= $total) {
  $success = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['wsu_offset']);
} else {
  $success = round($_SESSION['wsu_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $success) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['wsu_offset'] ?
           $_SESSION['wsu_offset'] :
           ($success == 100 ? $total : 0);
print "\n";
print $success.'% ('.$current.')'."\n\n";

← Все разделы wiki

Контакты

Давайте обсудим задачу

Свяжитесь удобным способом — ответим и предложим формат работы.

Время работы

Пн–Пт 10:00–18:00
Сб–Вс Выходной
Обед 13:00–14:00

Почта и адрес

info@webstepup.ru
г. Волгодонск, ул. Степная 86, офис 11

Полный бриф

Обратный звонок