< Заур Магомедов />

профессиональный верстальщик и блоггер

Мое хобби - разработка сайтов, но со временем это переросло в постоянный и стабильный источник дохода.

Заур Магомедов
Главная » Joomla » Страница 404 в Joomla 3. Как создать страницу 404-ой ошибки средствами Joomla?

Страница 404 в Joomla 3. Как создать страницу 404-ой ошибки средствами Joomla?

Страница 404 в Joomla 3

Здравствуйте дорогие друзья! Давно не писал на блоге, были на то причины. В данной заметке поговорим о такой немаловажной детали для сайта, как страница 404-ой ошибки. Для тех, кто не знает, что такое страница 404-ой ошибки — это страница, которая показывается пользователю, если он перешел по несуществующему адресу или по адресу страницы, которая была удалена. Чтобы создать такую страницу ошибки можно воспользоваться специальными расширениями, например, компонентом Error 404. Но я не любитель сторонних расширений, если все можно сделать стандартными средствами. А в данном случае страничку 404 ошибки можно создать встроенными средствами joomla. Создавать страничку будем для joomla 2.5 — 3.0.

Итак, давайте сначала посмотрим как выглядит стандартная страница 404-ой ошибки.

Страница 404 в joomla - cтандартная страница 404 ошибки joomla

Я думаю все согласятся со мной, что выглядит не очень красиво. Лично по мне, так эта картинка выглядит как то агрессивно. А нужно наоборот — чтобы не отпугивала пользователя. Необходимо дать ему возможность перейти на другие страницы сайта. А еще лучше, оформить данную страницу немного с юмором. Посмотрите как оформили свою страничку 404 сайт телеканала ТНТ — http://tnt-online.ru/404. Обновите страничку несколько раз и вы увидите, что такие странички могут не только отталкивать, но и притягивать. Прикольно, да?

Теперь давайте поговорим о том, как подобное реализовать на сайте под управлением joomla. Конечно, разные странички 404 как у ТНТ я вам не обещаю, но нечто привлекательное можно сделать. Первым делом нам необходимо создать файл error.php и положить его в корень вашего шаблона. Путь до файла error.php будет иметь следующий вид — /templates/ ваш шаблон /error.php. Теперь о содержимом файла. Создаем данный файл любым текстовым редактором (я пользуюсь Sublime Text 3) и вставляем HTML-код верстки вашего шаблона из файла index.php. Далее необходимо причесать некоторые моменты, чтобы у нас выводились модуля в модульных позициях, т.к. код вывода модулей из файла index.php шаблона здесь работать не будет. Для этого в начало документа вставляем следующий код.

<?php 
defined('_JEXEC') or die; // Запрет на прямой доступ к файлу
jimport('joomla.application.module.helper'); // Подключение вывода модулей из ядра
// Get language and direction
$doc             = JFactory::getDocument();
$app             = JFactory::getApplication();
$this->language  = $doc->language;
$this->direction = $doc->direction;
?>

Добавим кодировку страницы UTF-8 и заголовок окна браузера между тегами <head></head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Ошибка <?php echo $this->error->getCode()." — "; echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');?></title>

Подключаем файлы стилей и скриптов (если того требует страница).

<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.css" />
<script src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/js/init.js"></script>

Теперь заменяем код вывода модулей

Читайте также:  Стильные хлебные крошки на сайте под управлением Joomla
<jdoc:include type="modules" name="module-position" />

на

<?php
$modules =JModuleHelper::getModules('module-position'); // Здесь вводим название модульной позиции
foreach ($modules as $module){
echo JModuleHelper::renderModule($module);
} ?>

Далее удаляем код вывода контента

<jdoc:include type="component" style="xhtml" />

а вместо него вставляем код ошибки

<div class="error-message-block"> 
     <h1>Ошибка <?php echo $this->error->getCode(); ?></h1>
     <p class="error-message"><?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');?></p>
     <div class="btn-block">
          <a class="btn btn-primary btn-large " href="/">Перейти на главную</a>
     </div> 
</div>

Вообще, код выше можете заменить на свой и оформить по своему, оставив только php-код вывода ошибки. Здесь уже ваш полет фантазии, а какая фантазия может быть я вам уже показал на примере сайта канала ТНТ.

В принципе, все. Можем проверять, введя несуществующий урл на сайте. Вот как это смотрится у меня на демо-сайте.

Фантазировать не стал, оформил по скромному. Самое главное данная страничка теперь отдает код заголовка 404.

Ошибка 404 страницы в консоле

Я решил переписать данную статью, т.к. я выводил страничку ошибки немного другим способом, также через файл error.php. Суть ее состояла в том, что в файл error.php вставлялся код, который при появлении ошибки перенаправлял пользователя на заранее созданную страницу 404. Прошлый способ содержал некоторые ошибки, в частности, страница ошибки не отдавала код заголовка — 404, а вместо нее выводился код — 200 Ок. Но по логике должно быть все же 404.

На этом все. Жду вопросы в комментариях.

Заур Магомедов
Заур Магомедов

Верстальщик с большим опытом работы. Занимаюсь созданием сайтов с 2009 года. Постоянно обучаюсь и совершенствую свои навыки. Веду свои проекты, в том числе и данный блог.

У меня вы можете:

Оцените пост:

1 балл2 балла3 балла4 балла5 баллов (11 оценок, среднее: 1,91 из 5)
Загрузка...

Проверка орфографии

Система Orphus

38 комментариев к статье "Страница 404 в Joomla 3. Как создать страницу 404-ой ошибки средствами Joomla?"

  • Игорь Авг 20, 2019 в 19:00

    А как выводить ошибки на 404 странице?

    • Заур Магомедов
      Заур Магомедов Авг 20, 2019 в 21:42

      Не совсем понял суть вопроса? Уточните пожалуйста.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Если вы хотите вставить в текст комментария код HTML, CSS, PHP, JavaScript, то обрамите код в соответствии необходимыми тегами:

  • Код HTML - тегами [html] ваш код... [/html]
  • Код CSS - тегами [css] ваш код... [/css]
  • Код PHP - тегами [php] ваш код... [/php]
  • Код JavaScript - тегами [code lang="js"] ваш код... [/code]