Задать вопрос
DetaliDigital
@DetaliDigital
Я люблю интернет-рекламу

Как перегенерировать изображения в магазине Minishop 2?

Я хотел уточнить, как через CMS перегенерировать все картинки, при изменение параметров в источников файлов.

На сайте в modstore в описание CCK Minishop 2 написано:

Все предпросмотровые картинки генерируются при загрузке изображения. Вы можете указать нужные параметры в настройке источника файлов (для MS устанавливается свой, конечно).
При изменении параметров можно перегенерировать превьюшки для всех картинок товара сразу.


Вот я хотел уточнить, кто знает где это заветная кнопка обновления изображений?

Спасибо.
  • Вопрос задан
  • 1195 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanes
@Sanes
Версия MS2 2.1 до версии 2.3 видимо так же. В 2.4 галерея изменилась.
Возможно сработает только для 1 товара, для всех товаров был скрипт.
=================
a06c82d7de55463f8335052bcd0fe49f.png
Ответ написан
@Batyabest
Вот скрипт, который позволит перегенерирвоать все фото. Запускать его из админ панели в пакеты - Console. Console должен быть предварительно установлен.
<?php
$step = 5;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 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['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы