перемести в init сайт не открывается выдает ошибку Parse error: syntax error, unexpected 'ShowCanonical' (T_STRING), expecting '(' in /home/sordon/sordon.nichost.ru/docs/bitrix/php_interface/init.php on line 168
пока что убрал это из init
кстати в этом же файле нашел эти строки 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'; }
function cartUpdate($itemId, $quantity) { $arItem = getItemById($itemId); if ( $arItem && isset($_SESSION["CART"][$itemId]) ) { $_SESSION["CART"][$itemId] = $quantity; } }
function cartDelete($itemId) {
if ( isset($_SESSION["CART"][$itemId]) ) { unset($_SESSION["CART"][$itemId]);
} foreach ($_SESSION["CART"] as $key=>$value){ if ($key=''){ unset($_SESSION["CART"][$key]); }
}
}
function cartClear() { $_SESSION["CART"] = array(); }
function getCartList() { if ( is_array($_SESSION["CART"]) ) { return $_SESSION["CART"]; } else { return array(); } }
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'; }
когда код который ниже, вставил в init.php сайт перестал открываться выдавая ошибку T_STRING. это 166 строка
<?php if(!function_exists('ShowCanonical')) function ShowCanonical()
{ global $APPLICATION; if ($APPLICATION->GetProperty("canonical")!="" && $APPLICATION->GetProperty("canonical")!=$APPLICATION->sDirPath){ return '<link rel="canonical" href="www.sordon.ru'.$APPLICATION->GetProperty("canonical").'/" />'; } else {return false;} } $APPLICATION->AddBufferContent('ShowCanonical'); ?>
блин да чтож это такое... теперь вылезла - Parse error: syntax error, unexpected 'if' (T_IF) in /home/sordon/sordon.nichost.ru/docs/bitrix/php_interface/init.php on line 165 оставил вот так: ... ... 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'; }
php if(!function_exists('ShowCanonical')) function ShowCanonical() { global $APPLICATION; if ($APPLICATION->GetProperty("canonical")!="" && $APPLICATION->GetProperty("canonical")!=$APPLICATION->sDirPath){ return '<link rel="canonical" href="www.sordon.ru'.$APPLICATION->GetProperty("canonical").'/" />'; } else {return false;} } $APPLICATION->AddBufferContent('ShowCanonical');
?> если убрать еще php то Parse error: syntax error, unexpected 'ShowCanonical' (T_STRING), expecting '(' in /home/sordon/sordon.nichost.ru/docs/bitrix/php_interface/init.php on line 165
удалил обе функции, теперь при переходу на http://www.sordon.ru/asd, переходит на страницу 404.php но код все равно выдает : HTTP/1.1 200 OK Server: nginx/1.10.1 Date: Mon, 24 Jul 2017 07:58:46 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: PHP/5.6.30
Виталий Свиридов, так. Во-первых, для оформления кода используйте соответствующие возможности формы битрикса, иначе очень сложно читать Ваш код. Во-вторых, перед footer.php вставьте следующий код:
Код
CHTTP::SetStatus("404 Not Found");
И в третьих, если уж выводите 404 страницу так, то хотя бы завершайте выполнение скрипта ПОСЛЕ подключения footer.php ( хотя бы через die(); или через exit(); )
И после всех этих действий - перед вызовом footer.php сделайте вывод константы ERROR_404