Скрипт для обновления превью товаров miniShop2
Нашел рабочий скрипт для обновления всех превьюшек у товаров в miniShop2 для ModX. Честно говоря не понятно, почему данный функционал не встроен в miniShop2 сразу, потому как функция крайне нужная. Или предполагается какой-то специальный человек для ручной перегенерации изображений? В общем, надеюсь это когда-нибудь доделают.
Для выполнения скрипта потребуется установить дополнительный пакет 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";
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.