Как скрыть пустое значение в опциях miniShop2?

Добрый вечер. Создал опцию в настройках miniShop2 с типом «Выпадающий список». Не во всех товарах мне нужно выбирать значение этой опции. И там где я ее не выбираю, после сохранения в карточке товара получаю название опции и рядом пустое поле.


Это в админке в опциях товара:


Это в карточке товара:


Вот как вызываю опции:
[[msProductOptions? &tpl=`msOptionsProductTpl`]]

Сам чанк msOptionsProductTpl:
{foreach $options as $option}
<div class="opt-row">
  <span class="opt-text control-label">{$option.caption}:</span>
  <span class="form-control-static">
	{if $option.value is array}
	{$option.value | join : ', '}{$option.measure_unit} <small><em>{$option.description}</em></small>
	{else}
    {$option.value} {$option.measure_unit}
    {/if}
  </span>
</div>
{/foreach}

Буду благодарен за любую помощь.
Константин
28 января 2018, 19:20
modx.pro
1 955
0

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

Андрей
28 января 2018, 23:38
+1
Проверил сейчас на магазине в разработке, тип поля специально поставил Выпадающий список, если не заполнять, то поле скрывается. Должно всё работать по дефолту. Может у вас версия minishop не последняя, или ещё какой баг.
    Константин
    29 января 2018, 00:04
    0
    Да, действительно, на новых товарах скрыто, если не выбрано. Я меня такой глюк был, когда я добавил опцию с выпадающим списком к уже существующим товарам. Пустая опция удалялась только после пересохранения товара.

    Кстати, поэкспериментировал и попробовал добавить в выпадающий список 0 и при его выборе опция в товаре также скрывается. Очень удобно, когда нужно скрыть опцию, которая уже была выбрана ранее.
    Владимир
    04 июня 2020, 15:32
    0
    Тоже выводились пустые опции там где не надо! Решилось пересохранением карточки товара!
      Александр
      12 декабря 2023, 16:36
      0
      экспериментальным путем

      {foreach $options as $option}
      {* "свежесозданные" опции выводят длину массива 1 при невыбранном значении *}
      {* костыль для того, чтобы не пересохранять товары *}
      
      {var $empty}
      {foreach $option.value as $val}{$val}{/foreach}
      {/var}
      
      {if $empty}
          <div>
              <label ><span>{$option.caption}:</span></label>
              <div>
                  <span>
                      {if $option.value is array}
                          {$option.value | join : ', '}
                      {else}
                          {$option.value}
                      {/if}
                  </span>
              </div>
          </div>
      {/if}
      {/foreach}
        epic
        16 марта 2024, 11:02
        0
        твой вариант пробовал и так и так не помогло.
        вдруг кому поможет сработал такой:
        {foreach $options as $option}
            {if '' in $option.value}
            
            {else}
                <li>
                    <label ><span>{$option.caption}:</span></label>
                    <p>
                        {if $option.value is array}
                            {$option.value | join : ', '}
                        {else}
                            {$option.value}
                        {/if}
                        {$option.measure_unit}
                    </p>
                </li>
            {/if}
        {/foreach}
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5