msOptions не отрабатывает с первого раза
Добрый день, не могу понять, почему
[[!msOptions? name=`using` &tpl=`msOptionTpl` &product=`[[*id]]`]]
в шаблоне с чанком msOptionTpl{foreach $options as $name => $values}
<label for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
<div name="options[{$name}]" id="option_{$name}" class="value">
{foreach $values as $value}
<span value="{$value}">{$value}</span>
{/foreach}
</div>
{/foreach}
на сайте отрабатывает не с первой загрузки страницы, а только после повторного обновления страницы (F5). Есть соображения? Спасибо. Комментарии: 20
Такой вывод тоже со второго раза срабатывает
[[!msOptions? &options=`using` &tpl=`msOptionTpl`]]
Некэшируемый вывод вообще не работает(
Мне кажется, что проблема банальна:
{foreach $values as $value}
<span value="{$value}">{$value}</span>
{/foreach}
Тут перебор массива идет, но в результатах работы сниппета msOptions учавствуют обычные одиночные опции и все слетает, т.к. их не перебрать.
Странно, но ведь дефолтный чанк tpl.msOptions также выглядит
{foreach $options as $name => $values}
<div class="form-group">
<label class="col-md-2 control-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
<div class="col-md-10">
<select name="options[{$name}]" class="input-sm form-control" id="option_{$name}">
{foreach $values as $value}
<option value="{$value}">{$value}</option>
{/foreach}
</select>
</div>
</div>
{/foreach}
Вопрос для чего?
Кстати еще вариант есть: банально $values = null и его не перебрать…
Как это правильно написать? Помоги пжл.
{foreach $options as $key => $value}
<div class="form-group">
<label class="col-md-2 control-label" for="option_{$name}">
{('ms2_product_' ~ $key) | lexicon}:
</label>
<div class="col-md-10">
{if $array | iterable}
<select name="options[{$key}]" class="input-sm form-control" id="option_{$key}">
{foreach $values as $value}
<option value="{$value}">{$value}</option>
{/foreach}
</select>
{else}
<input id="option_{$key}" type="text" class="input-sm form-control" name="options[{$key}]" value="{$value}" />
{/if}
</div>
</div>
{/foreach}
Я указал, чтобы в случаях, когда не массив, то вместо выпадающего списка обычный text
Все также со второго раза(
Через плагины или т.п. модель расширяли?
Нет, это стандартные опции minishop2.
Так надо использовать сниппет msProductOptions :-)
пробовал :) этот вообще ни чего не выводит.
msOptions получает опции как $product->get($name)
github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_options.php#L22
который в свою очередь дергает loadOptions github.com/bezumkin/miniShop2/blob/4b00c666d7fc0b9db8ce911636013e7bbcb7a6c3/core/components/minishop2/model/minishop2/msproduct.class.php#L194
msProductOptions сразу пользует loadOptions github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_product_options.php#L29
так что это скорее всего не решит никак проблему.
Проверить конечно я это никак не могу…
github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_options.php#L22
который в свою очередь дергает loadOptions github.com/bezumkin/miniShop2/blob/4b00c666d7fc0b9db8ce911636013e7bbcb7a6c3/core/components/minishop2/model/minishop2/msproduct.class.php#L194
msProductOptions сразу пользует loadOptions github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/elements/snippets/snippet.ms_product_options.php#L29
так что это скорее всего не решит никак проблему.
Проверить конечно я это никак не могу…
msOptions не отрабатывает с первого раза
то есть со второго раза он все таки успешно их перебирает?
По моему дело вовсе не в этом.
да, при обновлении страницы.
это не вам вопрос был. А по поводу этого
Тут перебор массива идет, но в результатах работы сниппета msOptions учавствуют обычные одиночные опции и все слетает, т.к. их не перебрать.
Собственно, я думал, что второй раз из кэша берется уже нормальные значения именно массивов, в отличии от первого раза, когда по каким-либо причинам значения еще не успевают обработаться… Собственно, я был прав. Ошибка была в том, что речь шла про msProductOption, а не поля из msProductData…
то что данных вовсе нет как бы совсем другое, не так ли?
Осталось выяснить почему их нет и можно сказать Собственно, я был прав
Осталось выяснить почему их нет и можно сказать Собственно, я был прав
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.