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

Добрый день.
Подскажите где найти рабочий вариант для последний версии minishop2?
Пробовал три варианта с этой страницы bezumkin.ru/modx/minishop2/solutions/1465/ и все нерабочие причем первый удалил все картинки с сайта( с галереи minisop2)

Возможно что то не так делаю, но скрипты выложены давно и вероятно просто не совместимы.
Заранее благодарен.
Александр
21 марта 2016, 13:31
modx.pro
9
9 837
0

Комментарии: 42

Илья Уткин
21 марта 2016, 16:46
3
+2
    Александр
    21 марта 2016, 21:07
    0
    Спасибо. Из корня?
      Илья Уткин
      21 марта 2016, 21:19
      +1
      Не, в дополнении Console
        Александр
        22 марта 2016, 09:34
        0
        Спасибо. На работе буду пробовать)
          Leo
          Leo
          16 декабря 2016, 13:38
          3
          0
          рабочий вариант, проверено

          <?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;
      Raimei
      26 июля 2016, 20:47
      0
      А как сделать так что бы он учитывал вотермарку?
        Илья Уткин
        26 июля 2016, 21:05
        0
        Этот скрипт использует стандартный механизм генерации превьюшек. Так что надо просто указать добавление вотермарки в настройках источника файлов.
          Raimei
          27 июля 2016, 18:24
          0
          Не, не хочет работать. Если в ручную обновлять то нормально, если через 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»}]
            Илья Уткин
            28 июля 2016, 12:09
            +1
            Укажите путь к картинке целиком
            [{"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"}]
              Raimei
              28 июля 2016, 12:28
              0
              Заработало. Благодарю за помощь)
              И спасибо за шпаргалки на сайте
                Andrey
                02 сентября 2016, 09:47
                0
                для ms2gallery не работает
        Наумов Алексей
        22 марта 2016, 09:24
        0
        И первый (для miniShop2) и второй (для ms2Gallery) рабочие, я совсем недавно ими пользовался.
          Александр
          22 марта 2016, 09:32
          0
          Первый это первый в теме по ссылке или ниже тот что обновленный?
          Как запускал? из корня как сказано в инструкции?
          И версию установленного minishop2 напиши)
            Наумов Алексей
            22 марта 2016, 09:35
            0
            Первый — самый первый, тот что «Обновлено 23.01.2014» — это для ms2Gallery.

            Да, делал файлик в корне и запускал, вроде бы не было проблем. Ну работает только очень долго :)
              Александр
              22 марта 2016, 09:39
              0
              А те самый верхний выходит для minishop2?
              Да тоже сделал и из products все удалилось. А так быстро довольно на vps:)
          Александр
          22 марта 2016, 09:40
          0
          Попробую ещё раз с console:)
            Александр
            22 марта 2016, 10:25
            0
            Спасибо всем за помочь:) Получилось.
              Влад
              27 июля 2016, 03:11
              0
              У меня сегодня после перегенерации скриптом с docs.modx.pro все превьюхи заглючили таким образом что визуально порядок не изменился а вот физически {$thumb} проставился по последней фотке в галерее а не по первой!!! Блин не знаю чо делать…
                Вадим Раевский
                02 декабря 2016, 19:59
                0
                UPDATE `xxx_ms2_products` SET `thumb` = CONCAT('/img/product/',`id`,'/120x90/',SUBSTRING_INDEX(`image`, '/', -1));
                я так исправил)
                Антон
                Антон
                02 декабря 2016, 20:45
                0
                У меня тоже все переглючило после этого скрипта.

                <?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;
                Картинки перегенерировались, но с сайта пропали, пришлось по одной обновить и все появилось.
                  Михаил
                  16 декабря 2016, 12:09
                  0
                  Подскажите пожайлуста. Как мне обновить все превью товаров если они при заполнении сайта не устанавливались??? В галереи есть фото а в превью нет… Вот скрншот.

                  s018.radikal.ru/i528/1612/68/fb9880e2a0b4.png
                      ck
                      ck
                      31 января 2017, 15:46
                      1
                      0
                      Ссылка была изменена — docs.modx.pro/components/ms2gallery/generation-preview
                        Роман
                        15 декабря 2017, 22:16
                        0
                        А где этот код исполнять нужно?

                        $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();
                        }
                          ck
                          ck
                          16 декабря 2017, 00:57
                          0
                          Нужно установить дополнение Console через управление пакетами.
                            Роман
                            16 декабря 2017, 09:39
                            0
                            Я подумал, что то в другом, в консоле вот такое выдает:
                            MODx 2.6.0 + miniShop2 2.4.11-pl

                            Есть мысли?

                              Володя
                              16 декабря 2017, 10:40
                              0
                              вы используете код для ms2gallery
                              а нужно docs.modx.pro/components/minishop2/interface/item#Обновление-превью
                                Роман
                                16 декабря 2017, 10:44
                                0
                                Теперь вот что (((

                                  Володя
                                  16 декабря 2017, 11:24
                                  0
                                  текст ошибки говорит обо всем. Переведите, загуглите, подумайте…
                                    Роман
                                    16 декабря 2017, 12:02
                                    0
                                    Написал в тех.поддержку хостинга, я не знаю что это за путь /usr/share/php
                                      Володя
                                      16 декабря 2017, 12:07
                                      +1
                                      если вы запускаете этот скрипт в консоли оставьте только это
                                      // Проходимся по всем товарам
                                      $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();
                                              }
                                          }
                                      }
                                      Роман
                                      16 декабря 2017, 12:14
                                      0
                                      Процесс пошел, спасибо!
                                      Сергей Карпович
                                      17 января 2021, 19:12
                                      0
                                      А как указать в каких конкретно категориях выполнить перегенерацию?
                  Андрей Степаненко
                  06 февраля 2019, 20:03
                  0
                  Можно с помощью msPre перегенироваровать превью товаров.
                  По умолчанию показывается 20 товаров, можно выставить к пример 1000-2000 товаров, отметить все, и в меню выбрать


                  Можно и больше конечно выставить)) Но там уже надо смотреть чтобы браузер не завис, за пару заходов обновятся все превью
                    al1ve
                    01 февраля 2024, 18:18
                    0
                    У меня такой вопрос по поводу перегенерации превью. Использовал этот код — ilyaut.ru/cheats/to-rebuild-all-previews-of-products Но при запуске его в консоли — просто крутится надпись Loading… и всё, хотя по идее, при клике можно посмотреть прогресс. В чём может быть проблема? Версия минишоп2 — 2.9.3
                      Андрей
                      01 февраля 2024, 18:40
                      0
                      Какое кол-во картинок общее? Ошибки в логе, в консоли есть? ms2Gallery установлена или стандартная галерея?
                        al1ve
                        01 февраля 2024, 19:12
                        0
                        Точное не могу сказать — не считал. Просто когда раньше пользовался — обычно выводил в консоли прогресс — типа полоска и проценты. Но её нет. Просто висит loading.
                          Николай Савин
                          02 февраля 2024, 10:10
                          0
                          Возможно не хватает оперативной памяти на обработку шага. Попробуйте сделать поменьше количество изображений в одном шаге
                            al1ve
                            02 февраля 2024, 10:25
                            0
                            А где именно не хватает оперативки? На сервере хостинга? У меня самого на локальной машине 16 гб. Ну и шаг использую минимальный — 5 штук. Я подозреваю, что это может быть изза версии пхп на сервере. Там стоит 7.4.30 или вроде того. Но это лишь моё предположение. Сам сайт на удалённом хостинге.
                              Константин Ильин
                              02 февраля 2024, 11:19
                              0
                              из моего опыта это было либо из-за версии пхп или из-за mysql 8
                                al1ve
                                02 февраля 2024, 14:40
                                0
                                а есть подобный скрипт, адаптированный под 7ой пхп?.. Заодно спрошу — похожий функционал есть в минишопе2 4.2.2 и выше, но у меня установлен 2.9.3. Если я обновлюсь с 2.9.3 до 4.х версии, чтобы иметь функционал по обновлению превьюшек — у меня ничего не поломается? Есть какие то риски в этом?
                                  Константин Ильин
                                  02 февраля 2024, 15:25
                                  0
                                  он нормально работает под 7кой

                                  Логи ошибок смотрите, там обязательно что-то есть

                                  обновление минишоп чревато с такой разницей в версиях, скажем так процесс обновления может аукнуться, насколько помню там есть значительные изменения, лучше разобраться со скриптом.
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      42