jQuery Paginator 3000 +

jQuery Paginator 3000 + — это виджет постраничной навигации реализованный в виде плагина для jQuery .

Я хотел бы сразу оговорится, что бы мне не присуждали все заслуги от идеи и до реализации, что впервые данную идею предложил Максим Попов, как сообщает нам автор первой реализации данного виджета koraboz, так же путем логики и размышлений почти к тому же самому результату пришел и «гуру» юзабилити Ярослав Бирзул, о чем он поведал всем в своем блоге.

Ниже в таблице представленные все версии данного плагина когда либо выпущенные мною.

 ZIP  Имя файла  Размер  Дата выпуска Лицензия
paginator_3000_1_2.zip 43.9 КБ  8 июля 2011  GPL
paginator_3000_1_1.zip  41.8 КБ  7 августа 2010  GPL
paginator_3000_1_0.zip  10 января 2010  GPL

Давайте разберем основные параметры данного плагина, в самом плагине объект параметров объявлен следующим образом:

//set default options
var options = {
    pagesTotal   : 1,
    pagesSpan    : 10,
    pageCurrent  : 1,
    baseUrl      : document.location.href+'&page=%number%',
    buildCounter : buildCounter,
    pageScroll 	 : 3,
    clickHandler : null,
    eturnOrder   : false,
    lang         : {
        next  : "Следующая",
        last  : "Последняя",
        prior : "Предыдущая",
        first : "Первая",
        arrowRight : String.fromCharCode(8594),
        arrowLeft  : String.fromCharCode(8592)
    },
    events       :{
        keyboard: true,
        scroll: true
    }
};

И так теперь более подробно:

pagesTotal — целое число. Задает общее количество страниц которое будет отображено в пагинаторе.

pagesSpan — целое число. Количество отображаемых страниц.

pageCurrent — целое число. Номер текущей страницы.

baseUrl — строка. Шаблон ссылки для навигации, данный параметр должен обязательно содержать значение %number% которое символизирует номер текущей страницы (по умолчанию) и подставляется в шаблон при генерации ссылок как результат функции buildCounter.

buildCounter — функция. Функция расчета значения %number% для шаблона ссылки, по умолчанию значение равно:

function buildCounter(page){ return page; }

pageScroll -целое число. Значение сообщает плагину о количестве страниц перелистываемых за 1 такт скрола мыши.

clickHandler — функция. CallBack функция вызываемая при клике по ссылке.

returnOrder — логическое (true/false). Cообщает плагину какой порядок страниц необходимо использовать прямой — false, или обратный — true.

lang — объект локализации плагина.

events — объект логических значений сообщающих плагину о необходимости использования событий: скролла мыши — events.scroll, клавиатуры — events.keyboard (навигация при помощи сочетаний клавиш Ctrl+Left и Ctrl+Right).

Демо версия.

