Категории

[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

Теперь все работает и если в атрибутах нет товара, то выводит "Нет в наличии", правда осталась кнопка "Купить", которую вот думаю как заменить на кнопку "Заказать" чтобы посетитель мог сделать предзаказ на товар.


Источник



Copyright ShopOS