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

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

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

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

Илья Уткин
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
          2
          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
                                      Процесс пошел, спасибо!
                  Андрей Степаненко
                  06 февраля 2019, 20:03
                  0
                  Можно с помощью msPre перегенироваровать превью товаров.
                  По умолчанию показывается 20 товаров, можно выставить к пример 1000-2000 товаров, отметить все, и в меню выбрать


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