Я делаю так. В /bitrix/php_interface/init.php:
[CODE]// 404 страница для случая, когда раздел/элемент не найден
AddEventHandler('main', 'OnEpilog', '_Check404Error');
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';
}
}
[/CODE]
В bitrix marketplace есть готовое решение на том же принципе, но я его не смог сейчас найти.
[CODE]// 404 страница для случая, когда раздел/элемент не найден
AddEventHandler('main', 'OnEpilog', '_Check404Error');
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';
}
}
[/CODE]
В bitrix marketplace есть готовое решение на том же принципе, но я его не смог сейчас найти.