Несколько вопросов новичка.
nononoy писал(а):
nononoy писал(а):
Ну и рекомендую все-таки доки почитать, там про это все рассказано и про многое другое тоже. Чего я вам их пересказываю-то?
Есть название товара в интернет магазине. Могу ли я при помощи кода экспортировать его в тег <title>
По умолчанию, если вы не прописали для товара title на вкладке seo, то именно так и будет, в теге title будет присутствовать название товара. Если же что-то прописали на вкладке seo, то в теге title будет то что вы прописали.nononoy писал(а):
а также транслитировать и запаять в url товара?
руками, либо выбрать в настройках магазина в списке "Тип формирования URL" значение "Транслитерация" (обращаю внимание, что в настройках _самого_магазина_, не узла структуры и не ТДС)Ну и рекомендую все-таки доки почитать, там про это все рассказано и про многое другое тоже. Чего я вам их пересказываю-то?
Заказов не беру. Консультирую редко.
nononoy писал(а):
И да, как мне вставить поле текст в страницу?
не понял что вы имеете в виду, очень многозначная формулировка.
Заказов не беру. Консультирую редко.
1. Скажите, а транслитерация будет применена к уже существующим товарам?
2. Нужно добавить описание раздела, которое будет выводиться под товарами. Свойство описание не хочет транслироваться на страницу.
3. Во вкладке СЕО тайтл прописан, однако он не выводится в заголовке. Выводится тайтл всего магазина.
2. Нужно добавить описание раздела, которое будет выводиться под товарами. Свойство описание не хочет транслироваться на страницу.
3. Во вкладке СЕО тайтл прописан, однако он не выводится в заголовке. Выводится тайтл всего магазина.
nononoy писал(а):

