Сообщение об ошибке 404 в основном дизайне сайта и релевантные подсказки 1.X

246
Потребовалось выводить сообщение об ошибке 404 в том же дизайне что и основной сайт, решений здесь не нашел.
Вариант с копированием html кода дизайна и вставкой его в шаблон страницы 404 отверг сразу так как каждый раз править ещё и этот файл не хочется и могу забыть.

Сделал следующее.

1. Создал статью с заголовком "Страница не найдена" и адресом page404.html

2. В тело статьи после какого то текста о причинах ошибки вставил набор символов #errtext буду использовать его позже в качестве шорткода или метки для автозамены на нужное содержимое

3. В файле шаблона error404.php всё содержимое заменил на код:

(дальнейшие пояснения в комментарии к php коду)





Код PHP:
  1. <?php
  2.  
  3. $errp = curl_init();
  4.  
  5. //если у вас вывод шаблона не зависит от USER AGENT эти две строки можно удалить
  6. $err_user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  7. curl_setopt($errp, CURLOPT_USERAGENT, $err_user_agent);
  8.  
  9. //укажите адрес страницы которую вы создали в админке
  10. curl_setopt($errp, CURLOPT_URL, 'http://site.ru/page404.html');
  11. curl_setopt($errp, CURLOPT_RETURNTRANSFER, 1);
  12. $result_errpage = curl_exec($errp);
  13. curl_close($errp);
  14.  
  15.  
  16. //посмотрим на какой странице возникла ошибка 404, и попробует это использовать
  17. $requeturl = strtolower($_SERVER["REQUEST_URI"]);
  18.  
  19. //на основании фрагмента url присваеваем категорию интересов, следующую строку можно продублировать несколько раз, заменив recept на варианту вхождения в урл и kulinaria на категорию к которой будет относиться урл с таким фрагментом
  20. if(stripos($requeturl,'recept') !== false) { $need = 'kulinaria';}
  21.  
  22. $message = '';
  23.  
  24. //на основании присовенной выше категории интересов, устанавливаем подсказку для пользователя, следующий блок можно продублировать заменив kulinaria на другую категорию и текст/ссылку подсказки
  25. if($need == 'kulinaria'){
  26. $message = '<p>Похоже что вы искали лучшие рецепты</p>';
  27. $message .= '<p>Раздел с рецептами теперь находится по ссылке: <a href="/recepty">Рецепты</a></p>';
  28. }
  29.  
  30. //меняет в статье сообщения об ошибке 404 оставленный там шорткод на релевантную подсказку сгенерированную выше
  31. $content = preg_replace('|#errtext|isU', $message,$result_errpage);
  32.  
  33.  
  34. //отправляем на печать
  35. echo $content;
  36.  
  37. ?>
Преобразование объявления в графическую файл карточку jpg формата
Комментарии (1)
Александр 13 августа 2017 в 15:18 0
small user social cms
отличное решение, порой очень нужное, попробуемс