Нет мини изображений в галерее на странице товара.

У части товаров изображения показываются. Код img src="[[+360x]]" Если изменить на img src="[[+360x270]]" то показываются картинки у другой части товаров. Как сделать что бы у всех товаров были картинки?
В настройках MS2 Images «w»:360,«q»:90,«iar»:1,«bg»:«fff»
Кефирка
07 июня 2017, 12:07
modx.pro
696
0

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

Александр
07 июня 2017, 16:56
0
Скорее всего картинки генерировались после части залитых товаров. Всмысле, часть товаров заливались с одними настройками в медиаресурсе, другая часть — с другими настройками.
надо:
а) или перегенерировать все картинки скриптом через консоль
б) перегенерировать картинки в тех товарах, в которых непоказываются

2ая возможная проблема если совет выше непоможет:
Скорее всего непоказываются те, у которых пропорции несоответсвуют параметрам.
В настройках укажите еще и ширину:
{«w»: ширина,«h»: высота,«q»:70,«zc»:«1»,«bg»:«ffffff»}
при zc (zoomcrop) картинка будет обрезаться до нужной
После изменения настроек — также перегенерировать превью
    Кефирка
    07 июня 2017, 16:58
    0
    Думаю мне поможет этот вариант:
    а) или перегенерировать все картинки скриптом через консоль

    Как это сделать?
      Александр
      07 июня 2017, 17:05
      +1
      документацию прочитать…

      Или вы можете обновить сразу все картинки специальным скриптом:
      <?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');
      
      // Проходимся по всем товарам
      $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();
              }
          }
      }
      
      echo microtime(true) - $modx->startTime;
        Кефирка
        07 июня 2017, 22:14
        0
        Стыдно признаться, не знаю как его запустить…
          Максим Кузнецов
          07 июня 2017, 22:40
          0
          Cамый простой вариант:
          — ставите дополнение Console.
          — открываете его вкладку
          — в появившуюся форму вставляете желаемый код
          — запускаете

          С таким способом данные строчки можно не писать:
          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');
            Кефирка
            08 июня 2017, 08:33
            0
            Спасибо! Проблема решилась.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6