Загрузка

Загрузка

Pomitkin'S Name

:: ::

29.03.2018

Как сделать отдельную страницу 404 с правильным кодом ответа на DataLife Engine

Как сделать отдельную страницу 404 с правильным кодом ответа на DataLife Engine


Многие спрашивают как сделать страницу, а точнее заменить пайковые длешные сообщения "Такой страницы не найдено и етс" на отдельную страницу ошибки 404

DataLife Engine отличная движка для блога, и не только, так – как эту CMS можно использовать для любых целей, но как всегда есть некоторые НО которые не нравятся многим.
К этому многие и относят страницу 404, их атрибуты лохматых годов наподобие: script language и еще множество чего, но так как речь идет о странице ошибки, то и говорить мы будем о ней.

Ради интереса загуглив по тексту выше я нашел множество решений, но самые близкие к истине заключались в том, что бы под заголовок ответа вставить редирект на нужную страницу.
Да, такая конструкция будет работать, НО отдавать она будет не ошибку 404, а 301 – й редирект, то есть станица переехала на новый адрес.
Это в корне не правильно, хотя бы с точки зрения SEO и сейчас я вам покажу простое и на мой взгляд верное решение.

— Потребуется создать в /templates/ваш шаблон файл error.tpl и внести в него содержимое, например:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
 <title>Error code 404</title>
</head>
<body style="text-align: center">
<h1>Not Found</h1>
<hr>
<h3>Code 404</h3>
</body>
</html>


— Потребуется внести правки в 4 файла, все они находятся в /engine/modules/:

main.php
profile.php
show.full.php
static.php

Найти:

 @header( "HTTP/1.0 404 Not Found" ); 


Закомментировать, либо заменить вывод сообщений и вставить ниже следующий код:

@header( "HTTP/1.0 404 Not Found" ); // Заголовок ответа
// $lang['static_page_err'] = str_replace ("{page}", $name.".html", $lang['static_page_err']);
// msgbox( $lang['all_err_1'], $lang['static_page_err'] );
$tpl->load_template('error.tpl'); // Подгружает error.tpl
$tpl->set('{THEME}', $config['http_home_url'].'templates/'.$config['skin']); // Путь к шаблону
$tpl->set('{charset}', $config['charset']); // Кодировка
$tpl->compile('main'); // Собирает
echo $tpl->result['main']; // Выводит
die(); // End


Это минимальный код и правка для вывода отдельной страницы, но вы можете дополнить как вам это нужно. Все зависит от вашей бурной фантазии)
Если что либо не понятно из написанного, пишите, по возможности помогу

Мнение.
Ваши мысли

Выскажите свое мнение, поделитесь мыслями о написанном

  1. Сергей Дата: мар, 30, 2018
    Спасибо за понятную инструкцию. А не подскажете как вывести в ней текущую дату.
    В гугле спрашивал, на php.su есть инфа как это сделать но ни чего не работает
  2. Pomitkin Дата: мар, 30, 2018
    Сергей, Вы можете вывести дату через include, либо замените 8 строчку кода на:

    eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

    Не проверял, но работать должно
captcha

Subscribe

Подписка на новости