web.smf
Создатель
- Регистрация
- 27 Ноя 2012
- Сообщения
- 10
- Реакции
- 6
Вы не посмотрели ссылки, поэтому не поняли вопрос. Я не спрашивал что разместить на этой странице. У меня есть прекрасная страница 404. Проблема в том, что если несуществующая страница находится в подпространстве компонента новостей (например, если он размещен по адресу /news/, а пользователь пытается попасть на несуществующую /news/abrakadabra), то пользователь видит не страницу ошибки 404.php, а список новостей, или надпись "Элемент не найден!", вот я и пытаюсь узнать, как добиться вывода содержимого 404.php в случае ошибок компонента новостей.
Я обычно делаю так:
1)В файле init.php добавляю обработчик:
Код:
AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);
function _Check404Error()
{
if (defined('ERROR_404') && ERROR_404=='Y' && !defined('ADMIN_SECTION'))
{
GLOBAL $APPLICATION;
$APPLICATION->RestartBuffer();
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.SITE_TEMPLATE_ID.'/header.php';
require $_SERVER['DOCUMENT_ROOT'].'/404.php';
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.SITE_TEMPLATE_ID.'/footer.php';
}
}
2) В файле 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("404 ошибка");
?>
Тело 404 страницы...
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>