Продвинутый постраничный бар

Зависимости

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

            IncludeCom("dev/paginator", array(
                // Константа M_PAGINATOR_PAGE будет заменена на номер страницы.
                "pageUrl"      => SiteRoot("example&page;=" . M_PAGINATOR_PAGE), // Ссылка на любую страницу списка. 
                "firstPageUrl" => SiteRoot("example"),                           // Ссылка на первую страницу списка
                "total"        => 60,             // Общее количество элементов списка
                "perPage"      => 6,              // Число элементов списка, отображаемое на одной странице
                "curPage"      => Get("page", 1)  // Текущая страница
            ));
        

Другой более гибкий пример, не привязанный к имени компонента/страницы:

            IncludeCom("dev/paginator", array(
                "pageUrl"      => GetCurUrl("page=" . M_PAGINATOR_PAGE), // Ссылка на нужную страницу списка через GetCurUrl()
                "firstPageUrl" => GetCurUrl("page=" . M_DELETE_PARAM),   // Ссылка на первую страницу списка через GetCurUrl()
                "total"        => 60,
                "perPage"      => 6,
                "curPage"      => Get("page", 1)
            ));
        
Как мы видим главное отличие здесь в том, что вместо функции SiteRoot() мы используем GetCurUrl(). При этом константы M_PAGINATOR_PAGE и M_DELETE_PARAM легко позволяют нам подставлять номера страниц в url и удалять параметр номера страницы из искомого url.

Задание своего шаблона

Важное отличие компонента в том, что он позволяет задавать разные шаблоны для постраничного бара.
В общем случае нам достаточно модифицировать файл-шаблон tpl/dev/paginator.php. Но мы так же можем создать по его образцу другой файл, например tpl/dev/def_paginator.php, имеющий нужный нам стиль.
Теперь, чтобы использовать этот шаблон, нам нужно добавить в вызов компонента еще один параметр "template":

            IncludeCom("dev/paginator", array(
                "pageUrl"      => GetCurUrl('page=' . M_PAGINATOR_PAGE), // Ссылка на нужную страницу списка через GetCurUrl()
                "firstPageUrl" => GetCurUrl('page=' . M_DELETE_PARAM),   // Ссылка на первую страницу списка через GetCurUrl()
                "total"        => 60,
                "perPage"      => 6,
                "curPage"      => Get("page", 1)
                "template"     => "dev/def_paginator" // Другой шаблон отображения
            ));