msProductOption перестает возвращать опции если товар "виртуально" добавить в еще одну категорию.
Есть товар. Есть несколько опций созданных в настройках minishop и привязанных к категории, в которой товар. Заполнили опции значениями. Сохранили товар. На странице опции выводятся совсем уж просто
{'!msProductOptions'|snippet:[
'tpl'=>'@FILE tpl/optionsList.tpl'
]}
Они роскошно выводятся. Но тут менеджер берет и ставит на вкладке — Категории у этого товара галочку для привязки его к другой категории. Товар продолжает отображаться как был, все ок — но больше ни одного значения характеристики нет.
Сначала решили что это потому, что у категории, куда мы его виртуально поместили не привязаны эти же опции. привязали. Снова ничего. Страница товара открывается, товар физически лежит в той категории где и нужно, но опций нет (имеется ввиду не выводятся сниппетом, в админке то они есть и заполнены.)
Убираем галочки, снимаем привязку к другой категории и вуаля — сразу на странице вывелись все опции.
Открыл код msProductOption
в нем есть строки
Есть идеи?
{'!msProductOptions'|snippet:[
'tpl'=>'@FILE tpl/optionsList.tpl'
]}
Они роскошно выводятся. Но тут менеджер берет и ставит на вкладке — Категории у этого товара галочку для привязки его к другой категории. Товар продолжает отображаться как был, все ок — но больше ни одного значения характеристики нет.
Сначала решили что это потому, что у категории, куда мы его виртуально поместили не привязаны эти же опции. привязали. Снова ничего. Страница товара открывается, товар физически лежит в той категории где и нужно, но опций нет (имеется ввиду не выводятся сниппетом, в админке то они есть и заполнены.)
Убираем галочки, снимаем привязку к другой категории и вуаля — сразу на странице вывелись все опции.
Открыл код msProductOption
в нем есть строки
/** @var msProductData $data */
if ($data = $product->getOne('Data')) {
$optionKeys = $data->getOptionKeys();
}
if (empty($optionKeys)) {
return 'hello world';
}Так вот если товар расположен только в одной категории то $optionKeys не пусто и сниппет возвращает опции. Стоит просто добавить галочку и разместить его в другую категорию, я сразу получаю «hello world»Есть идеи?
Комментарии: 2
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Написал свой.
Может кто-то столкнется с такой же проблемой и найдет по поиску эту статью (хотя уж простите Василий, но поиск на этом сайте работает ужасно, хотя гугл хорошо все индексирует и компенсирует этот момент) — то приведу свой код здесь.
Сниппет получения опций
Вызов на странице
Используемый чанк для вывода
По крайней мере в таком виде опции отображаются всегда и не пропадают, даже если товар размещен виртуально в другие категории.
Вот тут
docs.modx.pro/komponentyi/pdotools/fajlovyie-elementyi
написано а я столкнулся со следующим.
Вношу изменения в код php файла, сохраняю и ничего при обновлении страницы где вызывается этот файловый сниппет не меняется. Сбрасываю кеш в админке — никаких изменений. Только физическое очищение папки core/cache позволяет увидеть изменения. Почему так, если написано что файловые сниппеты не кешируются. Но если вносить изменения в tpl -ку которая используется для вывода то тут любые изменения сразу видны на странице.