Плагин пагинации для modxsmarty

Пару слов зачем это нужно. getPage — не делает пагинацию с прострелами. pageNav — работает только со сниппетами.

Использование

В папку core/components/modxsmarty/smarty_plugins/ бросаем файл function.pagination.php

Создаем файл с оформлением пагинации catalog/list/pagination/index.tpl

{pagination items=$items current=$current_page prev_next=true assign=pagination}   

<div class="pagination">
{assign var=prev value=1}

{if $pagination.prev.id}
<a href="{$pagination.prev.href}">предыдущая</a>
{/if}

{foreach from=$pagination.pages item=page name=pagination}                 
    {if (($page.id-$prev) > 1)}
    <span>...</span>
    {/if}
    {if $page.type == 'current'}
    <span class="current">{$page.id}</span>
    {else}
    <a href="{$page.href}">{$page.id}</a>
    {/if}
{assign var=prev value=$page.id}    
{/foreach} 

{if $pagination.next.id}
<a href="{$pagination.next.href}">следующая</a>
{/if}
 
</div>

В шаблоне где нужно вывести пагинацию пишем (Вместо 93 подставить количество элементов в выборке)

{assign var=items value=93}
{assign var=current_page value=$smarty.request.page|default:1}
{include file="catalog/list/pagination/index.tpl"}

В результате получим такую картинку ?

Comments

Сергей, спасибо за полезный плагин! Буквально вот такой только момент: github.com/Husband/paging/blob/master/function.pagination.php#L13 Мне кажется не стоит объявлять функцию setDefaultProperties. Во-первых, слишком общее название, и может эта функция будет в каком-нибудь другом плагине, и все, дефолтовые значения будут другие. Во-вторых, у тебя же там просто мерж, то есть там нет вариантов для нотисов и т.п. Там вполне можно обойтись без лишней функции.

Да, хорошо! Одно плохо поисковики ругаются на одинаковое содержание полей title,description,keywords. И фиксируют их как дубли с понижением рейтинга. И как я понял способа бороься с этим не существует. Если кто не согласен конкретно — опровегните ):

  1. Спасает мета-тег canonical. Поставьте сниппет MetaX и не заморачивайтесь.
  2. Запретите в robots.txt индексацию страниц с параметрами. Disallow: *?*

А что мешает при генерации страницы учитывать $smarty.get.page? Например, первое, что приходит в голову —

<h1>{$modx->resource->pagetitle}{if $smarty.get.page}, страница {$smarty.get.page}{/if}</h1>

или можно и дальше пойти — менять ВСЕ, вплоть до контента. Просто создать MIGX-переменную, и нужные поля брать оттуда. Я так делал на одном сайте

Николай! скажите, куда будет попадать пользователь, после того как нажмет на, скажем, на 6-ю страницу пагинации Александр! В evo есть способ через применение системной переменной номера страницы пагинации. Я в revo. Вот эта резервная переменная она какое значение принимает для разных страниц пагинации??

скажите, куда будет попадать пользователь, после того как нажмет на, скажем, на 6-ю страницу пагинации

На 6-ую страницу.

Вообще говря решается просто — надо ввести в поле этих тегов системную переменную, которая была бы оригинальной для каждой страницы пагинации. Я просто не могу даже найти список этих переменных для modx revo/ Черт возьми элементарная вешь но в инете нет.

Черт возьми элементарная вешь но в инете нет.

Может потому что вы ищете то, чего в принципе не должно быть? Если бы нужно было бы, она давно нужна была бы уже. Я вам давно уже написал:

1. Спасает мета-тег canonical. Поставьте сниппет MetaX и не заморачивайтесь.

Нафига вы голову греете себе и другим? Что за любовь к извращениям?

Вот эта резервная переменная она какое значение принимает для разных страниц пагинации??

Это переменная smarty, в которую кладутся get-параметры запроса. Если задаете вопрос в этом топике, то я предполагаю, используете smarty. Если все-таки нет (?!), то можно написать сниппет, который будет анализировать $_GET['page'] и соответственно что-то выводить.

Уважаемый Александр! Мне подходит Ваш совет о применении Smarty. Я ознакомился, что это такое. Но мне непонятно Ваше конкретное его применение. Ведь боты ругаются на поля заголовка, описания и ключей. Надо только изменить эти теги. Может быть Вы подскажите как конкретно вставить туда smarty?

В принципе, я все уже выше написал: http://modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/268.html#comment-7205 Даже не представляю, что может быть более конкретным. А переписывать сюда руководство по smarty — извиняюсь, но времени катастрофически не хватает. тут http://www.smarty.net/docsv2/ru/ все более чем подробно описано.