msProductOptions - отображаются не заполненные поля

Проблема: отображаются пустые опции на странице товара, заданные через miniShop2 (скрин 1)
Однако, если данный товар открыть и сохранить, то тогда св-ва, которые не заполнены, не отображаются. (скрин 2)
Вопрос: С чем это может быть связано, может быть кто-то сталкивался? Кеш очищал, не помогает.
Просто не хочется каждый товар пересохранять вручную. Спасибо.

Описание :
MODX Revolution 2.6.1-pl, minishop2-2.4.11-pl

У товара есть опции (заданы через опции miniShop2), они выводятся через
[[msProductOptions?
    tpl=`tpl.msProductOptions1`
    &ignoreOptions=`manufactor`
]]
код tpl.msProductOptions1:
{foreach $options as $option}
    {if $option.value is array}
        {$option.caption | join : ', '}:
        {$option.value | join : ', '}
    {else}
        {$option.value}
    {/if}
{/foreach}
Сначала был создан товар, потом к нему назначены опции miniShop2, товар не пересохранялся после этого.
Джанго
18 декабря 2017, 17:30
modx.pro
2 425
0

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

Сергей Водолагин
18 декабря 2017, 20:56
0
Привет! У меня вот так вывод указан, всё отлично работает. Нужно добавить &hideEmpty=`1`
[[!msProductOptions?
	&tplOuter=`modifiedProductOptions.outer`
	&hideEmpty=`1`
]]
    Джанго
    18 декабря 2017, 21:11
    0
    Спасибо за ответ, указал &hideEmpty=`1`, но все равно не работает.
    Скорее всего, потому что в версии minishop2-2.4.11-pl нет такого параметра)
    Джанго
    18 декабря 2017, 22:32
    0
    сделал в результате вот так:
    {foreach $options as $option}
        {if $option.value is array}
            {var $value = ($option.value | join : ', ')}
            {if $value}
                {$option.caption | join : ', '}: {$value}
            {/if}
        {else}
            {$option.value}
        {/if}
    {/foreach}
      Денис
      19 декабря 2017, 10:34
      0
      Если после сохранения все становится нормально, значит опции были записаны как то не так. Попробуйте пересохранить все товары скриптом. Код вставлять в console. Сделайте обязательно бэкап!

      <?php
      $step = 50; //количество ресурсов за один шаг
      if (!isset($_SESSION['Console']['completed'])) {
          $_SESSION['console_offset'] = 0;
      }
      $offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
      $q = $modx->newQuery('msProduct');
      $total = $modx->getCount('msProduct', $q);
      $q->limit($step, $offset);
      $resources = $modx->getCollection('msProduct', $q);
      foreach ($resources as $resource) {
          $modx->error->reset();
          $modx->runProcessor('resource/update', $resource->toArray());
      }
      $_SESSION['console_offset'] = $offset + $step;
      if ($_SESSION['console_offset'] >= $total) {
        $sucsess = 100;
        $_SESSION['Console']['completed'] = true;
      } else {
        $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
        $_SESSION['Console']['completed'] = false;
      }
      for ($i=0; $i<=100; $i++) {
          if ($i <= $sucsess) {
              print '=';
          } else {
              print '_';
          }
      }
      print "\n";
      print $sucsess.'% ('.$_SESSION['console_offset'].')'."\n\n";
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4