Праздничное настроение с HostCMS!
Дарим скидки до 20% при приобретении лицензий
и скидки на продление периода поддержки*

Выдано 119409 лицензий

Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации

Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.
Может кто подскажет, как можно сделать в пагинации чтобы ссылка на последнюю страницу отображалась числом.
Пример № 6 на странице https://s-sd.ru/files/pagination/index.html
У меня пока код такой:
<!-- Последний пункт нумерации страниц -->
<xsl:if test="$i+1 &gt;= ($page + $post_count_page + 1) and $n &gt; ($page + 1 + $post_count_page)">
<li class="page-item">
<a href="{$group_link}page-{$n}/{$tag_path}{$shop_producer_path}{$filter}{$on_page}" class="page-link" title="На последнюю">
<i class="fa fa-angle-double-right fa-lg" aria-hidden="true"></i>
</a></li></xsl:if></xsl:if>

ПрофильЦитировать выделенное06.06.2018 21:02:27 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Seri
Dmitry K.,
Попробуйте так:
<xsl:variable name="count_pages" select="ceiling(total div limit)"/>
<xsl:value-of select="$count_pages"/>

E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / г. Москва

ПрофильЦитировать выделенное07.06.2018 18:15:30 • Сообщений: 580
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.
Спасибо, всё распрекрасно работает!

ПрофильЦитировать выделенное07.06.2018 19:00:16 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.
В целом получилось неплохо, но не работают почему-то кнопки: «На предыдущую» и «На следующую».
<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 &gt; 0"><xsl:value-of select="$page - $pre_count_page" /></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>

<xsl:if test="$i = $start_page and $page != 0">
<li class="page-item">
<a class="page-link" title="На предыдущую" href="#">
<i class="fa fa-angle-left fa-lg"></i></a></li></xsl:if>

<xsl:if test="$i = ($page + $post_count_page + 1) and $n != ($page+1)">
<li class="page-item">
<a class="page-link" title="На следующую" href="#">
<i class="fa fa-angle-right fa-lg"></i></a></li></xsl:if>
   
<!-- Строка фильтра -->
<xsl:variable name="filter"><xsl:if test="/shop/filter/node()">?filter=1&amp;sorting=<xsl:value-of select="/shop/sorting" />&amp;price_from=<xsl:value-of select="/shop/price_from" />&amp;price_to=<xsl:value-of select="/shop/price_to" /><xsl:for-each select="/shop/*"><xsl:if test="starts-with(name(), 'property_')">&amp;<xsl:value-of select="name()" />[]=<xsl:value-of select="." /></xsl:if></xsl:for-each></xsl:if></xsl:variable>

<xsl:variable name="on_page"><xsl:if test="/shop/on_page/node() and /shop/on_page > 0"><xsl:choose><xsl:when test="/shop/filter/node()">&amp;</xsl:when>
<xsl:otherwise>?</xsl:otherwise></xsl:choose>on_page=<xsl:value-of select="/shop/on_page" /></xsl:if></xsl:variable>

<xsl:if test="$items_count &gt; $limit and ($page + $post_count_page + 1) &gt; $i">
<!-- Магазин в переменном ID $group текущей группы -->
<xsl:variable name="group" select="/shop/group" />

<!-- Путь тега -->
<xsl:variable name="tag_path"><xsl:if test="count(/shop/tag) != 0">tag/<xsl:value-of select="/shop/tag/urlencode" />/</xsl:if></xsl:variable>

<!-- Сравните путь продукта -->
<xsl:variable name="shop_producer_path"><xsl:if test="count(/shop/shop_producer)">producer-<xsl:value-of select="/shop/shop_producer/@id" />/</xsl:if></xsl:variable>

<!-- Выбор пути группы -->
<xsl:variable name="group_link"><xsl:choose><xsl:when test="$group != 0"><xsl:value-of select="/shop//shop_group[@id=$group]/url" /></xsl:when><xsl:otherwise><xsl:value-of select="/shop/url" /></xsl:otherwise></xsl:choose></xsl:variable>

<!-- Переменная $link набора -->
<xsl:variable name="number_link"><xsl:if test="$i != 0">page-<xsl:value-of select="$i + 1" />/</xsl:if></xsl:variable>

<!-- Первый пункт нумерации страниц -->
<xsl:if test="$page - $pre_count_page &gt; 0 and $i = $start_page">
<li class="page-item">
<a href="{$group_link}{$tag_path}{$shop_producer_path}{$filter}{$on_page}" class="page-link" title="На первую">1</a></li>
<li class="page-item disabled"><span class="page-link">...</span></li></xsl:if>

<!-- Пункт нумерации страниц -->
<xsl:if test="$i != $page"><xsl:if test="($page - $pre_count_page) &lt;= $i and $i &lt; $n">
<li class="page-item">
<a href="{$group_link}{$number_link}{$tag_path}{$shop_producer_path}{$filter}{$on_page}" class="page-link">
<xsl:value-of select="$i + 1" /></a>
</li></xsl:if>

