Bitrix

Еще один вариант исполнения 404-й страницы в 1С-Битрикс

Рассмотрим еще один способ создания обработчика для показа 404-й страницы в компонентах.

1. Создаем страницу 404.php


<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');

CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");

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

$APPLICATION->SetTitle("Страница не найдена");?>

<div class="bx-404-container">
<h1>Страница не найдена>/h1>
<div class="bx-404-text-block">Неправильно набран адрес, <br>или такой страницы на сайте больше не существует.</div>
<div class="">Вернитесь на <a href="<?=SITE_DIR?>">главную</div>
</div>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

2. Добавляем обработчик события для проверки не 404-я ли ошибка сейчас

В файле /bitrix/php_interface/init.php добавляем такой код:


AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);
function _Check404Error(){
if (defined('ERROR_404') && ERROR_404 == 'Y') {
global $APPLICATION;
$APPLICATION->RestartBuffer();
include $_SERVER['DOCUMENT_ROOT'] . SITE_TEMPLATE_PATH . '/header.php';
include $_SERVER['DOCUMENT_ROOT'] . '/404.php';
include $_SERVER['DOCUMENT_ROOT'] . SITE_TEMPLATE_PATH . '/footer.php';
}
}

3. Пользуемся

Теперь мы можем в любом компоненте или шаблоне использовать такой код:


CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
return;

В результате выполнения данного кода будет показана страница 404.php и установлен статус 404.

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

пятнадцать + 12 =