Выбор склада при покупке товара — различия между версиями
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
1. Откроем шаблон данных объекта каталога и увидим, что группа полей Склады имеет идентификатор catalog_stores_props<br> | 1. Откроем шаблон данных объекта каталога и увидим, что группа полей Склады имеет идентификатор catalog_stores_props<br> | ||
− | [[Файл:Article31.png]] | + | [[Файл:Article31.png]]<br> |
2. Откроем файл config.ini и в секцию [modules] добавим дополнительный параметр emarket.order-types.optioned.groups[] с идентификатором нашей группы: | 2. Откроем файл config.ini и в секцию [modules] добавим дополнительный параметр emarket.order-types.optioned.groups[] с идентификатором нашей группы: | ||
<source lang="sql"> | <source lang="sql"> | ||
Строка 17: | Строка 17: | ||
</source> | </source> | ||
3. Заполним у товара поле Склады:<br> | 3. Заполним у товара поле Склады:<br> | ||
− | [[Файл:Article32.png]] | + | [[Файл:Article32.png]]<br> |
4. Откроем шаблон \templates\demoold\tpls\catalog\default.tpl и в блоке $FORMS['view_block'] = <<<END вставим макрос:<br> | 4. Откроем шаблон \templates\demoold\tpls\catalog\default.tpl и в блоке $FORMS['view_block'] = <<<END вставим макрос:<br> | ||
%data getPropertyGroup('%id%', 'catalog_stores_props', 'catalog_options_stores')% | %data getPropertyGroup('%id%', 'catalog_stores_props', 'catalog_options_stores')% | ||
Строка 50: | Строка 50: | ||
Результат:<br> | Результат:<br> | ||
− | [[Файл:Article33.png]] | + | [[Файл:Article33.png]]<br> |
'''XSLT''' | '''XSLT''' |
Версия 21:53, 30 марта 2013
Задача: Дать возможность покупателю выбрать склад (это может быть определенный магазин) в котором он хочет забрать покупаемый товар.
Решение: Так как склад реализован через опционные свойства, с помощью поля типа "Составное", то его вывод на страницу ничем не отличается от вывода любого другого опционного свойства.
Рассмотрим вывод складов для TPL и XSLT шаблонизаторов.
TPL
Выводить поле будем на основе информации из данной статьи: Работа с опционными свойствами (umi 2.8, tpl шаблоны)
1. Откроем шаблон данных объекта каталога и увидим, что группа полей Склады имеет идентификатор catalog_stores_props
2. Откроем файл config.ini и в секцию [modules] добавим дополнительный параметр emarket.order-types.optioned.groups[] с идентификатором нашей группы:
[modules]
emarket.order-types.optioned.groups[] = "catalog_option_props"
emarket.order-types.optioned.groups[] = "catalog_stores_props"
3. Заполним у товара поле Склады:
4. Откроем шаблон \templates\demoold\tpls\catalog\default.tpl и в блоке $FORMS['view_block'] = <<<END вставим макрос:
%data getPropertyGroup('%id%', 'catalog_stores_props', 'catalog_options_stores')%
5. Скопируем шаблон \templates\demoold\tpls\data\catalog_options.tpl и переименуем его в catalog_options_stores
6. В блоке $FORMS['optioned_item'] = <<<END заменим существующее содержимое на:
<li>
<label>
<input type="radio" name="options[%field_name%]" value="%object-id%" />
%object-name% = %int% шт.
</label>
</li>
7. Если хотим Вы водить информацию о резервах, то в блоке $FORMS['optioned_block'] = <<<END напишем макрос:
%data getProperty(%id%, 'reserved', 'reserved_int')%
8. Скопируем шаблон \templates\demoold\tpls\data\catalog_opisanie.tpl и переименуем его в reserved_int.tpl
6. Заменим существующее содержимое на:
<?php
$FORMS = Array();
$FORMS['int'] = <<<END
Зарезервировано покупателями: %value% шт.
END;
?>
XSLT
Первые три пункта предыдущей инструкции аналогичны. В шаблоне интернет-магазина "Современный" уже описан вывод опционных свойств, нам остается только немного его подкорректировать. 4. В шаблоне \templates\demodizzy\xslt\modules\catalog\object-view.xsl найдём строку:
<xsl:apply-templates select=".//group[@name = 'catalog_option_props']" mode="table_options" />
и ниже её сделаем вывод наших складов:
<xsl:apply-templates select=".//group[@name = 'catalog_stores_props']" mode="table_options" />
5. В этом же файле найдем описание темплейта <xsl:template match="option" mode="table_options"> и в правой колонке таблицы откорректируем вывод количества товаров на складах:
<td align="right">
<xsl:choose>
<xsl:when test="object/@type-guid = 'emarket-store'">
<xsl:value-of select="@int" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@float" />
</xsl:otherwise>
</xsl:choose>
</td>
6. Если мы хотим вывести информацию о резервах, то чуть выше имеется темплейт <xsl:template match="property" mode="table_options">, в которой откорректируем <thead> следующим образом:
<thead>
<tr>
<th colspan="3">
<xsl:choose>
<xsl:when test="@name = 'reserved'">
<xsl:value-of select="concat(title, ': ', value, ' шт.')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(title, ':')" />
</xsl:otherwise>
</xsl:choose>
</th>
</tr>
</thead>
Результат:
Так же Вы можете реализовать автоматическое списание со складов по статье: Списание со складов
2.8.6.1