nononoy писал(а):
Все равно не понятен вопрос. Используйте правильную терминологию. Что такое раздел? Группа товаров? Посмотрите в XML страницы и убедитесь для начала, что информация по нужной группе там есть, и что среди этой информации есть и описание группы тоже.
Если они там есть то поправьте XSL-шаблон, так чтобы эта информация выводилась (где и что править разберитесь сами, это зависит от индивидуальных особенностей вашего сайта, я не угадаю)
Если их там нет, то сначала поправьте ТДС (режим генерации групп и запрещенные теги для них) а потом - см.предыдущую фразу про XSL.
nononoy писал(а):
1. Скажите, а транслитерация будет применена к уже существующим товарам?
Нет. Только ко вновь добавляемым, для уже существующих править ручками и в следующий раз думать сразу 
nononoy писал(а):
2. Нужно добавить описание раздела, которое будет выводиться под товарами. Свойство описание не хочет транслироваться на страницу.
Все равно не понятен вопрос. Используйте правильную терминологию. Что такое раздел? Группа товаров? Посмотрите в XML страницы и убедитесь для начала, что информация по нужной группе там есть, и что среди этой информации есть и описание группы тоже.
Если они там есть то поправьте XSL-шаблон, так чтобы эта информация выводилась (где и что править разберитесь сами, это зависит от индивидуальных особенностей вашего сайта, я не угадаю)
Если их там нет, то сначала поправьте ТДС (режим генерации групп и запрещенные теги для них) а потом - см.предыдущую фразу про XSL.
nononoy писал(а):
3. Во вкладке СЕО тайтл прописан, однако он не выводится в заголовке. Выводится тайтл всего магазина.
Восстановите стандартный код _настроек_ТДС_ с демо-сайта или из дистрибутива, скорее всего причина в каких-то ваших правках в этом месте.
Заказов не беру. Консультирую редко.
большое спасибо за предыдущие ответы! Появился новый вопрос.
Есть шаблон, который выводит каталог товаров. В каталоге товаром есть "Описание". Нужно, чтобы оно выводилось под товарами.
Код шаблона:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl
ecimal-format name="my" decimal-separator="," grouping-separator=" "/>
<xsl:template match="/">
<xsl:apply-templates select="/shop"/>
</xsl:template>
<!-- Шаблон для магазина -->
<xsl:template match="/shop">
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:variable name="parent_group_id" select="@current_group_id"/>
<!-- Если в находимся корне - выводим название информационной системы -->
<xsl:if test="$parent_group_id = 0">
<h1>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</h1>
</xsl:if>
<!-- Если в находимся в группе - выводим название группы -->
<xsl:if test="$parent_group_id != 0">
<h1>
<xsl:value-of disable-output-escaping="yes" select=".//group[@id=$parent_group_id]/name"/>
</h1>
</xsl:if>
<!-- Обработка выбранных тэгов -->
<xsl:if test="count(selected_tags/tag) = 1">
<h2>Метка — <strong><xsl:value-of select="selected_tags/tag/tag_name"/></strong>.</h2>
</xsl:if>
<!-- Путь к группе -->
<!--
<div class="path">
<xsl:apply-templates select=".//group[@id=$parent_group_id]" mode="goup_path"/>
</div>
-->
<xsl:variable name="count">1</xsl:variable>
<!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам -->
<xsl:if test="count(selected_tags/tag) = 0 and count(//group[@parent=$parent_group_id]) > 0">
<xsl:apply-templates select="//group[@parent=$parent_group_id]"/>
</xsl:if>
<!-- дополнение пути для action, если выбрана метка -->
<xsl:variable name="form_tag_path"><xsl:if test="count(selected_tags/tag) = 1">tag/<xsl:value-of select="selected_tags/tag/tag_path_name"/>/</xsl:if></xsl:variable>
<xsl:if test="count(item) > 0 or apply_filter = 1">
<form method="get" action="{/shop/path}{//group[@id=$parent_group_id]/fullpath}{$form_tag_path}">
<div class="shop_block">
<div>
<!-- Если есть доступные производители -->
<xsl:if test="count(producerslist/producer) > 0">
Производитель: 
<select name="producer_id">
<option value="0">…</option>
<xsl:apply-templates select="producerslist/producer"/>
</select> 
</xsl:if>
<!-- Если есть доступные продавцы -->
<xsl:if test="count(sallers/saller) > 0">
Продавец: 
<select name="saller_id">
<option value="0">…</option>
<xsl:apply-templates select="sallers/saller"/>
</select> 
</xsl:if>
Цена от: 
<input name="price_from" size="5" type="text">
<xsl:if test="/shop/price_from != 0">
<xsl:attribute name="value">
<xsl:value-of disable-output-escaping="yes" select="/shop/price_from"/>
</xsl:attribute>
</xsl:if>
</input> 
до: 
<input name="price_to" size="5" type="text">
<xsl:if test="/shop/price_to != 0">
<xsl:attribute name="value">
<xsl:value-of disable-output-escaping="yes" select="/shop/price_to"/>
</xsl:attribute>
</xsl:if>
</input> 
<span style="white-space: nowrap">Товаров на странице:</span> 
<select name="on_page">
<option value="0">…</option>
<xsl:call-template name="for_on_page">
<xsl:with-param name="i" select="10"/>
<xsl:with-param name="n" select="50"/>
</xsl:call-template>
</select> 
</div>
<xsl:if test="count(properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]) > 0">
<p>
<b>Фильтр по дополнительным свойствам товара:</b>
</p>
<table cellpadding="10px" cellspacing="0">
<tr valign="top">
<xsl:apply-templates select="properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]"/>
</tr>
</table>
</xsl:if>
<div class="nofloat" style="margin-left: 40%">
<div class="gray_button">
<div>
<input name="apply_filter" value="Применить" type="submit"/>
</div>
</div>
</div>
</div>
<!-- Таблица с элементами для сравнения -->
<!--
<xsl:if test="count(/shop/compare_items/compare_item) > 0">
<table cellpadding="5px" cellspacing="0" border="0">
<tr>
<td>
<input type="checkbox" onclick="SelectAllItemsByPrefix(this.checked, 'del_compare_id_'
" />
</td>
<td>
<b>Сравниваемые элементы</b>
</td>
</tr>
<xsl:apply-templates select="compare_items/compare_item"/>
</table>
<div class="nofloat" style="height: 47px; padding: 5px 0;">
<div class="gray_button left">
<div>
<input name="apply_compare" value="Сравнить" type="button" onclick="javascript:location='{/shop/path}compare_items/';"/>
</div>
</div>
<div class="gray_button right">
<div>
<input name="delete_compare" value="Удалить" type="submit"/>
</div>
</div>
</div>
</xsl:if>
-->
<!-- Сортировка товаров -->
<div class="shop_block">
<!-- Определяем ссылку с параметрами фильтра -->
<xsl:variable name="filter">
<xsl:if test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:if>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div style="float: left;">
Сортировать по алфавиту
</div>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'ASC'">
<div class="arrow_up">
<img src="/hostcmsfiles/images/arrow_up.png" style="float: left; filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_up_gray">
<a href="{$filter}{$first_symbol}sort_by_field=1&order_direction=1" class="without_decor">
<img src="/hostcmsfiles/images/arrow_up_gray.png" alt="по возрастанию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'DESC'">
<div class="arrow_down">
<img src="/hostcmsfiles/images/arrow_down.png" alt="по убыванию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_down_gray">
<a href="{$filter}{$first_symbol}sort_by_field=1&order_direction=2" class="without_decor">
<img src="/hostcmsfiles/images/arrow_down_gray.png" alt="по убыванию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose><div style="float: left;">, по цене</div>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'ASC'">
<div class="arrow_up">
<img src="/hostcmsfiles/images/arrow_up.png" alt="по возрастанию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_up_gray">
<a href="{$filter}{$first_symbol}sort_by_field=2&order_direction=1" class="without_decor">
<img src="/hostcmsfiles/images/arrow_up_gray.png" alt="по возрастанию"/></a>
</div>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'DESC'">
<div class="arrow_down">
<img src="/hostcmsfiles/images/arrow_down.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_down_gray">
<a href="{$filter}{$first_symbol}sort_by_field=2&order_direction=2" class="without_decor">
<img src="/hostcmsfiles/images/arrow_down_gray.png" alt="по убыванию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose>
<div class="clearing"></div>
</div>
<!-- Определяем ссылку с параметрами фильтра -->
<xsl:variable name="filter">
<xsl:choose>
<xsl:when test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Отображаем товары -->
<xsl:apply-templates select="item" />
<!--
<xsl:if test="count_items > 0">
<div class="nofloat" style="height: 27px; padding: 0 0 10px 0;">
<div class="gray_button">
<div>
<input name="add_compare" value="Добавить для сравнения" type="submit" />
</div>
</div>
</div>
</xsl:if>
-->
<xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property) > 0">
<div style="margin: 10px 0px;">
<h2>Атрибуты группы товаров</h2>
<xsl:if test="count(property[@dir_id = 0])">
<table border="0">
<xsl:apply-templates select="property[@dir_id = 0]"/>
</table>
</xsl:if>
<xsl:apply-templates select="/shop/properties_groups_dir"/>
</div>
</xsl:if>
<xsl:if test="count_items > 0 and items_on_page > 0">
<xsl:variable name="count_pages" select="ceiling(count_items div items_on_page)"/>
<xsl:variable name="visible_pages" select="5"/>
<xsl:variable name="real_visible_pages"><xsl:choose>
<xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page"><xsl:choose>
<xsl:when test="current_page - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="current_page"/>
</xsl:when>
<xsl:when test="($count_pages - current_page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - current_page - 1) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
<xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="floor($real_visible_pages div 2)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок после текущего элемента -->
<xsl:variable name="post_count_page"><xsl:choose>
<xsl:when test="0 > current_page - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - current_page - 1"/>
</xsl:when>
<xsl:when test="($count_pages - current_page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:variable name="i"><xsl:choose>
<xsl:when test="current_page + 1 = $count_pages"><xsl:value-of select="current_page - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="current_page - $pre_count_page > 0"><xsl:value-of select="current_page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div style="clear: both"></div>
<p>
<xsl:call-template name="for">
<xsl:with-param name="items_on_page" select="items_on_page"/>
<xsl:with-param name="current_page" select="current_page"/>
<xsl:with-param name="count_items" select="count_items"/>
<xsl:with-param name="i" select="$i"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="visible_pages" select="$real_visible_pages"/>
</xsl:call-template>
</p>
</xsl:if>
</form>
</xsl:if>
</xsl:template>
<!-- Вывод раздела для свойств группы товаров -->
<xsl:template match="properties_groups_dir">
<p><b><xsl:value-of select="shop_properties_groups_dir_name"/></b></p>
<xsl:variable name="dir_id" select="@id"/>
<xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property)">
<table border="0">
<xsl:apply-templates select="/shop/group[@id = /shop/@current_group_id]/propertys/property[@parent_id = $dir_id]"/>
</table>
</xsl:if>
<xsl:if test="count(properties_groups_dir)">
<blockquote>
<xsl:apply-templates select="properties_groups_dir"/>
</blockquote>
</xsl:if>
</xsl:template>
<!-- Вывод строки со значением свойства -->
<xsl:template match="property">
<tr>
<td style="padding: 5px" bgcolor="#eeeeee">
<b><xsl:value-of select="name"/></b>
</td>
<td style="padding: 5px" bgcolor="#eeeeee">
<xsl:choose>
<xsl:when test="type = 1">
<a href="{file_path}">Скачать файл</a>
</xsl:when>
<xsl:when test="type = 7">
<xsl:choose>
<xsl:when test="value = 1">
<input type="checkbox" checked="" disabled="" />
</xsl:when>
<xsl:otherwise>
<input type="checkbox" disabled="" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="value"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<!-- Шаблон для списка товаров для сравнения -->
<xsl:template match="compare_items/compare_item">
<xsl:variable name="var_compare_id" select="."/>
<tr>
<td>
<input type="checkbox" name="del_compare_id_{compare_item_id}" id="id_del_compare_id_{compare_item_id}"/>
</td>
<td>
<a href="{/shop/path}{compare_item_fullpath}{compare_item_path}/">
<xsl:value-of disable-output-escaping="yes" select="compare_item_name"/>
</a>
</td>
</tr>
</xsl:template>
<!-- Шаблон для фильтра производителей -->
<xsl:template match="producerslist/producer">
<xsl:param name="id_prod" select="@id"/>
<!--
<xsl:variable name="node_name" select="concat('производители', $id_prod)"/>
<xsl:if test="count(/shop/*[name() = $node_name])">
-->
<option value="{@id}">
<xsl:if test="@id = /shop/producer_id">
<xsl:attribute name="selected"> </xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="shop_producers_list_name"/>
</option>
<!--
</xsl:if>
-->
</xsl:template>
<!-- Шаблон для фильтра продавцов -->
<xsl:template match="sallers/saller">
<option value="{@id}">
<xsl:if test="@id = /shop/saller_id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of select="sallers_name"/>
</option>
</xsl:template>
<!-- Шаблон для фильтра по дополнительным свойствам -->
<xsl:template match="properties_for_group/property">
<xsl:variable name="nodename">property_id_<xsl:value-of select="@id"/></xsl:variable>
<xsl:variable name="nodename_from">property_id_<xsl:value-of select="@id"/>_from</xsl:variable>
<xsl:variable name="nodename_to">property_id_<xsl:value-of select="@id"/>_to</xsl:variable>
<td>
<xsl:value-of disable-output-escaping="yes" select="property_name"/> 
<xsl:if test="property_show_kind = 1">
<!-- Отображаем поле ввода -->
<br/>
<input type="text" name="property_id_{@id}">
<xsl:if test="/shop/*[name()=$nodename] != ''">
<xsl:attribute name="value">
<xsl:value-of select="/shop/*[name()=$nodename]"/>
</xsl:attribute>
</xsl:if>
</input>
</xsl:if>
<xsl:if test="property_show_kind = 2">
<!-- Отображаем список -->
<br/>
<select name="property_id_{@id}">
<option value="0">...</option>-->
<xsl:apply-templates select="list_items/list_item"/>
</select>
</xsl:if>
<xsl:if test="property_show_kind = 3">
<!-- Отображаем переключатели -->
<br/>
<input type="radio" name="property_id_{@id}" value="0" id="id_prop_radio_{@id}_0"></input>
<label for="id_prop_radio_{@id}_0">Любой вариант</label>
<xsl:apply-templates select="list_items/list_item"/>
</xsl:if>
<xsl:if test=" property_show_kind = 4">
<!-- Отображаем флажки -->
<xsl:apply-templates select="list_items/list_item"/>
</xsl:if>
<xsl:if test=" property_show_kind = 5">
<!-- Отображаем флажок -->
<br/>
<input type="checkbox" name="property_id_{@id}" id="property_id_{@id}" style="padding-top:4px">
<xsl:if test="/shop/*[name()=$nodename] != ''">
<xsl:attribute name="checked">
<xsl:value-of select="/shop/*[name()=$nodename]"/>
</xsl:attribute>
</xsl:if>
</input>
<label for="property_id_{@id}">Да</label>
</xsl:if>
<xsl:if test=" property_show_kind = 6">
<!-- Отображение полей "От.. До.." -->
<br/>
от: <input type="text" name="property_id_{@id}_from" size="5" value="{/shop/*[name()=$nodename_from]}"/> до: <input type="text" name="property_id_{@id}_to" size="5" value="{/shop/*[name()=$nodename_to]}"/>
</xsl:if>
<xsl:if test="property_show_kind = 7">
<!-- Отображаем список с множественным выбором-->
<br/>
<select name="property_id_{@id}[]" multiple="">
<xsl:apply-templates select="list_items/list_item"/>
</select>
</xsl:if>
</td>
<xsl:if test="position() mod 3 = 0">
<xsl:text disable-output-escaping="yes">
</tr>
<tr valign="top">
</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="list_items/list_item">
<xsl:if test="../../property_show_kind = 2">
<!-- Отображаем список -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<option value="{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</option>
</xsl:if>
<xsl:if test="../../property_show_kind = 3">
<!-- Отображаем переключатели -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<br/>
<input type="radio" name="property_id_{../../@id}" value="{@id}" id="id_property_id_{../../@id}_{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
<label for="id_property_id_{../../@id}_{@id}">
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</label>
</input>
</xsl:if>
<xsl:if test="../../property_show_kind = 4">
<!-- Отображаем флажки -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/>_item_id_<xsl:value-of select="@id"/></xsl:variable>
<br/>
<input type="checkbox" name="property_id_{../../@id}_item_id_{@id}" id="id_property_id_{../../@id}_{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
<label for="id_property_id_{../../@id}_{@id}">
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</label>
</input>
</xsl:if>
<xsl:if test="../../property_show_kind = 7">
<!-- Отображаем список -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<option value="{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</option>
</xsl:if>
</xsl:template>
<!-- Цикл с шагом 10 для select'a количества элементов на страницу -->
<xsl:template name="for_on_page">
<xsl:param name="i" select="0"/>
<xsl:param name="n"/>
<option value="{$i}">
<xsl:if test="$i = /shop/on_page">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of select="$i"/>
</option>
<xsl:if test="$n > $i">
<!-- Рекурсивный вызов шаблона -->
<xsl:call-template name="for_on_page">
<xsl:with-param name="i" select="$i + 10"/>
<xsl:with-param name="n" select="$n"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Шаблон для групп товара -->
<xsl:template match="group">
<xsl:variable name="parent_id" select="@parent"/>
<div class="prod">
<div class="good_block">
<xsl:if test="small_image != ''">
<a href="{/shop/path}{fullpath}"><img src="{small_image}" border="0" style="margin-top: 5%; margin-bottom: 3px;" /></a><br />
</xsl:if>
<div class="index_item_title">
<a href="{/shop/path}{fullpath}" style="font-weight: bold">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a> <span class="group_count_goods">(<xsl:value-of select="count_all_items"/>
</span>
</div>
<!--
<br/>
<xsl:value-of disable-output-escaping="yes" select="description"/>
-->
<xsl:if test="count(group) > 1">
<xsl:apply-templates select="group" mode="sub_group"/>
</xsl:if>
</div>
</div>
<!--<xsl:if test="position()= round(count(//group[@parent = $parent_id]) div 2)">-->
<xsl:if test="position() mod 2 = 0">
<xsl:text disable-output-escaping="yes">
</td>
<td valign="top" width="33%" align="center">
</xsl:text>
</xsl:if>
</xsl:template>
<!-- Шаблон для подразделов -->
<xsl:template match="group" mode="sub_group">
<a href="{/shop/path}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<xsl:variable name="parent_id" select="@parent"/>
<!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
<xsl:if test="position() != last() and count(//group[@parent = $parent_id]) > 1">, </xsl:if>
</xsl:template>
<!-- Шаблон для товара -->
<xsl:template match="item">
<div class="prod">
<div class="good_block">
<!-- Указана малое изображение -->
<xsl:if test="small_image != ''">
<!-- style="background-image: url('/images/site15/good_background.jpg'
; background-repeat: no-repeat; border: 0px solid; width: 151px; height: 124px;" -->
<a href="{/shop/path}{fullpath}{path}/">
<img src="{small_image}" alt="{name}" title="{name}" style="margin-top: 5%; margin-bottom: 3px;"/>
</a>
<!--<div class="hit" style="margin: {small_image/@height - 35}px 0 0 90px;"></div>-->
</xsl:if>
<div class="index_item_title">
<a href="{/shop/path}{fullpath}{path}/" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</div>
</div>
<div class="dcc">
<div class="deteils"><div class="inner">
<xsl:choose>
<xsl:when test="price_discount != 0">
<xsl:value-of select="format-number(price_discount, '### ##0,00', 'my'
"/> <xsl:value-of select="currency" disable-output-escaping="yes"/>
</xsl:when>
<xsl:otherwise><font style="color:#000; font-size:9px;">Договорная</font></xsl:otherwise>
</xsl:choose>
</div></div>
<!--<img align="left" alt="" src="/images/site15/d_c.jpg" />-->
<div class="in_cart">
<div class="inner">
<xsl:choose>
<xsl:when test="rest = 0">
<a href="#" onclick="return zakaz();" title="Товар доступен только под заказ!">Под Заказ</a>
</xsl:when>
<xsl:otherwise><a href="{/shop/path}cart/?action=add&item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" title="После нажатия на кнопку купить товар будет добавлен в корзину" class="buyb" rel="nofollow">Купить</a></xsl:otherwise>
</xsl:choose>
</div>
</div>
<div style="clear: both" />
<!--<a href="{/shop/path}cart/?action=add&item_id={@id}" ><img alt="" src="/images/site15/add_card.jpg" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" /></a>-->
</div>
</div>
<xsl:if test="1=0">
<div class="shop_item">
<div class="left" style="text-align: center; position: relative;">
<p>
<a href="{/shop/path}{fullpath}{path}/" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</p>
<p>
<!-- Цена -->
<b>
<xsl:value-of disable-output-escaping="yes" select="price_discount"/> <xsl:value-of disable-output-escaping="yes" select="currency"/> 
</b>
<!-- Ссылку на добавление в корзины выводим, если:
type = 0 - простой тип товара
type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
что означает неограниченное количество -->
<xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
<a href="{/shop/path}cart/?action=add&item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)">
<img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif"/>
</a>
</xsl:if>
</p>
</div>
</div>
</xsl:if>
</xsl:template>
<!-- /// Метки для товаров /// -->
<xsl:template match="tags/tag">
<a href="{/shop/path}tag/{tag_path_name}/" class="tag">
<xsl:value-of select="tag_name"/>
</a>
<xsl:if test="position() != last()"><xsl:text>, </xsl:text></xsl:if>
</xsl:template>
<!-- Шаблон для модификаций -->
<xsl:template match="modifications/item">
<tr>
<td>
<a href="{/shop/path}{fullpath}{path}/">
<img src="{small_image}" class="image" />
</a>
</td>
<td>
<!-- Название модификации -->
<a href="{/shop/path}{fullpath}{path}/">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</td>
<td>
<!-- Цена модификации -->
<xsl:choose>
<xsl:when test="price_discount != 0">
<xsl:value-of disable-output-escaping="yes" select="price_discount"/> 
<!-- Валюта товара -->
<xsl:value-of disable-output-escaping="yes" select="currency"/>
</xsl:when>
<xsl:otherwise>договорная</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<!-- Шаблон для скидки -->
<xsl:template match="discount">
<br/>
<xsl:value-of disable-output-escaping="yes" select="name"/> 
<xsl:value-of disable-output-escaping="yes" select="value"/>%</xsl:template>
<!-- Шаблон для спеццен -->
<xsl:template match="special_price">
<xsl:variable name="item_id" select="@item_id" />
<br/>
от <xsl:value-of select="shop_special_prices_from"/> до <xsl:value-of select="shop_special_prices_to"/> <xsl:value-of select="/shop/item[@id = $item_id]/mesure"/>
<xsl:text> </xsl:text>
—
<xsl:text> </xsl:text>
<xsl:value-of select="format-number(shop_special_prices_price,'### ##0,00', 'my'
" /> <xsl:value-of select="/shop/item[@id = $item_id]/currency"/>
за 1 <xsl:value-of select="/shop/item[@id = $item_id]/mesure"/>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="items_on_page"/>
<xsl:param name="current_page"/>
<xsl:param name="pre_count_page"/>
<xsl:param name="post_count_page"/>
<xsl:param name="i" select="0"/>
<xsl:param name="count_items"/>
<xsl:param name="visible_pages"/>
<xsl:variable name="n" select="ceiling($count_items div $items_on_page)"/>
<xsl:variable name="start_page"><xsl:choose>
<xsl:when test="$current_page + 1 = $n"><xsl:value-of select="$current_page - $visible_pages + 1"/></xsl:when>
<xsl:when test="$current_page - $pre_count_page > 0"><xsl:value-of select="$current_page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:if test="$i = $start_page and $current_page != 0">
<span class="ctrl">
← Ctrl
</span>
</xsl:if>
<xsl:if test="$i = ($current_page + $post_count_page + 1) and $n != ($current_page+1)">
<span class="ctrl">
Ctrl →
</span>
</xsl:if>
<xsl:if test="$count_items > $items_on_page and ($current_page + $post_count_page + 1) > $i">
<!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
<xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>
<!-- Путь для тэга -->
<xsl:variable name="tag_path">
<xsl:if test="count(/shop/selected_tags/tag) = 1">tag/<xsl:value-of select="/shop/selected_tags/tag/tag_path_name"/>/</xsl:if>
</xsl:variable>
<!-- Определяем группу для формирования адреса ссылки -->
<xsl:variable name="group_link">
<xsl:choose>
<!-- Если группа не корневая (!=0) -->
<xsl:when test="$parent_group_id != 0">
<xsl:value-of select="/shop//group[@id=$parent_group_id]/fullpath"/>
</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем адрес ссылки -->
<xsl:variable name="number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="$i != 0">page-<xsl:value-of select="$i + 1"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Передаем фильтр -->
<xsl:variable name="filter">
<xsl:choose>
<xsl:when test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Данные для стрелок сортировки -->
<xsl:variable name="arrows">
<xsl:choose>
<xsl:when test="(/shop/sort_by_field = 1) or (/shop/sort_by_field = 2)">
<xsl:choose>
<!-- Стрелка вверх -->
<xsl:when test="/shop/order_direction = 'ASC'">
<xsl:value-of select="$first_symbol"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=1</xsl:when>
<!-- Стрелка вниз -->
<xsl:otherwise>
<xsl:value-of select="$first_symbol"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=2</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Выводим ссылку на первую страницу -->
<xsl:if test="$current_page - $pre_count_page > 0 and $i = $start_page">
<a href="{/shop/path}{$group_link}{$tag_path}{$filter}{$arrows}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<!-- Ставим ссылку на страницу-->
<xsl:if test="$i != $current_page">
<xsl:if test="($current_page - $pre_count_page) <= $i and $i < $n">
<!-- Выводим ссылки на видимые страницы -->
<a href="{/shop/path}{$group_link}{$tag_path}{$number_link}{$filter}{$arrows}" class="page_link">
<xsl:value-of select="$i + 1"/>
</a>
</xsl:if>
<!-- Выводим ссылку на последнюю страницу -->
<xsl:if test="$i+1 >= ($current_page + $post_count_page + 1) and $n > ($current_page + 1 + $post_count_page)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{/shop/path}{$group_link}{$tag_path}page-{$n}/{$filter}{$arrows}" class="page_link" style="text-decoration: none;">→</a>
</xsl:if>
</xsl:if>
<!-- Ссылка на предыдущую страницу для Ctrl + влево -->
<xsl:if test="$current_page != 0 and $i = $current_page">
<xsl:variable name="prev_number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="($current_page - 1) != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{/shop/path}{$group_link}{$tag_path}{$prev_number_link}{$filter}{$arrows}" id="id_prev"></a>
</xsl:if>
<!-- Ссылка на следующую страницу для Ctrl + вправо -->
<xsl:if test="($n - 1) > $current_page and $i = $current_page">
<a href="{/shop/path}{$group_link}{$tag_path}page-{$current_page+2}/{$filter}{$arrows}" id="id_next"></a>
</xsl:if>
<!-- Не ставим ссылку на страницу-->
<xsl:if test="$i = $current_page">
<span class="current">
<xsl:value-of select="$i+1"/>
</span>
</xsl:if>
<!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
<xsl:call-template name="for">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="items_on_page" select="$items_on_page"/>
<xsl:with-param name="current_page" select="$current_page"/>
<xsl:with-param name="count_items" select="$count_items"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="visible_pages" select="$visible_pages"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<xsl:template match="group" mode="goup_path">
<xsl:param name="parent_id" select="@parent"/>
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:param name="parent_group_id" select="/shop/@current_group_id"/>
<xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>
<xsl:if test="@parent=0">
<a href="{/shop/path}">
<xsl:value-of select="/shop/name"/>
</a>
</xsl:if>
<span class="path_arrow">→</span>
<a href="{/shop/path}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</xsl:template>
</xsl:stylesheet>
Есть шаблон, который выводит каталог товаров. В каталоге товаром есть "Описание". Нужно, чтобы оно выводилось под товарами.
Код шаблона:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl
ecimal-format name="my" decimal-separator="," grouping-separator=" "/><xsl:template match="/">
<xsl:apply-templates select="/shop"/>
</xsl:template>
<!-- Шаблон для магазина -->
<xsl:template match="/shop">
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:variable name="parent_group_id" select="@current_group_id"/>
<!-- Если в находимся корне - выводим название информационной системы -->
<xsl:if test="$parent_group_id = 0">
<h1>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</h1>
</xsl:if>
<!-- Если в находимся в группе - выводим название группы -->
<xsl:if test="$parent_group_id != 0">
<h1>
<xsl:value-of disable-output-escaping="yes" select=".//group[@id=$parent_group_id]/name"/>
</h1>
</xsl:if>
<!-- Обработка выбранных тэгов -->
<xsl:if test="count(selected_tags/tag) = 1">
<h2>Метка — <strong><xsl:value-of select="selected_tags/tag/tag_name"/></strong>.</h2>
</xsl:if>
<!-- Путь к группе -->
<!--
<div class="path">
<xsl:apply-templates select=".//group[@id=$parent_group_id]" mode="goup_path"/>
</div>
-->
<xsl:variable name="count">1</xsl:variable>
<!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам -->
<xsl:if test="count(selected_tags/tag) = 0 and count(//group[@parent=$parent_group_id]) > 0">
<xsl:apply-templates select="//group[@parent=$parent_group_id]"/>
</xsl:if>
<!-- дополнение пути для action, если выбрана метка -->
<xsl:variable name="form_tag_path"><xsl:if test="count(selected_tags/tag) = 1">tag/<xsl:value-of select="selected_tags/tag/tag_path_name"/>/</xsl:if></xsl:variable>
<xsl:if test="count(item) > 0 or apply_filter = 1">
<form method="get" action="{/shop/path}{//group[@id=$parent_group_id]/fullpath}{$form_tag_path}">
<div class="shop_block">
<div>
<!-- Если есть доступные производители -->
<xsl:if test="count(producerslist/producer) > 0">
Производитель: 
<select name="producer_id">
<option value="0">…</option>
<xsl:apply-templates select="producerslist/producer"/>
</select> 
</xsl:if>
<!-- Если есть доступные продавцы -->
<xsl:if test="count(sallers/saller) > 0">
Продавец: 
<select name="saller_id">
<option value="0">…</option>
<xsl:apply-templates select="sallers/saller"/>
</select> 
</xsl:if>
Цена от: 
<input name="price_from" size="5" type="text">
<xsl:if test="/shop/price_from != 0">
<xsl:attribute name="value">
<xsl:value-of disable-output-escaping="yes" select="/shop/price_from"/>
</xsl:attribute>
</xsl:if>
</input> 
до: 
<input name="price_to" size="5" type="text">
<xsl:if test="/shop/price_to != 0">
<xsl:attribute name="value">
<xsl:value-of disable-output-escaping="yes" select="/shop/price_to"/>
</xsl:attribute>
</xsl:if>
</input> 
<span style="white-space: nowrap">Товаров на странице:</span> 
<select name="on_page">
<option value="0">…</option>
<xsl:call-template name="for_on_page">
<xsl:with-param name="i" select="10"/>
<xsl:with-param name="n" select="50"/>
</xsl:call-template>
</select> 
</div>
<xsl:if test="count(properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]) > 0">
<p>
<b>Фильтр по дополнительным свойствам товара:</b>
</p>
<table cellpadding="10px" cellspacing="0">
<tr valign="top">
<xsl:apply-templates select="properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]"/>
</tr>
</table>
</xsl:if>
<div class="nofloat" style="margin-left: 40%">
<div class="gray_button">
<div>
<input name="apply_filter" value="Применить" type="submit"/>
</div>
</div>
</div>
</div>
<!-- Таблица с элементами для сравнения -->
<!--
<xsl:if test="count(/shop/compare_items/compare_item) > 0">
<table cellpadding="5px" cellspacing="0" border="0">
<tr>
<td>
<input type="checkbox" onclick="SelectAllItemsByPrefix(this.checked, 'del_compare_id_'
" /></td>
<td>
<b>Сравниваемые элементы</b>
</td>
</tr>
<xsl:apply-templates select="compare_items/compare_item"/>
</table>
<div class="nofloat" style="height: 47px; padding: 5px 0;">
<div class="gray_button left">
<div>
<input name="apply_compare" value="Сравнить" type="button" onclick="javascript:location='{/shop/path}compare_items/';"/>
</div>
</div>
<div class="gray_button right">
<div>
<input name="delete_compare" value="Удалить" type="submit"/>
</div>
</div>
</div>
</xsl:if>
-->
<!-- Сортировка товаров -->
<div class="shop_block">
<!-- Определяем ссылку с параметрами фильтра -->
<xsl:variable name="filter">
<xsl:if test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:if>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div style="float: left;">
Сортировать по алфавиту
</div>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'ASC'">
<div class="arrow_up">
<img src="/hostcmsfiles/images/arrow_up.png" style="float: left; filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_up_gray">
<a href="{$filter}{$first_symbol}sort_by_field=1&order_direction=1" class="without_decor">
<img src="/hostcmsfiles/images/arrow_up_gray.png" alt="по возрастанию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'DESC'">
<div class="arrow_down">
<img src="/hostcmsfiles/images/arrow_down.png" alt="по убыванию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_down_gray">
<a href="{$filter}{$first_symbol}sort_by_field=1&order_direction=2" class="without_decor">
<img src="/hostcmsfiles/images/arrow_down_gray.png" alt="по убыванию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose><div style="float: left;">, по цене</div>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'ASC'">
<div class="arrow_up">
<img src="/hostcmsfiles/images/arrow_up.png" alt="по возрастанию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_up_gray">
<a href="{$filter}{$first_symbol}sort_by_field=2&order_direction=1" class="without_decor">
<img src="/hostcmsfiles/images/arrow_up_gray.png" alt="по возрастанию"/></a>
</div>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'DESC'">
<div class="arrow_down">
<img src="/hostcmsfiles/images/arrow_down.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
</div>
</xsl:when>
<xsl:otherwise>
<div class="arrow_down_gray">
<a href="{$filter}{$first_symbol}sort_by_field=2&order_direction=2" class="without_decor">
<img src="/hostcmsfiles/images/arrow_down_gray.png" alt="по убыванию"/>
</a>
</div>
</xsl:otherwise>
</xsl:choose>
<div class="clearing"></div>
</div>
<!-- Определяем ссылку с параметрами фильтра -->
<xsl:variable name="filter">
<xsl:choose>
<xsl:when test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Отображаем товары -->
<xsl:apply-templates select="item" />
<!--
<xsl:if test="count_items > 0">
<div class="nofloat" style="height: 27px; padding: 0 0 10px 0;">
<div class="gray_button">
<div>
<input name="add_compare" value="Добавить для сравнения" type="submit" />
</div>
</div>
</div>
</xsl:if>
-->
<xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property) > 0">
<div style="margin: 10px 0px;">
<h2>Атрибуты группы товаров</h2>
<xsl:if test="count(property[@dir_id = 0])">
<table border="0">
<xsl:apply-templates select="property[@dir_id = 0]"/>
</table>
</xsl:if>
<xsl:apply-templates select="/shop/properties_groups_dir"/>
</div>
</xsl:if>
<xsl:if test="count_items > 0 and items_on_page > 0">
<xsl:variable name="count_pages" select="ceiling(count_items div items_on_page)"/>
<xsl:variable name="visible_pages" select="5"/>
<xsl:variable name="real_visible_pages"><xsl:choose>
<xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page"><xsl:choose>
<xsl:when test="current_page - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="current_page"/>
</xsl:when>
<xsl:when test="($count_pages - current_page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - current_page - 1) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
<xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="floor($real_visible_pages div 2)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок после текущего элемента -->
<xsl:variable name="post_count_page"><xsl:choose>
<xsl:when test="0 > current_page - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - current_page - 1"/>
</xsl:when>
<xsl:when test="($count_pages - current_page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:variable name="i"><xsl:choose>
<xsl:when test="current_page + 1 = $count_pages"><xsl:value-of select="current_page - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="current_page - $pre_count_page > 0"><xsl:value-of select="current_page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div style="clear: both"></div>
<p>
<xsl:call-template name="for">
<xsl:with-param name="items_on_page" select="items_on_page"/>
<xsl:with-param name="current_page" select="current_page"/>
<xsl:with-param name="count_items" select="count_items"/>
<xsl:with-param name="i" select="$i"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="visible_pages" select="$real_visible_pages"/>
</xsl:call-template>
</p>
</xsl:if>
</form>
</xsl:if>
</xsl:template>
<!-- Вывод раздела для свойств группы товаров -->
<xsl:template match="properties_groups_dir">
<p><b><xsl:value-of select="shop_properties_groups_dir_name"/></b></p>
<xsl:variable name="dir_id" select="@id"/>
<xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property)">
<table border="0">
<xsl:apply-templates select="/shop/group[@id = /shop/@current_group_id]/propertys/property[@parent_id = $dir_id]"/>
</table>
</xsl:if>
<xsl:if test="count(properties_groups_dir)">
<blockquote>
<xsl:apply-templates select="properties_groups_dir"/>
</blockquote>
</xsl:if>
</xsl:template>
<!-- Вывод строки со значением свойства -->
<xsl:template match="property">
<tr>
<td style="padding: 5px" bgcolor="#eeeeee">
<b><xsl:value-of select="name"/></b>
</td>
<td style="padding: 5px" bgcolor="#eeeeee">
<xsl:choose>
<xsl:when test="type = 1">
<a href="{file_path}">Скачать файл</a>
</xsl:when>
<xsl:when test="type = 7">
<xsl:choose>
<xsl:when test="value = 1">
<input type="checkbox" checked="" disabled="" />
</xsl:when>
<xsl:otherwise>
<input type="checkbox" disabled="" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="value"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<!-- Шаблон для списка товаров для сравнения -->
<xsl:template match="compare_items/compare_item">
<xsl:variable name="var_compare_id" select="."/>
<tr>
<td>
<input type="checkbox" name="del_compare_id_{compare_item_id}" id="id_del_compare_id_{compare_item_id}"/>
</td>
<td>
<a href="{/shop/path}{compare_item_fullpath}{compare_item_path}/">
<xsl:value-of disable-output-escaping="yes" select="compare_item_name"/>
</a>
</td>
</tr>
</xsl:template>
<!-- Шаблон для фильтра производителей -->
<xsl:template match="producerslist/producer">
<xsl:param name="id_prod" select="@id"/>
<!--
<xsl:variable name="node_name" select="concat('производители', $id_prod)"/>
<xsl:if test="count(/shop/*[name() = $node_name])">
-->
<option value="{@id}">
<xsl:if test="@id = /shop/producer_id">
<xsl:attribute name="selected"> </xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="shop_producers_list_name"/>
</option>
<!--
</xsl:if>
-->
</xsl:template>
<!-- Шаблон для фильтра продавцов -->
<xsl:template match="sallers/saller">
<option value="{@id}">
<xsl:if test="@id = /shop/saller_id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of select="sallers_name"/>
</option>
</xsl:template>
<!-- Шаблон для фильтра по дополнительным свойствам -->
<xsl:template match="properties_for_group/property">
<xsl:variable name="nodename">property_id_<xsl:value-of select="@id"/></xsl:variable>
<xsl:variable name="nodename_from">property_id_<xsl:value-of select="@id"/>_from</xsl:variable>
<xsl:variable name="nodename_to">property_id_<xsl:value-of select="@id"/>_to</xsl:variable>
<td>
<xsl:value-of disable-output-escaping="yes" select="property_name"/> 
<xsl:if test="property_show_kind = 1">
<!-- Отображаем поле ввода -->
<br/>
<input type="text" name="property_id_{@id}">
<xsl:if test="/shop/*[name()=$nodename] != ''">
<xsl:attribute name="value">
<xsl:value-of select="/shop/*[name()=$nodename]"/>
</xsl:attribute>
</xsl:if>
</input>
</xsl:if>
<xsl:if test="property_show_kind = 2">
<!-- Отображаем список -->
<br/>
<select name="property_id_{@id}">
<option value="0">...</option>-->
<xsl:apply-templates select="list_items/list_item"/>
</select>
</xsl:if>
<xsl:if test="property_show_kind = 3">
<!-- Отображаем переключатели -->
<br/>
<input type="radio" name="property_id_{@id}" value="0" id="id_prop_radio_{@id}_0"></input>
<label for="id_prop_radio_{@id}_0">Любой вариант</label>
<xsl:apply-templates select="list_items/list_item"/>
</xsl:if>
<xsl:if test=" property_show_kind = 4">
<!-- Отображаем флажки -->
<xsl:apply-templates select="list_items/list_item"/>
</xsl:if>
<xsl:if test=" property_show_kind = 5">
<!-- Отображаем флажок -->
<br/>
<input type="checkbox" name="property_id_{@id}" id="property_id_{@id}" style="padding-top:4px">
<xsl:if test="/shop/*[name()=$nodename] != ''">
<xsl:attribute name="checked">
<xsl:value-of select="/shop/*[name()=$nodename]"/>
</xsl:attribute>
</xsl:if>
</input>
<label for="property_id_{@id}">Да</label>
</xsl:if>
<xsl:if test=" property_show_kind = 6">
<!-- Отображение полей "От.. До.." -->
<br/>
от: <input type="text" name="property_id_{@id}_from" size="5" value="{/shop/*[name()=$nodename_from]}"/> до: <input type="text" name="property_id_{@id}_to" size="5" value="{/shop/*[name()=$nodename_to]}"/>
</xsl:if>
<xsl:if test="property_show_kind = 7">
<!-- Отображаем список с множественным выбором-->
<br/>
<select name="property_id_{@id}[]" multiple="">
<xsl:apply-templates select="list_items/list_item"/>
</select>
</xsl:if>
</td>
<xsl:if test="position() mod 3 = 0">
<xsl:text disable-output-escaping="yes">
</tr>
<tr valign="top">
</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="list_items/list_item">
<xsl:if test="../../property_show_kind = 2">
<!-- Отображаем список -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<option value="{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</option>
</xsl:if>
<xsl:if test="../../property_show_kind = 3">
<!-- Отображаем переключатели -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<br/>
<input type="radio" name="property_id_{../../@id}" value="{@id}" id="id_property_id_{../../@id}_{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
<label for="id_property_id_{../../@id}_{@id}">
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</label>
</input>
</xsl:if>
<xsl:if test="../../property_show_kind = 4">
<!-- Отображаем флажки -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/>_item_id_<xsl:value-of select="@id"/></xsl:variable>
<br/>
<input type="checkbox" name="property_id_{../../@id}_item_id_{@id}" id="id_property_id_{../../@id}_{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
<label for="id_property_id_{../../@id}_{@id}">
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</label>
</input>
</xsl:if>
<xsl:if test="../../property_show_kind = 7">
<!-- Отображаем список -->
<xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
<option value="{@id}">
<xsl:if test="/shop/*[name()=$nodename] = @id">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
</option>
</xsl:if>
</xsl:template>
<!-- Цикл с шагом 10 для select'a количества элементов на страницу -->
<xsl:template name="for_on_page">
<xsl:param name="i" select="0"/>
<xsl:param name="n"/>
<option value="{$i}">
<xsl:if test="$i = /shop/on_page">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of select="$i"/>
</option>
<xsl:if test="$n > $i">
<!-- Рекурсивный вызов шаблона -->
<xsl:call-template name="for_on_page">
<xsl:with-param name="i" select="$i + 10"/>
<xsl:with-param name="n" select="$n"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Шаблон для групп товара -->
<xsl:template match="group">
<xsl:variable name="parent_id" select="@parent"/>
<div class="prod">
<div class="good_block">
<xsl:if test="small_image != ''">
<a href="{/shop/path}{fullpath}"><img src="{small_image}" border="0" style="margin-top: 5%; margin-bottom: 3px;" /></a><br />
</xsl:if>
<div class="index_item_title">
<a href="{/shop/path}{fullpath}" style="font-weight: bold">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a> <span class="group_count_goods">(<xsl:value-of select="count_all_items"/>
</span></div>
<!--
<br/>
<xsl:value-of disable-output-escaping="yes" select="description"/>
-->
<xsl:if test="count(group) > 1">
<xsl:apply-templates select="group" mode="sub_group"/>
</xsl:if>
</div>
</div>
<!--<xsl:if test="position()= round(count(//group[@parent = $parent_id]) div 2)">-->
<xsl:if test="position() mod 2 = 0">
<xsl:text disable-output-escaping="yes">
</td>
<td valign="top" width="33%" align="center">
</xsl:text>
</xsl:if>
</xsl:template>
<!-- Шаблон для подразделов -->
<xsl:template match="group" mode="sub_group">
<a href="{/shop/path}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<xsl:variable name="parent_id" select="@parent"/>
<!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
<xsl:if test="position() != last() and count(//group[@parent = $parent_id]) > 1">, </xsl:if>
</xsl:template>
<!-- Шаблон для товара -->
<xsl:template match="item">
<div class="prod">
<div class="good_block">
<!-- Указана малое изображение -->
<xsl:if test="small_image != ''">
<!-- style="background-image: url('/images/site15/good_background.jpg'
; background-repeat: no-repeat; border: 0px solid; width: 151px; height: 124px;" --><a href="{/shop/path}{fullpath}{path}/">
<img src="{small_image}" alt="{name}" title="{name}" style="margin-top: 5%; margin-bottom: 3px;"/>
</a>
<!--<div class="hit" style="margin: {small_image/@height - 35}px 0 0 90px;"></div>-->
</xsl:if>
<div class="index_item_title">
<a href="{/shop/path}{fullpath}{path}/" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</div>
</div>
<div class="dcc">
<div class="deteils"><div class="inner">
<xsl:choose>
<xsl:when test="price_discount != 0">
<xsl:value-of select="format-number(price_discount, '### ##0,00', 'my'
"/> <xsl:value-of select="currency" disable-output-escaping="yes"/></xsl:when>
<xsl:otherwise><font style="color:#000; font-size:9px;">Договорная</font></xsl:otherwise>
</xsl:choose>
</div></div>
<!--<img align="left" alt="" src="/images/site15/d_c.jpg" />-->
<div class="in_cart">
<div class="inner">
<xsl:choose>
<xsl:when test="rest = 0">
<a href="#" onclick="return zakaz();" title="Товар доступен только под заказ!">Под Заказ</a>
</xsl:when>
<xsl:otherwise><a href="{/shop/path}cart/?action=add&item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" title="После нажатия на кнопку купить товар будет добавлен в корзину" class="buyb" rel="nofollow">Купить</a></xsl:otherwise>
</xsl:choose>
</div>
</div>
<div style="clear: both" />
<!--<a href="{/shop/path}cart/?action=add&item_id={@id}" ><img alt="" src="/images/site15/add_card.jpg" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" /></a>-->
</div>
</div>
<xsl:if test="1=0">
<div class="shop_item">
<div class="left" style="text-align: center; position: relative;">
<p>
<a href="{/shop/path}{fullpath}{path}/" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</p>
<p>
<!-- Цена -->
<b>
<xsl:value-of disable-output-escaping="yes" select="price_discount"/> <xsl:value-of disable-output-escaping="yes" select="currency"/> 
</b>
<!-- Ссылку на добавление в корзины выводим, если:
type = 0 - простой тип товара
type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
что означает неограниченное количество -->
<xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
<a href="{/shop/path}cart/?action=add&item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)">
<img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif"/>
</a>
</xsl:if>
</p>
</div>
</div>
</xsl:if>
</xsl:template>
<!-- /// Метки для товаров /// -->
<xsl:template match="tags/tag">
<a href="{/shop/path}tag/{tag_path_name}/" class="tag">
<xsl:value-of select="tag_name"/>
</a>
<xsl:if test="position() != last()"><xsl:text>, </xsl:text></xsl:if>
</xsl:template>
<!-- Шаблон для модификаций -->
<xsl:template match="modifications/item">
<tr>
<td>
<a href="{/shop/path}{fullpath}{path}/">
<img src="{small_image}" class="image" />
</a>
</td>
<td>
<!-- Название модификации -->
<a href="{/shop/path}{fullpath}{path}/">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</td>
<td>
<!-- Цена модификации -->
<xsl:choose>
<xsl:when test="price_discount != 0">
<xsl:value-of disable-output-escaping="yes" select="price_discount"/> 
<!-- Валюта товара -->
<xsl:value-of disable-output-escaping="yes" select="currency"/>
</xsl:when>
<xsl:otherwise>договорная</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<!-- Шаблон для скидки -->
<xsl:template match="discount">
<br/>
<xsl:value-of disable-output-escaping="yes" select="name"/> 
<xsl:value-of disable-output-escaping="yes" select="value"/>%</xsl:template>
<!-- Шаблон для спеццен -->
<xsl:template match="special_price">
<xsl:variable name="item_id" select="@item_id" />
<br/>
от <xsl:value-of select="shop_special_prices_from"/> до <xsl:value-of select="shop_special_prices_to"/> <xsl:value-of select="/shop/item[@id = $item_id]/mesure"/>
<xsl:text> </xsl:text>
—
<xsl:text> </xsl:text>
<xsl:value-of select="format-number(shop_special_prices_price,'### ##0,00', 'my'
" /> <xsl:value-of select="/shop/item[@id = $item_id]/currency"/>за 1 <xsl:value-of select="/shop/item[@id = $item_id]/mesure"/>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="items_on_page"/>
<xsl:param name="current_page"/>
<xsl:param name="pre_count_page"/>
<xsl:param name="post_count_page"/>
<xsl:param name="i" select="0"/>
<xsl:param name="count_items"/>
<xsl:param name="visible_pages"/>
<xsl:variable name="n" select="ceiling($count_items div $items_on_page)"/>
<xsl:variable name="start_page"><xsl:choose>
<xsl:when test="$current_page + 1 = $n"><xsl:value-of select="$current_page - $visible_pages + 1"/></xsl:when>
<xsl:when test="$current_page - $pre_count_page > 0"><xsl:value-of select="$current_page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:if test="$i = $start_page and $current_page != 0">
<span class="ctrl">
← Ctrl
</span>
</xsl:if>
<xsl:if test="$i = ($current_page + $post_count_page + 1) and $n != ($current_page+1)">
<span class="ctrl">
Ctrl →
</span>
</xsl:if>
<xsl:if test="$count_items > $items_on_page and ($current_page + $post_count_page + 1) > $i">
<!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
<xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>
<!-- Путь для тэга -->
<xsl:variable name="tag_path">
<xsl:if test="count(/shop/selected_tags/tag) = 1">tag/<xsl:value-of select="/shop/selected_tags/tag/tag_path_name"/>/</xsl:if>
</xsl:variable>
<!-- Определяем группу для формирования адреса ссылки -->
<xsl:variable name="group_link">
<xsl:choose>
<!-- Если группа не корневая (!=0) -->
<xsl:when test="$parent_group_id != 0">
<xsl:value-of select="/shop//group[@id=$parent_group_id]/fullpath"/>
</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем адрес ссылки -->
<xsl:variable name="number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="$i != 0">page-<xsl:value-of select="$i + 1"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Передаем фильтр -->
<xsl:variable name="filter">
<xsl:choose>
<xsl:when test="/shop/apply_filter/node()">?action=apply_filter&producer_id=<xsl:value-of select="/shop/producer_id"/>&saller_id=<xsl:value-of select="/shop/saller_id"/>&price_from=<xsl:value-of select="/shop/price_from"/>&price_to=<xsl:value-of select="/shop/price_to"/>&on_page=<xsl:value-of select="/shop/on_page"/>
<xsl:if test="/shop/property_xml/node()">
<!-- GET для доп. свойств -->
<xsl:value-of select="/shop/property_xml"/>
</xsl:if>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Определяем первый символ вопрос или амперсанд -->
<xsl:variable name="first_symbol">
<xsl:choose>
<xsl:when test="$filter != ''">&</xsl:when>
<xsl:otherwise>?</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Данные для стрелок сортировки -->
<xsl:variable name="arrows">
<xsl:choose>
<xsl:when test="(/shop/sort_by_field = 1) or (/shop/sort_by_field = 2)">
<xsl:choose>
<!-- Стрелка вверх -->
<xsl:when test="/shop/order_direction = 'ASC'">
<xsl:value-of select="$first_symbol"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=1</xsl:when>
<!-- Стрелка вниз -->
<xsl:otherwise>
<xsl:value-of select="$first_symbol"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=2</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Выводим ссылку на первую страницу -->
<xsl:if test="$current_page - $pre_count_page > 0 and $i = $start_page">
<a href="{/shop/path}{$group_link}{$tag_path}{$filter}{$arrows}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<!-- Ставим ссылку на страницу-->
<xsl:if test="$i != $current_page">
<xsl:if test="($current_page - $pre_count_page) <= $i and $i < $n">
<!-- Выводим ссылки на видимые страницы -->
<a href="{/shop/path}{$group_link}{$tag_path}{$number_link}{$filter}{$arrows}" class="page_link">
<xsl:value-of select="$i + 1"/>
</a>
</xsl:if>
<!-- Выводим ссылку на последнюю страницу -->
<xsl:if test="$i+1 >= ($current_page + $post_count_page + 1) and $n > ($current_page + 1 + $post_count_page)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{/shop/path}{$group_link}{$tag_path}page-{$n}/{$filter}{$arrows}" class="page_link" style="text-decoration: none;">→</a>
</xsl:if>
</xsl:if>
<!-- Ссылка на предыдущую страницу для Ctrl + влево -->
<xsl:if test="$current_page != 0 and $i = $current_page">
<xsl:variable name="prev_number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="($current_page - 1) != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{/shop/path}{$group_link}{$tag_path}{$prev_number_link}{$filter}{$arrows}" id="id_prev"></a>
</xsl:if>
<!-- Ссылка на следующую страницу для Ctrl + вправо -->
<xsl:if test="($n - 1) > $current_page and $i = $current_page">
<a href="{/shop/path}{$group_link}{$tag_path}page-{$current_page+2}/{$filter}{$arrows}" id="id_next"></a>
</xsl:if>
<!-- Не ставим ссылку на страницу-->
<xsl:if test="$i = $current_page">
<span class="current">
<xsl:value-of select="$i+1"/>
</span>
</xsl:if>
<!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
<xsl:call-template name="for">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="items_on_page" select="$items_on_page"/>
<xsl:with-param name="current_page" select="$current_page"/>
<xsl:with-param name="count_items" select="$count_items"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="visible_pages" select="$visible_pages"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<xsl:template match="group" mode="goup_path">
<xsl:param name="parent_id" select="@parent"/>
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:param name="parent_group_id" select="/shop/@current_group_id"/>
<xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>
<xsl:if test="@parent=0">
<a href="{/shop/path}">
<xsl:value-of select="/shop/name"/>
</a>
</xsl:if>
<span class="path_arrow">→</span>
<a href="{/shop/path}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</xsl:template>
</xsl:stylesheet>
и еще. Title был изначально запаян в макет сайта, т.е. на всех страницах был одинаковый. Убрал из макета - в тайтл выводится url. Помогите исправить. Листинт фалов приведу каких нужно
nononoy писал(а):
Затем осознать, что когда вы выкладываете длинный XSL-шаблон (даже если он правильно оформлен в bb-тег code) то он сам по себе бесполезен, никто не будет читать и разбираться глазами в этой простыне. Поэтому нужно приложить еще и тот XML, который обрабатывается вашим XSL-шаблоном, и для которого результат преобразования наглядно иллюстрирует ваш вопрос (и, разумеется, XML тоже нужно оформить bb-тегом code).
Тогда ваш шаблон и xml от него можно будет скопипастить в любую программу-отладчик (например, Stylus Studio), запустить локально, ткнуть мышью туда где неправильно, и разобраться что в этом месте не так.
А еще лучше будет, если вы поставите себе подобную программу сами, разберетесь как из XML путем XSL-преобразования получается фрагмент html-документа, и решите свою проблему самостоятельно.
Есть шаблон, который выводит каталог товаров. В каталоге товаром есть "Описание". Нужно, чтобы оно выводилось под товарами.
Код шаблона:
nononoy, для начала вам надо освоить использование bb-тега code, чтобы код шаблона выглядел как код, а не как текст со стрелочками и смайликами.Код шаблона:
Затем осознать, что когда вы выкладываете длинный XSL-шаблон (даже если он правильно оформлен в bb-тег code) то он сам по себе бесполезен, никто не будет читать и разбираться глазами в этой простыне. Поэтому нужно приложить еще и тот XML, который обрабатывается вашим XSL-шаблоном, и для которого результат преобразования наглядно иллюстрирует ваш вопрос (и, разумеется, XML тоже нужно оформить bb-тегом code).
Тогда ваш шаблон и xml от него можно будет скопипастить в любую программу-отладчик (например, Stylus Studio), запустить локально, ткнуть мышью туда где неправильно, и разобраться что в этом месте не так.
А еще лучше будет, если вы поставите себе подобную программу сами, разберетесь как из XML путем XSL-преобразования получается фрагмент html-документа, и решите свою проблему самостоятельно.
Заказов не беру. Консультирую редко.
nononoy писал(а):
Зайдите на демо-сайт, или скачайте дистрибутив от вашей версии, посмотрите, что написано там между тегами title и сделайте у себя так же.
Title был изначально запаян в макет сайта, т.е. на всех страницах был одинаковый. Убрал из макета - в тайтл выводится url. Помогите исправить.
Это потому что у вас между тегами title теперь ничего нет.Зайдите на демо-сайт, или скачайте дистрибутив от вашей версии, посмотрите, что написано там между тегами title и сделайте у себя так же.
Заказов не беру. Консультирую редко.
Скажите, пожалуйста, если при импорте прайса мне необходимо импортировать только новую цену на товар и кол-во на складах, то можно ли оставить в прайсе только поля артикул, цена и кол-во? Или все равно нужно оставлять другие поля?
Авторизация