msProductOptions - отображаются не заполненные поля
Проблема: отображаются пустые опции на странице товара, заданные через miniShop2 (скрин 1)
Однако, если данный товар открыть и сохранить, то тогда св-ва, которые не заполнены, не отображаются. (скрин 2)
Вопрос: С чем это может быть связано, может быть кто-то сталкивался? Кеш очищал, не помогает.
Просто не хочется каждый товар пересохранять вручную. Спасибо.
Описание :
MODX Revolution 2.6.1-pl, minishop2-2.4.11-pl
У товара есть опции (заданы через опции miniShop2), они выводятся через
Однако, если данный товар открыть и сохранить, то тогда св-ва, которые не заполнены, не отображаются. (скрин 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, товар не пересохранялся после этого. Комментарии: 4
Привет! У меня вот так вывод указан, всё отлично работает. Нужно добавить &hideEmpty=`1`
[[!msProductOptions?
&tplOuter=`modifiedProductOptions.outer`
&hideEmpty=`1`
]]
Спасибо за ответ, указал &hideEmpty=`1`, но все равно не работает.
Скорее всего, потому что в версии minishop2-2.4.11-pl нет такого параметра)
Скорее всего, потому что в версии minishop2-2.4.11-pl нет такого параметра)
сделал в результате вот так:
{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}
Если после сохранения все становится нормально, значит опции были записаны как то не так. Попробуйте пересохранить все товары скриптом. Код вставлять в 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";
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.