<!-- Последний пункт нумерации страниц -->
<xsl:if test="$i+1 &gt;= ($page + $post_count_page + 1) and $n &gt; ($page + 1 + $post_count_page)">
<li class="page-item disabled"><span class="page-link">...</span></li>
<li class="page-item">
<a href="{$group_link}page-{$n}/{$tag_path}{$shop_producer_path}{$filter}{$on_page}" class="page-link" title="На последнюю">
<xsl:variable name="count_pages" select="ceiling(total div limit)" />
<xsl:value-of select="$count_pages" />
</a></li></xsl:if></xsl:if>
   
<!-- Ctrl+left ссылка -->
<xsl:if test="$page != 0 and $i = $page"><xsl:variable name="prev_number_link">
<xsl:if test="$page &gt; 1">page-<xsl:value-of select="$i" />/</xsl:if></xsl:variable>
<a href="{$group_link}{$prev_number_link}{$tag_path}{$shop_producer_path}{$filter}{$on_page}" id="id_prev"></a></xsl:if>

<!-- Ctrl+right ссылка -->
<xsl:if test="($n - 1) > $page and $i = $page">
<a href="{$group_link}page-{$page+2}/{$tag_path}{$shop_producer_path}{$filter}{$on_page}" id="id_next"></a></xsl:if>

<!-- Текущий пункт нумерации страниц -->
<xsl:if test="$i = $page"><li class="page-item active">
<span class="page-link"><xsl:value-of select="$i+1" /><span class="sr-only">(current)</span></span></li></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>

ПрофильЦитировать выделенное07.06.2018 19:23:46 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.

ПрофильЦитировать выделенное07.06.2018 19:24:54 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Seri
Dmitry K. писал(а):
не работают почему-то кнопки: «На предыдущую» и «На следующую».

А на них у вас ничего не прописано в href="#", переходы ссылки. Посмотрите Ваш код:

Dmitry K. писал(а):
<xsl:if test="$i = $start_page and $page != 0">
<li class="page-item">
<a class="page-link" title="На предыдущую" href="#">
<i class="fa fa-angle-left fa-lg"></i></a></li></xsl:if>
<xsl:if test="$i = ($page + $post_count_page + 1) and $n != ($page+1)">
<li class="page-item">
<a class="page-link" title="На следующую" href="#">
<i class="fa fa-angle-right fa-lg"></i></a></li></xsl:if>
E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / г. Москва

ПрофильЦитировать выделенное07.06.2018 23:36:22 • Сообщений: 580
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.
Можете мне помочь?
А то у меня что-то не получается.
Я и так делал:
<xsl:if test="$page != 0 and $i = $page"><xsl:variable name="prev_number_link">
<xsl:choose>
<xsl:when test="$page &gt; 1">page-<xsl:value-of select="$i"/>/</xsl:when><xsl:otherwise></xsl:otherwise></xsl:choose></xsl:variable>
<a href="{$group_link}{$prev_number_link}{$tag_path}" id="id_prev"></a>
</xsl:if>   

<xsl:if test="($n - 1) > $page and $i = $page">
<a href="{$group_link}page-{$page+2}/{$tag_path}" id="id_next"></a>
</xsl:if>

… и по-другому…
<xsl:if test="$page != 0 and $i = $page"><xsl:variable name="prev_number_link">
<xsl:if test="$page &gt; 1">page-<xsl:value-of select="$i" />/</xsl:if></xsl:variable>
<a href="{$group_link}{$prev_number_link}{$tag_path}{$shop_producer_path}{$filter}{$on_page}" id="id_prev"></a></xsl:if>
   
<xsl:if test="($n - 1) > $page and $i = $page">
<a href="{$group_link}page-{$page+2}/{$tag_path}{$shop_producer_path}{$filter}{$on_page}" id="id_next"></a></xsl:if>

Выдаёт ошибки:
error 1: unregistered variable group_link,
error 1: unregistered variable tag_path
Я не пойму – в чём дело? Ничего не работает…

ПрофильЦитировать выделенное08.06.2018 07:18:42 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Seri
Dmitry K. писал(а):
unregistered variable

Dmitry K. писал(а):
Я не пойму – в чём дело?

Это означает что в XSL не видно этих переменных. Либо эти переменные объявлены в другом xsl:template либо в других условиях что не доступны для использование.
Dmitry K. писал(а):
Можете мне помочь?

Если договоримся то да.
E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / г. Москва

ПрофильЦитировать выделенное08.06.2018 11:28:34 • Сообщений: 580
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Dmitry K.
Да, а как договариваться?
https://www.mebelib.ru/plintusa/page-8/?on_page=9

ПрофильЦитировать выделенное08.06.2018 13:13:45 • Сообщений: 100
Re: Разбиение на страницы – вывод числа в навигации на последнюю страницу пагинации
#
Seri
Dmitry K. писал(а):
а как договариваться?

Для этого есть контактные данные в подписи. Так как есть необходимость посмотреть полную реализацию в XSL и оценить адекватно.
E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / г. Москва

ПрофильЦитировать выделенное08.06.2018 16:31:21 • Сообщений: 580
Авторизация