16 нояб. 2013 г., 14:02

Плагин пагинации для 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"}
В результате получим такую картинку ?
Сергей, спасибо! То, что надо!
Сергей, спасибо за полезный плагин! Буквально вот такой только момент: 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/ все более чем подробно описано.
Все нормально! Спасибо.

Добавить комментарий