Категории
[FAQ] Часто задаваемые вопросы и ответы
Проблемы и решения
Ошибки и исправления
Общие вопросы
Расширения
Установка и обновление
Модули
Шаблоны
Локализация интерфейса
Коммерческие предложения
Учимся бизнесу
Бизнес книги
Поисковая оптимизация (SEO)
Магазины на ShopOS
Хостинг для ShopOS
Предложения и пожелания
Курилка
|
Вывод атрибута от количества
Привет всем.
Родился вопрос. Можно ли реализовать видимость атрибута для покупателя если его количество не "0"? Т.е. например есть одежка разных размеров. В атрибутах проставляем в поле "Склад" количество каждого размера, соответственно атрибуты с не "0" количеством будут выводиться. Далее в процессе работы закончившийся размер должен переставить быть видимым для покупателя.
Как это автоматизировать?
Админка-настройки-основные-склад.
Проставил. "Проверка атрибутов на складе" "Да" В выпадающем списке размеров все равно выводятся все атрибуты у которых поставлена галка, хотя я некоторым жестко поставил количество "0". Товар добавляется в корзину. Вот при просмотре корзины недостающий товар помечается *** и выводится сообщение.
Я же хочу чтобы уже в момент выбора размера в выпадающем списке выводились только размеры количество которых не "0".
В файле themes/ШАБЛОН/module/product_options/multi_options.html Написать примерно так:
<!-- select --> <p> <strong>{$options_data.NAME}:</strong> <select name="id"> {foreach key=key_data item=item_data from=$options_data.DATA} {if $item_data.STOCK>0} <option value="{$item_data.ID}">{$item_data.TEXT} {if $item_data.MODEL}({$item_data.MODEL}){/if} {$item_data.PREFIX}{$item_data.PRICE}</option> {/if} {/foreach} </select> </p> <!-- /select -->
Пропустил {if $item_data.PRICE_PLAIN}
<!-- select --> <p> <strong>{$options_data.NAME}:</strong> <select name="id"> {foreach key=key_data item=item_data from=$options_data.DATA} {if $item_data.STOCK>0} <option value="{$item_data.ID}">{$item_data.TEXT} {if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN}{$item_data.PREFIX}{$item_data.PRICE}</option> {/if} {/foreach} </select> </p> <!-- /select -->
Пропустил {if $item_data.PRICE_PLAIN}
Что, где пропустил? Почему Вы решили, что пропустил?
Во-первых, было сказано "написать примерно так". Во-вторых, писалось на основе стандартного кода версии 2.5.9.2, там $item_data.PRICE_PLAIN не упоминается. Видимо, имеете в виду свои исправления-дополнения. Во-третьих, если уж пишете "исправленный" код, то заботьтесь, чтоб там не было хотя бы примитивных ошибок, как сейчас: добавлен {if ...}, но не добавлен {/if}. Если простой пользователь попробует использовать Ваш код, мгновенно получит малопонятную ему ошибку.
Спасибо, что поправили. Без {if $item_data.PRICE_PLAIN} атрибут выводится с префиксом цены +0.0руб
Без {if $item_data.PRICE_PLAIN} атрибут выводится с префиксом цены +0.0руб
1. Без {if $item_data.PRICE_PLAIN} атрибут выводится НЕ с префиксом цены +0.0руб, а с указанием добавочной цены атрибута (возможно, нулевой). 2. А вот с {if $item_data.PRICE_PLAIN} страница товара не выводится ВООБЩЕ из-за ошибки шаблона. 3. К начальному вопросу темы Ваша поправка совсем не относится. Если считаете свою поправку (которая в ее текущем виде полностью убивает все страницы товаров магазина) важной и нужной, лучше бы обсуждать это в соответствующей теме.
Вы уж ту на человека наехали, пока я не мог ответить :D Мне в общем без Plain и нужно, т.к. большие размеры у меня с наценкой и соответственно в атрибутах проставлена сумма добавки к цене.
Сейчас попробую исправить код, посмотрю что получится и отпишусь.
Вроде работает!! Только вот еще сразу вылезло, когда у всех атрибутов количество =0, то на страничке выводится пустой Дроп. Можно ли вместо пустого Дропа выводить "НЕТ В НАЛИЧИИ"??
Это уже сложнее. Надо или в PHP файле готовить данные под это, или в шаблоне как-то исхитряться.
А может там же, где скрипт проверяет есть ли атрибут для данной позиции и либо его прячет, либо выводит. Я так понимаю что там же что-то типа цикла, который проверяет наличие галки выбора атрибута, а сейчас и количество на складе указанного атрибута. Может где счетчик поставить и если он =0, то выводить "Нет в наличии", а если не равен ), то выводить дроп.
Правильно понимаете. Как-то так и нужно.
Кто б еще подсказал как именно??
Вот еще дописал кусок, поправьте меня.
{foreach key=key_data item=item_data from=$options_data.DATA} {if $item_data.STOCK>0} {$a++} {/if} {/foreach} {if $a>0} Вроде сработало, но в данном случае на страницу выводятся последовательно все значения $a в одну строку.
Как заблокировать вывод этой переменной на экран??
После if начинается вывод дропа с атрибутами, либо слова "Нет в наличии"
Например, так:
<!-- {$a++} -->
СУПЕР!! :D
Теперь все работает и если в атрибутах нет товара, то выводит "Нет в наличии", правда осталась кнопка "Купить", которую вот думаю как заменить на кнопку "Заказать" чтобы посетитель мог сделать предзаказ на товар.
Источник
|