34 комментария

  1. @perture:

    Здравствуйте!

    Во первых, большое спасибо автору за данную реализацию пагинатора, с лёгкостью прикрутил его к Joomla в виде плагина.

    Ниже была описана проблема — «Я тоже заметил баг, если pagesTotal = 8 и pagesSpan = 5», предположительно связанная с вычислением percentFromLeft. По моим наблюдениям баг проявляется не только с обозначенными цифрами, но и с другими вариациями количества страниц. Подскажите, пожалуйста, как это исправить, если у Вас нет возможности выложить исправленную версию.

    • Radik:

      День добрый. К сожалению как исправить не знаю, не разбирался с проблемой т.к. нет времени. В любом случае, проект есть на github, если узнаете в чем разберетесь в чем проблема делайте pull request и внесем ваши изменения в проект. Спасибо.

  2. Aaron:

    Hello! This paginator is very amazing! Its the best and the most complet I have seen until now.

    But,… I’m trying use it, charging dates from mysql inside a but I cannot see the first one of every page! I lost the first in every page. Why? I woud like some one help me.

    Thanks!

  3. Oleg:

    Спасибо, очень удобная вещь. Если проект еще жив, подскажите пожалуйста.
    pageCurrent — это я прописываю номер активной страницы, как сделать отображение именно текущей страницы. Если пользователь зашел на страницу сайта page=30 или любую другую, то хотелось бы чтобы он видел номер текущей страницы, а не pageCurrent : 1, или я недопонял настройки?

    • Radik:

      Автоматического распознавания активной страницы плагин не имеет, но можно прикрутить самостоятельно при его инициализации, в случае если вам это необходимо.

  4. Андроид:

    Как его прикрутить к WP? С пагинатором 3000 все получилось почти без проблем, этот же ***нехорошее слово*** не появляется и все. Я уже голову сломал и попросту потерял на это надежду….

    • radik:

      Практически аналогичным образом, только не забудьте перед его подключением подключить jQuery на страницу.

  5. Andrey:

    Не появилось обновленной версии с правильным подсчетом страниц? Я тоже заметил баг, если pagesTotal = 8 и pagesSpan = 5

    • radik:

      Пока обновлений не выходило, на данный момент загружен работой и нет времени исправлять баги.

      • frvade:

        Я исправил ошибку для себя, там неправильно высчитывалось percentFromLeft. Если нужно — готов прислать

        • radik:

          Присылайте, и я выложу исправленный вариант у себя в блоге, что бы все могли пользоваться корректным вариантом плагина.

          • frvade:

            На тот e-mail, что указан в копирайте в плагине?

          • radik:

            Если честно, я не нашел ни в одном файле того что бы я указывал email в копирайте … ну это не суть вот можете отправить сюда novichkovsergey<

  6. Макс:

    Подскажите. А можно инструкцию как его на DLE 9.4 поставить?

    • radik:

      Конечно можно я думаю в этом ничего сложного нет, лично с DLE я не знаком но могу предположить что для того что бы его установить на DLE нужно подправить шаблон отвечающий за вывод пагинатора.

  7. Николай:

    С jQuery 1.7 косяк появился, если установить clickHandler, например:

    clickHandler:function(page){
    alert(page);
    }

    В результате показывает два алерта первый то что должно быть, а второй NAN.

    • radik:

      Данный плагин с jQuery 1.7 не тестировался. Но спасибо за сообщение об ошибке, в будущем релизе обязательно протестирую и исправлю все ошибки.

  8. Николай:

    Сделай что бы можно было добавить атрибут(ы) ссылкам, у меня например ссылки такого вида: link

    P.S пробовал clickHandler — но он работает не так как написано, он срабатывает при загрузки страницы, а не при клике на ссылки.

    • Николай:

      Ах, извиняюсь не так юзал функцию, но всё равно атрибут не помешает.

    • Николай:

      И ещё, сделай определение, если страница «Первая», то пусть ссылку делает неактивной, так же и с посл, пред, след.

      • Кирилл:

        Поддерживаю комментарий выше. Добавьте, пожалуйста, деактивацию текста «Первая», «Последняя», если выбрана первая или последняя страница
        Спасибо!

        • radik:

          Здравствуйте, учту ваше пожелание при переработке плагина … как раз думал на праздниках переделать его для новых версий jQuery.

  9. Вы бы выложили этот плагин в репозитарий WordPress, чтобы он мог нормально обновляться…

  10. Сергей:

    pagesTotal : 12,
    pagesSpan : 10,
    pageCurrent : 11,

    При таком раскладе 12 страница не показывается.

    • radik:

      Спасибо за информацию, обязательно исправлю эту ошибку в будущих версиях плагина.

      • Сергей:

        А нельзя ли бакфиксик выпустить? Просто я смотрю на промежутки между версиями и опасаюсь, что последняя страница еще не скоро покажется :)

        • radik:

          Конечно можно и даже нужно, постараюсь сделать это в ближайшее время, как только появится чуть чуть свободного времени.

        • m157y:

          Поскольку ответа от автора я так и не увидел, а боевые проекты начали переходить на jQuery 1.7.1, то наткнулся на данную проблему. Лечится крайне просто, откройте файл плагина, найдите:
          a[rel!=»»]
          и замените на:
          a[rel]
          В коде это найдется дважды.

  11. Bushido:

    Отличный плагин, но вот GPL-лицензия… Так что мимо меня…

    • radik:

      Что то я вас не совсем понял чем вам GPL лицензия не угодила?

      • damour:

        Наследование лицензии в случае модификации исходного кода, то есть модифицированный или объединенный с другим код в результате так же должен быть выпущен под лицензией GNU GPL, следовательно, быть доступным для модификации любым желающим.

  12. Elric:

    Your story was relaly informative, thanks!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *