Как скрыть пустое значение в опциях miniShop2?
Добрый вечер. Создал опцию в настройках miniShop2 с типом «Выпадающий список». Не во всех товарах мне нужно выбирать значение этой опции. И там где я ее не выбираю, после сохранения в карточке товара получаю название опции и рядом пустое поле.
Это в админке в опциях товара:
Это в карточке товара:
Вот как вызываю опции:
Сам чанк msOptionsProductTpl:
Буду благодарен за любую помощь.
Это в админке в опциях товара:
Это в карточке товара:
Вот как вызываю опции:
[[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}
Буду благодарен за любую помощь.
Комментарии: 5
Проверил сейчас на магазине в разработке, тип поля специально поставил Выпадающий список, если не заполнять, то поле скрывается. Должно всё работать по дефолту. Может у вас версия minishop не последняя, или ещё какой баг.
Да, действительно, на новых товарах скрыто, если не выбрано. Я меня такой глюк был, когда я добавил опцию с выпадающим списком к уже существующим товарам. Пустая опция удалялась только после пересохранения товара.
Кстати, поэкспериментировал и попробовал добавить в выпадающий список 0 и при его выборе опция в товаре также скрывается. Очень удобно, когда нужно скрыть опцию, которая уже была выбрана ранее.
Кстати, поэкспериментировал и попробовал добавить в выпадающий список 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}
твой вариант пробовал и так и так не помогло.
вдруг кому поможет сработал такой:
вдруг кому поможет сработал такой:
{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}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.