Не выводить ссылку для добавления товара в корзину если его нет на складе — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Часто бывает необходимость отключить возможность добавления товара в корзину (либо отклю…»)
 
Строка 1: Строка 1:
 +
Актуально для версии 2.9.6
 +
 +
----
 +
'''Задача:''' скрывать кнопку заказа при отсутствии товара на складе.
 +
 +
'''Решение:'''
 
Часто бывает необходимость отключить возможность добавления товара в корзину (либо отключить вывод данного товара) если его нет на складе.  
 
Часто бывает необходимость отключить возможность добавления товара в корзину (либо отключить вывод данного товара) если его нет на складе.  
  
Строка 6: Строка 12:
  
 
<source lang="xml">
 
<source lang="xml">
<xsl:variable name="sklad" select="document(concat('upage://', @id))//property[@name = 'stores_state']/value/option/@int"/>
+
<xsl:variable name="sklad" select="//property[@name = 'stores_state']/value/option/@int"/>
 
</source>
 
</source>
  
Строка 14: Строка 20:
 
<source lang="xml">
 
<source lang="xml">
 
<xsl:choose>
 
<xsl:choose>
<xsl:when test="not($sklad)">
+
<xsl:when test="$sklad &gt; 0">
<xsl:text>НЕТ В НАЛИЧИИ </xsl:text>
+
<a id="add_basket_{@id}"
</xsl:when>
+
class="button basket_list" href="{$lang-prefix}/emarket/basket/put/element/{@id}/">
<xsl:when test="$sklad">
+
<xsl:text>&basket-add; </xsl:text>
<a id="add_basket_{@id}"
+
<xsl:variable name="element_id" select="@id" />
class="button basket_list options_{$is_options}" href="{$lang-prefix}/emarket/basket/put/element/{@id}/">
+
<xsl:if test="$cart_items and $cart_items/item[page/@id = $element_id]">
<xsl:text>&basket-add; </xsl:text>
+
<xsl:text> (</xsl:text>
<xsl:variable name="element_id" select="@id" />
+
<xsl:value-of select="sum($cart_items/item[page/@id = $element_id]/amount)" />
<xsl:if test="$cart_items and $cart_items/item[page/@id = $element_id]">
+
<xsl:text>)</xsl:text>
<xsl:text> (</xsl:text>
+
</xsl:if>
<xsl:value-of select="sum($cart_items/item[page/@id = $element_id]/amount)" />
+
</a>
<xsl:text>)</xsl:text>
+
</xsl:when>
</xsl:if>
+
<xsl:otherwise>
</a>
+
<xsl:text>НЕТ В НАЛИЧИИ </xsl:text>
</xsl:when>
+
</xsl:otherwise>
 
</xsl:choose>
 
</xsl:choose>
 
</source>
 
</source>
  
 
Вместо надписи НЕТ В НАЛИЧИИ можно указать ссылку на форму обратной связи, через которую покупатель сможет отправить заявку на нужный товар.
 
Вместо надписи НЕТ В НАЛИЧИИ можно указать ссылку на форму обратной связи, через которую покупатель сможет отправить заявку на нужный товар.
 +
 +
[[Категория:Модуль Каталог]][[Категория:Верстка в XSLT]]

Версия 07:52, 30 апреля 2014

Актуально для версии 2.9.6


Задача: скрывать кнопку заказа при отсутствии товара на складе.

Решение: Часто бывает необходимость отключить возможность добавления товара в корзину (либо отключить вывод данного товара) если его нет на складе.

Ниже представлен пример XSLT шаблона который реализует данную задачу:

Записываем в переменную $sklad количество товара на складе:

<xsl:variable name="sklad" select="//property[@name = 'stores_state']/value/option/@int"/>


Проверяем, если товар отсутствует на складе, то выводим сообщение о том, что товара нет в наличии. Если товар имеется на складе то выводим ссылку на добавление товара в корзину.

<xsl:choose>
	<xsl:when test="$sklad &gt; 0">
		<a id="add_basket_{@id}"
		class="button basket_list" href="{$lang-prefix}/emarket/basket/put/element/{@id}/">
		<xsl:text>&basket-add; </xsl:text>	
		<xsl:variable name="element_id" select="@id" />
		<xsl:if test="$cart_items and $cart_items/item[page/@id = $element_id]">
			<xsl:text> (</xsl:text>
			<xsl:value-of select="sum($cart_items/item[page/@id = $element_id]/amount)" />
			<xsl:text>)</xsl:text>
		</xsl:if>
		</a>
	</xsl:when>
	<xsl:otherwise>
		<xsl:text>НЕТ В НАЛИЧИИ </xsl:text>
	</xsl:otherwise>
</xsl:choose>

Вместо надписи НЕТ В НАЛИЧИИ можно указать ссылку на форму обратной связи, через которую покупатель сможет отправить заявку на нужный товар.