User Tools

Site Tools


market:komplekt_tovarov

This is an old revision of the document!


Комплект товаров

На странице товара вместе с основным товаром покупателю предлагается купить дополнительные товары и услуги. Такие товары можно добавить к основному установив флажок. При этом происходит пересчет основной цены. При нажатии на кнопку добавления товара в корзину, в корзину попадают сразу все выбранные товары.

Инструкции

1. Если на сайте не использованы сопутствующие товары, то используем их для комплекта. Если уже использованы, то для комплекта создаем доп. свойство типа товар.
2. Далее в XSL шаблон МагазинТовар добавляем подшаблон для вывода комплекта.

	<!-- Шаблон для комплекта товаров -->
	<xsl:template match="associated/shop_item">
	<label>
	<xsl:choose>
 
		<xsl:when test="property_value[tag_name='radio']/value = 1">
 
	<input type="radio" price="{price}" name="item_radio" item_id="{@id}" value="{@id}" class="associated{../../@id} associated"><xsl:if test="property_value[tag_name='default']/value = 1"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if></input>
 
		</xsl:when>
		<xsl:otherwise>
		<xsl:if test="position() != last()"><xsl:attribute name="class">hr</xsl:attribute></xsl:if>
	<input type="checkbox" price="{price}" item_id="{@id}" name="item_{@id}" value="{@id}" class="associated{../../@id} associated"><xsl:if test="property_value[tag_name='default']/value = 1"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if></input>
 
		</xsl:otherwise>
 
	</xsl:choose>
 
	</label>
	</xsl:template>

3. В подшаблон shop_item добавляем там, где нужно вывести комплект:

<xsl:if test="count(associated/shop_item) &gt; 0">
	<div class="associated-block">
		
		<xsl:apply-templates select="associated/shop_item"><xsl:sort select="sorting"  data-type="number"/></xsl:apply-templates>
		<span class="hr"></span>
		
	</div>		
</xsl:if>

4. Подгоняем вывод под текущий сайт. Блоку с текущей ценой задаем id="mainprice", а также атрибут data-price="{format-number(price, '#####0', 'my')}" 5. Обработчик добавления в корзину заменяем с $.addIntoCart на $.kaddIntoCart 6. В ТДС корзины после кода

// Добавление товара в корзину
if (Core_Array::getRequest('add'))
{
$shop_item_id = intval(Core_Array::getRequest('add'));
if ($shop_item_id)
{
	$oShop_Cart_Controller = Shop_Cart_Controller::instance();
	$oShop_Cart_Controller
		->shop_item_id($shop_item_id)
		->quantity(Core_Array::getRequest('count', 1))
		->add();
}

добавляем

$aAssoc = Core_Array::getRequest('addassoc');
if (count($aAssoc))
{
	foreach($aAssoc as $assoc)
	{
		$oShop_Cart_Controller = Shop_Cart_Controller::instance();
		$oShop_Cart_Controller
			->shop_item_id($assoc)
			->quantity(1)
			->add();
	}
}

7. Добавляем товарам доп. свойства. Эти свойства нужны для управления комплектом.

  • "Радиокнопка" с tag_name='radio'
  • "По умолчанию" с tag_name='default'

8. Тестируем и отдаем на проверку.

market/komplekt_tovarov.1431006941.txt.gz · Last modified: 26.06.15 в 14:55 (external edit)