Заявка на товар вместо его оформления через корзину — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 80: Строка 80:
 
 
 
<div class="social">
 
<div class="social">
 +
 +
    * * *
 +
 +
</source>
 +
 +
В файле /templates/demodizzy/xslt/modules/catalog/common.xsl вносим следующие правки:
 +
<source lang="xml">
 +
<xsl:template match="page|item" mode="short-view">
 +
<xsl:variable name="item_price" select="document(concat('udata://emarket/price/', @id))" />
 +
    * * * 
 +
<div class="price">
 +
<xsl:if test="$item_price != 0" >
 +
<span umi:element-id="{@id}" umi:field-name="price">
 +
<xsl:apply-templates select="document(concat('udata://emarket/price/', @id))" />
 +
</span>
 +
</xsl:if>
 +
</div>
 +
 +
    * * *
 +
 +
<xsl:apply-templates select="$object//group[@name = '&group-parameter;']" mode="div" />
 +
<xsl:choose>
 +
<xsl:when test="$item_price != 0" >
 +
<div class="add_from_list">
 +
 +
<a id="add_basket_{@id}" class="button basket_list options_{$is_options}"
 +
                                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>
 +
</div>
 +
</xsl:when>
 +
<xsl:otherwise>
 +
<div id="myModal" class="reveal-modal">
 +
<h1>Оформить заказ</h1>
 +
<p>Для оформления заказа, заполните следующие поля:</p>
 +
     
 +
<xsl:apply-templates select="document('udata://webforms/add/126')/udata" >
 +
<xsl:with-param name="pageredirect" select="@id" />
 +
</xsl:apply-templates>
 +
<a class="close-reveal-modal">&#215;</a>
 +
</div>
 +
<div class="add_from_list">
 +
<a href="#" data-reveal-id="myModal" class="button">Оформить заявку</a>
 +
</div>
 +
</xsl:otherwise>
 +
</xsl:choose>
 +
<div class="clear" />
  
 
     * * *
 
     * * *
  
 
</source>
 
</source>

Версия 13:26, 16 июня 2013

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

Задача: Реализовать возможность оставлять заявку на отсутствующий товар через форму обратной связи вместо его оформления через корзину.

Решение: Если цена товара равна нулю, то мы скрываем её отображение в каталоге и в карточке товара, а кнопку "Добавить в корзину" заменяем на "оставить заявку".

1. Впервую очередь нам необходимо перейти в модуль "Обратная связь" и создать форму со всеми необходимыми полями. Также запоминаем ID формы, он нам пригодится в дальнейшем. 2. Далее спрячем цену товара, если она равна нулю и заменим кнопку на "оставить заявку".

Для этого в файле /templates/demodizzy/xslt/modules/catalog/object-view.xsl, необходимо внести следующие изменения:

<xsl:stylesheet	version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:umi="http://www.umi-cms.ru/TR/umi">

<xsl:param name="redirectresult" />
     * * *   
<xsl:template match="udata" mode="object-view">

<xsl:if test="$redirectresult = 'yes'" >
    <div id='redirectresult'>
       <h1><img src="/templates/demodizzy/images/success.png" align="middle" />Спасибо! Ваша заявка отправлена.</h1>
    </div>

<script type="text/javascript">					
$(document).ready(function() {
setTimeout ("$('#redirectresult').fadeIn('fast');", 1000);
setTimeout ("$('#redirectresult').fadeOut('slow');", 3000);
});
</script>					
</xsl:if>
<xsl:variable name="item_price" select="document(concat('udata://emarket/price/', page/@id))" />

    * * *

<div class="price" itemprop="offers" itemscope="itemscope" itemtype="http://schema.org/Offer">
	<xsl:if test="$item_price != 0" >
		<span umi:element-id="{page/@id}" umi:field-name="price" itemprop="price">
			<xsl:apply-templates select="document(concat('udata://emarket/price/', page/@id))" />
		</span>
	</xsl:if>
	<link itemprop="itemCondition" href="http://schema.org/NewCondition" />
</div>

    * * *

<xsl:apply-templates select=".//property[@name = '&property-description;']" />
	<div class="clear" />
	<xsl:choose>
		<xsl:when test="$item_price != 0" >
			<form id="add_basket_{page/@id}" class="options" action="{$lang-prefix}/emarket/basket/put/element/{page/@id}/">
				<xsl:apply-templates select=".//group[@name = 'catalog_option_props']" mode="table_options" />
				<input type="submit" class="button big" id="add_basket_{$document-page-id}">
				<xsl:attribute name="value">
				<xsl:text>&basket-add;</xsl:text>
				<xsl:if test="$cart_items/item[page/@id = $document-page-id]">
				<xsl:text> (</xsl:text>
				<xsl:value-of select="sum($cart_items/item[page/@id = $document-page-id]/amount)" />
				<xsl:text>)</xsl:text>
				</xsl:if>
				</xsl:attribute>
				</input>
			</form>
		</xsl:when>				
		<xsl:otherwise>
			<div id="myModal" class="reveal-modal">
				<h1>Оформить заказ</h1>
				<p>Для оформления заказа, заполните следующие поля:</p>
							
				<xsl:apply-templates select="document('udata://webforms/add/126')/udata" >
					<xsl:with-param name="pageredirect" select="page/@id" />
				</xsl:apply-templates>
				<a class="close-reveal-modal">&#215;</a>
			</div>
				<a href="#" data-reveal-id="myModal" class="button big">Оформить заявку</a>
		</xsl:otherwise>
	</xsl:choose>
				
<div class="social">

    * * *

В файле /templates/demodizzy/xslt/modules/catalog/common.xsl вносим следующие правки:

<xsl:template match="page|item" mode="short-view">
		<xsl:variable name="item_price" select="document(concat('udata://emarket/price/', @id))" />
     * * *   
<div class="price">
	<xsl:if test="$item_price != 0" >
		<span umi:element-id="{@id}" umi:field-name="price">
			<xsl:apply-templates select="document(concat('udata://emarket/price/', @id))" />
		</span>
	</xsl:if>
</div>

    * * *

<xsl:apply-templates select="$object//group[@name = '&group-parameter;']" mode="div" />
	<xsl:choose>
		<xsl:when test="$item_price != 0" >
			<div class="add_from_list">
			
				<a id="add_basket_{@id}" class="button basket_list options_{$is_options}" 
                                 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>
			</div>
		</xsl:when>
		<xsl:otherwise>
			<div id="myModal" class="reveal-modal">
				<h1>Оформить заказ</h1>
				<p>Для оформления заказа, заполните следующие поля:</p>
	      
				<xsl:apply-templates select="document('udata://webforms/add/126')/udata" >
					<xsl:with-param name="pageredirect" select="@id" />
				</xsl:apply-templates>
				<a class="close-reveal-modal">&#215;</a>
			</div>
			 <div class="add_from_list">
				<a href="#" data-reveal-id="myModal" class="button">Оформить заявку</a>
			</div>
		</xsl:otherwise>
	</xsl:choose>
			<div class="clear" />

    * * *