Страница 404 ошибки в дизайне сайта

 
Посетитель
small user social cms
Сообщений: 71
Все привет!

Решил сделать страницу ошибки 404 в дизайне сайта.
Да еще и чтобы текст можно было контролировать через админку.

Везде для вывода 404 ошибки используется функция error404().
Лежит она в /system/core/core.php.

Шаблон страницы в изначальном варианте загружается строкой:
Код PHP:
  1. cmsTemplate::getInstance()->renderAsset('errors/notfound');
Ну а нам нужно сгенерировать шаблон.
Взял по примеру генерации страницы контента. Использовал системные функции.

Итог:

Код PHP:
  1. $content_model = cmsCore::getModel('content');
  2. $item = $content_model->getContentItem('pages', 14); //14 - id конкретной страницы в админке
  3. $ctype = $content_model->getContentTypeByName('pages');
  4. $fields = $content_model->getContentFields('pages');
  5.  
  6. cmsTemplate::getInstance()->render('item_view', array(
  7. 'ctype' => $ctype,
  8. 'fields' => $fields,
  9. 'props' => isset($props) ? $props : false,
  10. 'props_values' => isset($props_values) ? $props_values : false,
  11. 'item' => $item,
  12. 'is_moderator' => 0,
  13. 'user' => 0
  14. ));

Но че-то не работает этот итог...

Кто может помочь?
Редактировалось: 2 раз (Последний: 16 августа 2014 в 16:48)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2603
по моему проще вставить в файл 404error одну строчку
Код PHP:
  1. <meta http-equiv="Refresh" content="1; URL=/ваша страница ошибки">
Редактировалось: 1 раз (Последний: 16 августа 2014 в 17:58)
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2603
наверно лучше <meta http-equiv="Refresh" content="0; URL=/ваша страница ошибки">
что бы сразу. у меня стоит 2 секунды в течении которых пользователь все таки видит страницу error.php на ней уведомление что страница не найдена поэтому сейчас вы будете перемещены в нужный мне раздел. А так если свою страницу в дизайне делать логичнее сразу редирект и там уже оформлять
Посетитель
small user social cms
Сообщений: 71
В этом случае сначала посетителю грузится стандартная страница ошибки без дизайна.
Через секунду идет редирект. За эту секунду посетитель может уйти.
Да и загрузка дополнительной страницы.

Не очень элегантное решение.
Посетитель
small user social cms
Сообщений: 71
С нулем лучше :)
Но проблема загрузки доп страницы остается.

И на серче говорят, что роботы поисковые не любят такие манипуляции.
Редактировалось: 2 раз (Последний: 16 августа 2014 в 18:24)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Антон:
роботы поисковые не любят такие манипуляции.
они (роботы) и 404 не очень то любят - считаю что такой подход для данной страницы вполне оправдан)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2603
Антон:
И на серче говорят, что роботы поисковые не любят такие манипуляции.
ну понятно что роботы не любят, но во первых вы же не на какой то левый сайт с вирусами редирект устраиваете, а на свой же, технические моменты, бывает) ну и я думаю это не так массово у вас. Какой то незначительный процент будет попадать на этот редирект. Так что проблем вызвать не должно)
Редактировалось: 1 раз (Последний: 16 августа 2014 в 18:42)
Посетитель
small user social cms
Сообщений: 71
Но все-таки дотошный я...
Сделал пока просто Аякс подгрузка шапки сайта в стандартный файл страницы 404. Так хоть страница не перегружается лишний раз.
Если найду решение через двиг сделать, напишу.

Тему не закрываю, можт кто решение предложит.
Редактировалось: 2 раз (Последний: 18 августа 2014 в 18:14)
Посетитель
small user social cms
Медаль
Сообщений: 865
Антон, все проще, опишу чтобы всем понятно было:
/templates/{ваш шаблон}/assets/errors/notfound.tpl
перед:
Код PHP:
  1. </body>
вставляем
Код PHP:
  1. <?php echo file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/news/9-rossijane-stali-pervymi-na-chempionate-mira.html');?>
создаем свою страницу с информацией об ошибке и рисуем на нее ссылку
Посетитель
small user social cms
Сообщений: 71
Хм не работает эта функция у меня scratch
Посетитель
small user social cms
Медаль
Сообщений: 865
Антон, Безобразие!!! это чистый PHP. Предлагаю ознакомиться с функцией file_get_contents, там все просто. Попробуй подставить прямую ссылку на любую страницу (хоть стороннего сайта), без всяких $_SERVER
Посетитель
small user social cms
Медаль
Сообщений: 865
Посоветую обращать внимание чтобы теги <?PHP ?> не были внутри тегов PHP
Посетитель
small user social cms
Сообщений: 71
Да я в курсе, что это чистый php sad Уже погуглил
Предполагаю, что с настройками сервера что-то не так.
Покопаю на днях.
Посетитель
small user social cms
Медаль
Сообщений: 865
Антон,
Попробуй
Посетитель
small user social cms
Медаль
Сообщений: 865
Антон:
Да я в курсе, что это чистый php
Да я привык уже жувать. Заметил на форуме твой виджет. ;)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.