Как подключить 404 страницу в 1С-Битрикс. Подключаем единый шаблон
В 1С-Битрикс на страницу с 404 ошибкой можно попасть только тогда, когда не найден физический раздел сайта, то есть папка. Если же вы не так указали адрес динамического раздела каталога, например, или карточки товара, то вы просто получите красные надписи "Раздел не найден" и "Элемент не найден".
Но что делать, если необходимо любой 404 ответ обрабатывать в едином стиле? На помощь нам приходят нехитрые инструкции, которыми мы и воспользуемся.
Все манипуляции мы будем совершать в файле init.php, который расположен по адресу /bitrix/php_interface/. Если по данному пути у вас нет такого файла, то придется его создать.
После чего нужно определиться, будет ли наша страница с ошибкой в стиле сайта, или она будет полностью иметь свой собственный стиль.
Начнем с первого варианта. Для этого откроем init.php и запишем туда следующий код:
AddEventHandler(
"main"
,
"OnEpilog"
,
"My404PageInSiteStyle"
);
function
My404PageInSiteStyle()
{
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'
;
}
}
Итак, что же делает код выше. Во первых, мы повесили обработчик на событие OnEpilog, то есть на тот момент, когда страница уже будет обработана и скомпонована. В нем мы указали название нашей функции My404PageInSiteStyle, которая будет отвечать за вывод текста 404 ошибки.
Далее мы переходим непосредственно к нашей функции. Что же там происходит. Сначала мы проверяем, была ли определена константа, которая указывает на то, что запрашиваемое содержимое не найдено - ERROR_404. Если такая константа имеется, то мы делаем следующее:
Затем прогружается вновь сформированная страница в стиле нашего сайта, в контентной части которой будет выведен текст из файла 404.php. Этот файл может лежать где угодно, называться как угодно. Но привычнее называть его именно так и хранить в корневой директории сайта.
В последнее время многие стали делать страницу с 404 ошибкой в собственном оформлении, не привязываясь к стилю сайта. Собственно, мой блог не исключение.
Зачем это делается? Если рассматривать этот аспект с точки зрения продвижения, то это делается для того, чтобы направить пользователя на нужные разделы или страницы, если он каким-то образом случайно попал на несуществующую страницу.
На такой странице оптимизаторы проставляют ссылки, чтобы человек не ушел, а продолжил посещение сайта.
Но также это делается, чтобы просто не нагружать посетителя ненужной информацией и не вводить в ступор. Порой бывает заходишь на сайт, кликаешь по интересующей ссылке и попадаешь на какую-то странную страницу. И вроде бы ты на сайте, вроде бы ошибок нет, но информацию ты никакую не получил. Вот и ищешь глазами, начинаешь смотреть, искать. И не находишь. Естественно желание вновь возвращаться на такой сайт резко пропадает.
Чтобы посетителю конкретно указать, что он попал на несуществующую страницу, ее и стараются выделить каким-то индивидуальным дизайном, чтобы "встряхнуть" посетителя и дать понять, что он забрел куда-то не туда.
Давайте немного модифицируем код выше, для того, чтобы у нас была возможность делать свои собственные страницы с 404 ошибкой не в стилях сайта.
AddEventHandler(
"main"
,
"OnEpilog"
,
"My404PageInMyOwnStyle"
);
function
My404PageInMyOwnStyle()
{
if
(defined(
'ERROR_404'
) && ERROR_404 ==
'Y'
)
{
global
$APPLICATION
;
$APPLICATION
->RestartBuffer();
include
$_SERVER
[
'DOCUMENT_ROOT'
].
'/404.php'
;
}
}
Как видите, все очень просто. Мы всего лишь убрали подключение header.php и footer.php, тем самым шаблон нашего сайта не будет грузиться. А загрузится только содержимое файла 404.php.
Когда мы определились с тем, как будет выглядеть наша страница 404 ошибки, необходимо ее подготовить.
Самое важное здесь - это установить статус 404 ошибки, иначе страница вам будет выдаваться с кодом ответа 200 ОК, что есть совсем нехорошо.
Вот та минимальная программная часть, которая должна быть указана в начале файле 404.php:
<?
require
$_SERVER
[
"DOCUMENT_ROOT"
].
"/bitrix/modules/main/include/prolog_before.php"
;
include_once
(
$_SERVER
[
'DOCUMENT_ROOT'
].
'/bitrix/modules/main/include/urlrewrite.php'
);
CHTTP::SetStatus(
"404 Not Found"
);
@define(
"ERROR_404"
,
"Y"
);
?>
Что тут происходит:
После этого вы можете уже верстать 404 страницу как вам угодно. Вот вам небольшая "рыба" заготовка:
<!DOCTYPE html>
<
html
>
<
head
>
<
meta
charset
=
"UTF-8"
>
<
title
>Страница не найдена</
title
>
<
link
rel
=
"shortcut icon"
href="<?=SITE_TEMPLATE_PATH?>/favicon.ico" />
<
style
type
=
"text/css"
>
.container{
width: 1170px;
margin: 0 auto;
}
</
style
>
</
head
>
<
body
>
<
div
class
=
"container"
>
<
img
src
=
"/images/404.jpg"
><
br
/>
<
p
>Ой ой ой! СТраница не найдена!</
p
>
</
div
>
</
body
>
</
html
>
Ну вот, теперь вы легко сможете создавать в 1С-Битрикс любые страницы 404 ошибки, какие только захотите.
Успехов вам!
| |
Комментарии (0)