Вопрос по поиску
Приветствую всех форумчан, подскажите пожалуйста, по поводу поиска.
Приходилось мне реализовывать стандартный поиск Host CMS, который выводит ссылки на страницы, текст с подсвеченными искомыми словами.
Делал я и поиск который выводит карточки товаров, а возможно ли реализовать поиск который будет в результатах выводить вначале карточки а потом страницы, на которых было найдено искомое слово(например из разделов статьи, новости).
Приходилось мне реализовывать стандартный поиск Host CMS, который выводит ссылки на страницы, текст с подсвеченными искомыми словами.
Делал я и поиск который выводит карточки товаров, а возможно ли реализовать поиск который будет в результатах выводить вначале карточки а потом страницы, на которых было найдено искомое слово(например из разделов статьи, новости).
PakoGonsalezZ,
Думаю для этого вам необходимо сделать проверку в XSL. Например выводить первыми из найденного результата товары по тегу shop_item
Далее под ними уже сами ссылки (из разделов статьи, новости)
Думаю для этого вам необходимо сделать проверку в XSL. Например выводить первыми из найденного результата товары по тегу shop_item
Далее под ними уже сами ссылки (из разделов статьи, новости)
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
PakoGonsalezZ,
под карточками имеются ввиду карточки товара?
У контроллера показа поиска есть две опции:
* - orderField($orderField) поле сортировки, по умолчанию 'weight'
* - orderDirection($orderDirection) направление сортировки, по умолчанию 'DESC'
вы можете указать в качестве поля сортировки module (3 - магазин), а для orderField задать
под карточками имеются ввиду карточки товара?
У контроллера показа поиска есть две опции:
* - orderField($orderField) поле сортировки, по умолчанию 'weight'
* - orderDirection($orderDirection) направление сортировки, по умолчанию 'DESC'
вы можете указать в качестве поля сортировки module (3 - магазин), а для orderField задать
->orderField(Core_QueryBuilder::expression('FIELD(module, 3, 0, 1, 2, 4)'))
Мне необходимо сделать поиск такого типа
Вывод карточек товара я уже сделал, а вот как реализовать, чтобы он также искал в статьях и выводил их другим темплейтом
Вот мой XSL шаблон вывода результатов
Вывод карточек товара я уже сделал, а вот как реализовать, чтобы он также искал в статьях и выводил их другим темплейтом
Вот мой XSL шаблон вывода результатов
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hostcms="http://www.hostcms.ru/"
exclude-result-prefixes="hostcms">
<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:decimal-format name="my" decimal-separator="," grouping-separator=" "/>
<xsl:template match="/">
<xsl:apply-templates select="/site"/>
</xsl:template>
<xsl:template match="/site">
<form method="get" action="/search/">
<xsl:if test="query!=''">
<p>
<strong>
Найдено <xsl:value-of select="total"/>
<xsl:text> </xsl:text>
<xsl:call-template name="declension">
<xsl:with-param name="number" select="total"/>
</xsl:call-template>
</strong>.
</p>
<xsl:if test="total != 0">
<xsl:if test="1 = 0">
<div class="shop_filter">
<div class="sorting">
Выберите тип сортировки:
<xsl:text> </xsl:text>
<select name="sorting" onchange="$(this).parents('form:first').submit()">
<option>Сортировать</option>
<option value="1">
<xsl:if test="search_sorting = 1">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене (сначала дешевые)
</option>
<option value="2">
<xsl:if test="search_sorting = 2">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене (сначала дорогие)
</option>
</select>
</div>
</div>
</xsl:if>
<div>
<input id="search" type="text" name="text" value="{query}" maxlength="200" class="input_buttom_search"/>
<xsl:text> </xsl:text>
<input type="submit" class="button" value="Искать"/>
</div>
<div class="catalog clearfix">
<div class="catalog_wrap">
<!-- Выводим товары магазина -->
<xsl:apply-templates select="search_page/shop_item" />
</div>
</div>
<xsl:if test="total > 0 and limit > 0">
<xsl:variable name="count_pages" select="ceiling(total div limit)"/>
<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="(page) - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="page"/>
</xsl:when>
<xsl:when test="($count_pages - (page) - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - (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 > (page) - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - (page) - 1"/>
</xsl:when>
<xsl:when test="($count_pages - (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="(page) + 1 = $count_pages"><xsl:value-of select="(page) - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="(page) - $pre_count_page > 0"><xsl:value-of select="(page) - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div class="b-pagination">
<ul class="b-pagination__list">
<xsl:if test="$count_pages > 1">
<xsl:call-template name="for">
<xsl:with-param name="limit" select="limit"/>
<xsl:with-param name="page" select="page"/>
<xsl:with-param name="items_count" select="total"/>
<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>
</xsl:if>
</ul>
</div>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="query = ''">
<p>Введите поисковой запрос.</p>
<div>
<input id="search" type="text" name="text" value="{query}" maxlength="200" class="input_buttom_search"/>
<xsl:text> </xsl:text>
<input type="submit" class="button" value="Искать"/>
</div>
</xsl:if>
</form>
<div class="clear"></div>
</xsl:template>
<!-- Шаблон для товара -->
<xsl:template match="shop_item">
<div class="catalog__item"><img class="catalog__item-img" src="{dir}{image_small}" /><a class="catalog__item-name" href="{url}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<div class="catalog__item-color"><span class="catalog__item-color-label">Цвет:</span>
<div class="dropdown">
<button class="dropdown__btn">1/2</button>
<div class="dropdown__list">
<button class="dropdown__list-btn">1/2</button>
<button class="dropdown__list-btn">1/4</button>
<button class="dropdown__list-btn">1/8</button>
</div>
</div>
</div>
<div class="catalog__item-price-wrap"><span class="catalog__item-price"><xsl:value-of select="format-number(price, '### ##0,00', 'my')"/><xsl:text> </xsl:text><xsl:value-of select="currency"/><xsl:text> </xsl:text></span>
<input type="hidden" id="quantity_{@id}" value="1" />
<a href="{/shop/url}cart/?add={@id}" onclick="return $.addIntoCart('{/shop/url}cart/', {@id}, $('#quantity_{@id}').val())" class="catalog__item-buy to-cart bt-orange2" >купить</a></div>
</div>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="limit"/>
<xsl:param name="page"/>
<xsl:param name="pre_count_page"/>
<xsl:param name="post_count_page"/>
<xsl:param name="i" select="0"/>
<xsl:param name="items_count"/>
<xsl:param name="visible_pages"/>
<xsl:variable name="n" select="ceiling($items_count div $limit)"/>
<xsl:variable name="start_page"><xsl:choose>
<xsl:when test="$page + 1 = $n"><xsl:value-of select="$page - $visible_pages + 1"/></xsl:when>
<xsl:when test="$page - $pre_count_page > 0"><xsl:value-of select="$page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:if test="$items_count > $limit and ($page + $post_count_page + 1) > $i">
<!-- Ссылка на текущий узел структуры -->
<xsl:variable name="link" select="/site/url" />
<!-- Текст поискового запроса -->
<xsl:variable name="queryencode">?text=<xsl:value-of select="/site/queryencode"/>&sorting=<xsl:value-of select="/site/search_sorting" /></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:if test="$page - $pre_count_page > 0 and $i = $start_page">
<a href="{$link}{$queryencode}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<!-- Ставим ссылку на страницу-->
<xsl:if test="$i != $page">
<xsl:if test="($page - $pre_count_page) <= $i and $i < $n">
<!-- Выводим ссылки на видимые страницы -->
<a href="{$link}{$number_link}{$queryencode}" class="page_link">
<xsl:value-of select="$i + 1"/>
</a>
</xsl:if>
<!-- Выводим ссылку на последнюю страницу -->
<xsl:if test="$i+1 >= ($page + $post_count_page + 1) and $n > ($page + 1 + $post_count_page)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{$link}page-{$n}/{$queryencode}" class="page_link" style="text-decoration: none;">→</a>
</xsl:if>
</xsl:if>
<!-- Ссылка на предыдущую страницу для Ctrl + влево -->
<xsl:if test="$page != 0 and $i = $page">
<xsl:variable name="prev_number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="$page > 1">page-<xsl:value-of select="$i"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{$link}{$prev_number_link}{$queryencode}" id="id_prev"></a>
</xsl:if>
<!-- Ссылка на следующую страницу для Ctrl + вправо -->
<xsl:if test="($n - 1) > $page and $i = $page">
<a href="{$link}page-{$page+2}/{$queryencode}" id="id_next"></a>
</xsl:if>
<!-- Не ставим ссылку на страницу-->
<xsl:if test="$i = $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="limit" select="$limit"/>
<xsl:with-param name="page" select="$page"/>
<xsl:with-param name="items_count" select="$items_count"/>
<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 name="declension">
<xsl:param name="number" select="number"/>
<!-- Именительный падеж -->
<xsl:variable name="nominative">
<xsl:text>товар</xsl:text>
</xsl:variable>
<!-- Родительный падеж, единственное число -->
<xsl:variable name="genitive_singular">
<xsl:text>товара</xsl:text>
</xsl:variable>
<xsl:variable name="genitive_plural">
<xsl:text>товаров</xsl:text>
</xsl:variable>
<xsl:variable name="last_digit">
<xsl:value-of select="$number mod 10"/>
</xsl:variable>
<xsl:variable name="last_two_digits">
<xsl:value-of select="$number mod 100"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$last_digit = 1 and $last_two_digits != 11">
<xsl:value-of select="$nominative"/>
</xsl:when>
<xsl:when test="$last_digit = 2 and $last_two_digits != 12 or $last_digit = 3 and $last_two_digits != 13 or $last_digit = 4 and $last_two_digits != 14">
<xsl:value-of select="$genitive_singular"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$genitive_plural"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hostcms="http://www.hostcms.ru/"
exclude-result-prefixes="hostcms">
<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:decimal-format name="my" decimal-separator="," grouping-separator=" "/>
<xsl:template match="/">
<xsl:apply-templates select="/site"/>
</xsl:template>
<xsl:template match="/site">
<form method="get" action="/search/">
<xsl:if test="query!=''">
<p>
<strong>
Найдено <xsl:value-of select="total"/>
<xsl:text> </xsl:text>
<xsl:call-template name="declension">
<xsl:with-param name="number" select="total"/>
</xsl:call-template>
</strong>.
</p>
<xsl:if test="total != 0">
<xsl:if test="1 = 0">
<div class="shop_filter">
<div class="sorting">
Выберите тип сортировки:
<xsl:text> </xsl:text>
<select name="sorting" onchange="$(this).parents('form:first').submit()">
<option>Сортировать</option>
<option value="1">
<xsl:if test="search_sorting = 1">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене (сначала дешевые)
</option>
<option value="2">
<xsl:if test="search_sorting = 2">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене (сначала дорогие)
</option>
</select>
</div>
</div>
</xsl:if>
<div>
<input id="search" type="text" name="text" value="{query}" maxlength="200" class="input_buttom_search"/>
<xsl:text> </xsl:text>
<input type="submit" class="button" value="Искать"/>
</div>
<div class="catalog clearfix">
<div class="catalog_wrap">
<!-- Выводим товары магазина -->
<xsl:apply-templates select="search_page/shop_item" />
</div>
</div>
<xsl:if test="total > 0 and limit > 0">
<xsl:variable name="count_pages" select="ceiling(total div limit)"/>
<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="(page) - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="page"/>
</xsl:when>
<xsl:when test="($count_pages - (page) - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - (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 > (page) - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - (page) - 1"/>
</xsl:when>
<xsl:when test="($count_pages - (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="(page) + 1 = $count_pages"><xsl:value-of select="(page) - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="(page) - $pre_count_page > 0"><xsl:value-of select="(page) - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div class="b-pagination">
<ul class="b-pagination__list">
<xsl:if test="$count_pages > 1">
<xsl:call-template name="for">
<xsl:with-param name="limit" select="limit"/>
<xsl:with-param name="page" select="page"/>
<xsl:with-param name="items_count" select="total"/>
<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>
</xsl:if>
</ul>
</div>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="query = ''">
<p>Введите поисковой запрос.</p>
<div>
<input id="search" type="text" name="text" value="{query}" maxlength="200" class="input_buttom_search"/>
<xsl:text> </xsl:text>
<input type="submit" class="button" value="Искать"/>
</div>
</xsl:if>
</form>
<div class="clear"></div>
</xsl:template>
<!-- Шаблон для товара -->
<xsl:template match="shop_item">
<div class="catalog__item"><img class="catalog__item-img" src="{dir}{image_small}" /><a class="catalog__item-name" href="{url}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<div class="catalog__item-color"><span class="catalog__item-color-label">Цвет:</span>
<div class="dropdown">
<button class="dropdown__btn">1/2</button>
<div class="dropdown__list">
<button class="dropdown__list-btn">1/2</button>
<button class="dropdown__list-btn">1/4</button>
<button class="dropdown__list-btn">1/8</button>
</div>
</div>
</div>
<div class="catalog__item-price-wrap"><span class="catalog__item-price"><xsl:value-of select="format-number(price, '### ##0,00', 'my')"/><xsl:text> </xsl:text><xsl:value-of select="currency"/><xsl:text> </xsl:text></span>
<input type="hidden" id="quantity_{@id}" value="1" />
<a href="{/shop/url}cart/?add={@id}" onclick="return $.addIntoCart('{/shop/url}cart/', {@id}, $('#quantity_{@id}').val())" class="catalog__item-buy to-cart bt-orange2" >купить</a></div>
</div>
</xsl:template>
<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="limit"/>
<xsl:param name="page"/>
<xsl:param name="pre_count_page"/>
<xsl:param name="post_count_page"/>
<xsl:param name="i" select="0"/>
<xsl:param name="items_count"/>
<xsl:param name="visible_pages"/>
<xsl:variable name="n" select="ceiling($items_count div $limit)"/>
<xsl:variable name="start_page"><xsl:choose>
<xsl:when test="$page + 1 = $n"><xsl:value-of select="$page - $visible_pages + 1"/></xsl:when>
<xsl:when test="$page - $pre_count_page > 0"><xsl:value-of select="$page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:if test="$items_count > $limit and ($page + $post_count_page + 1) > $i">
<!-- Ссылка на текущий узел структуры -->
<xsl:variable name="link" select="/site/url" />
<!-- Текст поискового запроса -->
<xsl:variable name="queryencode">?text=<xsl:value-of select="/site/queryencode"/>&sorting=<xsl:value-of select="/site/search_sorting" /></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:if test="$page - $pre_count_page > 0 and $i = $start_page">
<a href="{$link}{$queryencode}" class="page_link" style="text-decoration: none;">←</a>
</xsl:if>
<!-- Ставим ссылку на страницу-->
<xsl:if test="$i != $page">
<xsl:if test="($page - $pre_count_page) <= $i and $i < $n">
<!-- Выводим ссылки на видимые страницы -->
<a href="{$link}{$number_link}{$queryencode}" class="page_link">
<xsl:value-of select="$i + 1"/>
</a>
</xsl:if>
<!-- Выводим ссылку на последнюю страницу -->
<xsl:if test="$i+1 >= ($page + $post_count_page + 1) and $n > ($page + 1 + $post_count_page)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{$link}page-{$n}/{$queryencode}" class="page_link" style="text-decoration: none;">→</a>
</xsl:if>
</xsl:if>
<!-- Ссылка на предыдущую страницу для Ctrl + влево -->
<xsl:if test="$page != 0 and $i = $page">
<xsl:variable name="prev_number_link">
<xsl:choose>
<!-- Если не нулевой уровень -->
<xsl:when test="$page > 1">page-<xsl:value-of select="$i"/>/</xsl:when>
<!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{$link}{$prev_number_link}{$queryencode}" id="id_prev"></a>
</xsl:if>
<!-- Ссылка на следующую страницу для Ctrl + вправо -->
<xsl:if test="($n - 1) > $page and $i = $page">
<a href="{$link}page-{$page+2}/{$queryencode}" id="id_next"></a>
</xsl:if>
<!-- Не ставим ссылку на страницу-->
<xsl:if test="$i = $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="limit" select="$limit"/>
<xsl:with-param name="page" select="$page"/>
<xsl:with-param name="items_count" select="$items_count"/>
<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 name="declension">
<xsl:param name="number" select="number"/>
<!-- Именительный падеж -->
<xsl:variable name="nominative">
<xsl:text>товар</xsl:text>
</xsl:variable>
<!-- Родительный падеж, единственное число -->
<xsl:variable name="genitive_singular">
<xsl:text>товара</xsl:text>
</xsl:variable>
<xsl:variable name="genitive_plural">
<xsl:text>товаров</xsl:text>
</xsl:variable>
<xsl:variable name="last_digit">
<xsl:value-of select="$number mod 10"/>
</xsl:variable>
<xsl:variable name="last_two_digits">
<xsl:value-of select="$number mod 100"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$last_digit = 1 and $last_two_digits != 11">
<xsl:value-of select="$nominative"/>
</xsl:when>
<xsl:when test="$last_digit = 2 and $last_two_digits != 12 or $last_digit = 3 and $last_two_digits != 13 or $last_digit = 4 and $last_two_digits != 14">
<xsl:value-of select="$genitive_singular"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$genitive_plural"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
PakoGonsalezZ,
стандартный поиск ищет по всем проиндексированным данным, вы можете на уровне XSl-шаблона отделять товары от статей, однако нужно понимать, что если найдется 123 элемента, а у вас на страницу по 10, то не факт, что на первую страницу будут выведены эти материалы.
стандартный поиск ищет по всем проиндексированным данным, вы можете на уровне XSl-шаблона отделять товары от статей, однако нужно понимать, что если найдется 123 элемента, а у вас на страницу по 10, то не факт, что на первую страницу будут выведены эти материалы.
Я сделал вывод без пагинации, например
Пишет что нашлось 17 товаров, выводит 7 по итогу
Пишет что нашлось 17 товаров, выводит 7 по итогу
PakoGonsalezZ,
Значит остальные 10 не товары. Включите вывод XML и посмотрите
Значит остальные 10 не товары. Включите вывод XML и посмотрите
Авторизация