Универсальная красивая постраничка на Битрикс

Достаточно часто сео-специалисты в своих рекомендациях хотят видеть красивую пагинацию вместо стандартного битриксового ?PAGEN_X=Y.

Честно говоря, не совсем понятно, почему это до сих пор не сделали "из коробки", но, как говорится - "маемо, шо маемо".

Данный пост о том, как сделать пагинацию красивой и ничего не сломать.

Итак, нам нужно привести нашу пагинацию к виду: /catalog/#SECTION_COD#/pageX/

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

Для этого нам нужно заменить все ссылки со старого формате PAGEN_1 на новый, статический.

Имейте ввиду, если у вас на странице несколько компонентов с включенной пагинацией - нужная может не быть PAGEN_1, а будет с другим порядковым номером.

Выложил для образца переделанный шаблон типовой round на гитхабе.

Подключаем данный шаблон и радуемся - у нас уже будут ссылки на страницы пагинации в нужном нам статическом формате.

Далее нужно настроить, чтобы система эти статические номера страниц научилась распознавать. Для этого, в htaccess прописываем разборку ЧПУ:

htaccess

Также создаем файл /bitrix/pagen.php такого содержания (если у вас формат нумерации странрицы отличается от моего - внесите правки в регулярное выражение):

function __isPathTraversalUri($uri)
{
    if (($pos = strpos($uri, '?')) !== false) {
        $uri = substr($uri, 0, $pos);
    }
    $uri = trim($uri);
    return preg_match("#(?:/|2f|^|\\\\|5c)(?:(?:%0*(25)*2e)|\\.){2,}(?:/|%0*(25)*2f|\\\\|%0*(25)*5c|$)#i", $uri) ? true : false;
}
$newUri = preg_replace('#(page[\d]+/)#is', '', $_SERVER['REQUEST_URI']);
if (!__isPathTraversalUri($newUri)) {
    $_SERVER['REQUEST_URI'] = $newUri;
}

Данный файл подключаем в htaccess с помощью директивы:

	RewriteEngine On
	RewriteRule ^(.*)/page([\d]+)/ /$1/?PAGEN_1=$2 [L,QSA]

Если настройки вашего сервера не поддерживают такое подключение - файл нужно проинклюдить перед подключением ядра на странице, где лежит компонент, использующий пагинацию:

include_once "../bitrix/pagen.php";
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

В результате функция $APPLICATION->GetCurPage(); не будет учитывать в текущем url-адресе ЧПУ-формат номера страницы.

Количество показов: 3240
02.05.2020

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

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