Skip to content

Instantly share code, notes, and snippets.

@Isa3v
Last active February 2, 2024 14:22
Show Gist options
  • Save Isa3v/fe461020414c23fb7553ef6c0aed7099 to your computer and use it in GitHub Desktop.
Save Isa3v/fe461020414c23fb7553ef6c0aed7099 to your computer and use it in GitHub Desktop.
Пагинация в мета-тегах и h1 (Bitrix)

Пагинация в мета-тегах, h1 + canonical (Bitrix)

Задача:

*Добавить на страницах пагинации в title, description и h1 приписку с номером страницы

Решение:

*В bitrix/php_interface/init.php (если нет, то создаем) добавляем в конец функцию разбирающая мета-теги и собирающая обратно

Событие "OnEpilog" вызывается в конце визуальной части эпилога сайта. (После того как битрикс получит уже все данные страницы)

<?php
//Добавляем в конец init.php
AddEventHandler('main', 'OnEpilog', 'orPagenMeta');
function orPagenMeta() {
if ($page = preg_grep("/PAGEN_(.*)/i", array_keys($_REQUEST))) {
$page = intval($_REQUEST[reset($page)]);
// canonical
$GLOBALS['APPLICATION']->SetPageProperty('canonical',((!empty($_SERVER["HTTPS"])) ? "https://" : "http://") . $_SERVER['SERVER_NAME'].$GLOBALS['APPLICATION']->sDirPath ,true);
//h1
$GLOBALS['APPLICATION']->SetTitle($GLOBALS['APPLICATION']->GetTitle(false) . ' — Страница ' . $page;
//title
$title = $GLOBALS['APPLICATION']->GetProperty('title');
$GLOBALS['APPLICATION']->SetPageProperty('title', $title . ' — Страница ' . $page);
//description
$description = $GLOBALS['APPLICATION']->GetProperty('description');
$GLOBALS['APPLICATION']->SetPageProperty('description', $description . ' — Страница ' . $page);
}
}
@domosed1963
Copy link

Сработал вот такой код в init.php.
<? AddEventHandler("main", "OnEpilog", "valery_page_epilog"); function valery_page_epilog() { global $APPLICATION; //Проверка на 404 страницу $is_page_404 = false; if(defined("ERROR_404")==true) $is_page_404 = true; //Добавление тегов rel=canonical: начало if($is_page_404==false ) { $page_content = ob_get_contents(); if($page_content!=false && strpos($page_content, '<!-- has_stranation_pagen_1 -->')!==false) { //canonical на существующей странице $GLOBALS['APPLICATION']->SetPageProperty('canonical',(($_SERVER["HTTPS"] == "on") ? "https://" : "http://") . $_SERVER['SERVER_NAME'].$GLOBALS['APPLICATION']->GetCurPageParam("", array ("num", "sort", "view", "order", "back_url_admin", "clear_cache")) ,false); } elseif(strpos($page_content, '<!-- it_more_page_stranation -->')) //canonical на не существующей странице { $GLOBALS['APPLICATION']->SetPageProperty('canonical',(($_SERVER["HTTPS"] == "on") ? "https://" : "http://") . $_SERVER['SERVER_NAME'].$GLOBALS['APPLICATION']->GetCurPageParam("", array ("PAGEN_1", "num", "sort", "view", "order", "back_url_admin", "clear_cache")) ,false); } } } //Добавление тегов rel=canonical: конец ?>
Или 404 можно.
//404 на не существующей странице $GLOBALS['APPLICATION']->SetPageProperty('canonical',(($_SERVER["HTTPS"] == "on") ? "https://" : "http://") . $_SERVER['SERVER_NAME'].$GLOBALS['APPLICATION']->GetCurPageParam("", array ("num", "sort", "view", "order", "back_url_admin", "clear_cache")) ,false); } elseif(strpos($page_content, '<!-- it_more_page_stranation -->')) Bitrix\Iblock\Component\Tools::process404( 'Не найден', //Сообщение true, // Нужно ли определять 404-ю константу true, // Устанавливать ли статус true, // Показывать ли 404-ю страницу false // Ссылка на отличную от стандартной 404-ю ); } } //Добавление тегов rel=canonical: конец ?>

@violentino
Copy link

Пролистав over 200 страниц, я наткнулся на это хорошее решение. Благодарю вас от всей души.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment