Страница 404 для Joomla 1.5!

Чтобы сделать собственную страницу 404 для сайта постороенного на Joomla 1.5 я поступил следующим образом.

Создал в корне папки шаблона файл «error.php» и вставил в него код из файла «/templates/system/error.php». Далее после строки «defined( ‘_JEXEC’ ) or die( ‘Restricted access’ );»

Написал такой код:

<?php
//***
if (intval($this->error->code) == 404) :
function get_REFERER()
{
     $host = 'http://'.$_SERVER['HTTP_HOST'];
     if ($_SERVER['HTTP_REFERER'] == false)
          return false;
     return str_replace($host, '', $_SERVER['HTTP_REFERER']);
}
?>

После закрытия php блока вставил собственно код шаблона:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title>
<link rel="shortcut icon" href="/templates/<?php echo $this->template ?>/images/favicon.ico" />
<link rel="stylesheet" href="/templates/<?php echo $this->template ?>/css/errors.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<div class="content-block">
<div class="massage-404">
<p>Ooooops. Такой страницы нет.</p>
<p>Ссылка по которой вы пришли либо устарела, либо вы неправильно набрали адрес. Попробуйте перейти по одной из следующих ссылок.</p>
<p>Извините за предоставленные неудобства.</p>
<ul>
<?php
if ( (get_REFERER() != false) and (get_REFERER() != $_SERVER['REQUEST_URI']) ) :
?>
<li><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Вы пришли отсюда</a></li>
<?php endif; ?>
<li><a href="/">Главная страница</a></li>
</ul>
</div>
<h1 class="error-code"><?php echo $this->error->code; ?></h1>
</div>
</body>
</head>

Затем вставляем вот это: <?php else : ?>,  дальше идёт код оригинального шаблона.

И в самом конце файла дописываем вот это : <?php endif; ?>

Вот и всё.

А теперь объясняю, что к чему.

  1. Файл «/templates/system/error.php» в Джумла – это шаблон отображения ошибок. Вот только каких я ещё не разобрался и по этому сделал условие. Чтобы для ошибки 404 отображался мой шаблон, а для остальных оригинальный. «if (intval($this->error->code) == 404) :» – это и есть то самое условие.
  2. Далее мы вставили функцию, которая будет возвращать очищенное от домена и http:// значение серверной переменной $_SERVER['HTTP_REFERER'] или, если её нет, false. Эта функция будет использоваться моим шаблоном для отображения ссылки «Вы пришли отсюда».
  3. Далее код самого шаблона. В нём ничего нового кроме, разве что, ссылки, о которой я говорил в пред-идущем пункте. Если посетитель пришел на  страницу 404 с какого то адреса, то нам нужно показывать эту ссылку, а если он неправильно набрал адрес, то значение $_SERVER['HTTP_REFERER'] будет пустым и, соответственно, эта ссылка привела бы его на эту же страницу 404. По этому мы написали в шаблоне следующее условие «if ( (get_REFERER() != false) and (get_REFERER() != $_SERVER['REQUEST_URI']) ) :». То есть, показывать ссылку, если значение $_SERVER['HTTP_REFERER'] не пустое и оно не соответствует текущей странице.
  4. Затем после своего шаблона мы вставили «<?php else : ?>», содержимое которого выполняется, если условие «if (intval($this->error->code) == 404) :» не верно. То есть показ оригинального шаблона ошибок. И в самом конце файла мы вставили код «<?php endif; ?>», который говорит интерпритатору о том, что это конец выше описанного условия.

И в качестве бонуса – видео про Интерактивное зеркало, о котором я узнал от господина Шакина

Post to Twitter Post to Facebook Post to Google Buzz Send Gmail

Эта запись была опубликована в рубрике Joomla!. Добавить в закладки ссылку.