Редирект с несуществующих страниц пагинации
Пример как быстро сделать редирект со страниц вида /?PAGEN_1=999 на последнюю страницу пагинации.
Делается это в шаблоне компонента, в котором есть навигационная цепочка. Например catalog.section.
В result_modifier.php добавляем код:
$cp = $this->__component; // объект компонента if (is_object($cp)) { $arResult['NAV_PAGEN'] = [ 'GET' => $arResult["NAV_RESULT"]->PAGEN, // запрашиваемая страница 'NUM' => $arResult["NAV_RESULT"]->NavNum, // номер пагинации PAGEN_ 'CNT' => $arResult["NAV_RESULT"]->NavPageCount // возможное кол-во страниц ]; $cp->SetResultCacheKeys(array('NAV_PAGEN')); }
В component_epilog.php добавляем код:
if ($arResult['NAV_PAGEN']['GET'] > $arResult['NAV_PAGEN']['CNT']) { LocalRedirect($APPLICATION->GetCurPage(false).'?PAGEN_'.$arResult['NAV_PAGEN']['NUM'].'='.$arResult['NAV_PAGEN']['CNT'], false, '301 Moved Permanently'); }
Всё. После этого будет срабатывать редирект с PAGEN_1=9999 на PAGEN_1=23 (последнюю). Если нужен редирект на первую страницу, то просто укажите в редиректе $APPLICATION->GetCurPage(false), без параметра PAGEN.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.