[EVO] 404 в модальном окне

Друзья, прошу помощи, объясните верстальщику как 404ую вызывать в модальном окне? Ввел я к примеру несуществующий url, а в ответ поверх текущего окна появилось модальное с 404.

Очень надеюсь на помощь, ибо я в бэкенде как буратино))
Спасибо

10 комментариев

avatar
Может быть через iframe?

Но, насколько мне известно, 404-ю лучше делать отдельной страницей, т.к. у поисковиков это больше приветствуется )
avatar
Но, насколько мне известно, 404-ю лучше делать отдельной страницей, т.к. у поисковиков это больше приветствуется )

ты не представляешь какой бой был по этому поводу, но заказчик к сожалению (смотри тэги :)) )
avatar
:) ясно
avatar
а как вы собираетесь 404 определить без перехода на страницу?
Вам же изначально нужно, чтобы роутер сработал.
Сделать можно, но это костыли + доп запросы. Разве что сайт на аяксе будет.
avatar
Можно так сделать плагин на событие OnPageNotFound
с кодом

$e = &$modx->Event;
switch($e->name) {
    case 'OnPageNotFound':    
	echo 'суда вставите свое окно';
	break;	
}
avatar
Так так так) создал новый плагин, вставил туда ваш код, а в настройки что то надо?
avatar
Опа, спасибо! вы меня спасли, а то заказчик забомбил. С П А С И Б О
avatar
case 'OnPageNotFound':

Для чего этот цирк весь?
OnPageNotFound — сработает только при перегрузке страницы.
В вашем случае, создайте страницу 404, укажите её в настройках и пишите туда код.
т.е. страницу с всплывающим окном. Только будет срабатывать после перегрузки страницы с неправильным (не существующим) урлом.

Объясните далёкому человеку, зачем создавать плагин?
avatar
404 — это ответ сервера, его нельзя подгрузить в модальном окне.
я думаю тадо делать так — при запросе несуществующей страницы отдавать ответ 404 при этом направлять пользователя назад на страницу с которой он пришел, если она не найдена то на главную, и уже поверх нее вешать модальное окно.
можно спрятать модальное окно заранее на каждой странице, а показывать его в случае если например, строка запроса содержит ключ #error404 присваиваемый при перенаправлении, то есть www.site.ru/page1#error404, проверять яваскриптом
avatar
Кидать назад не совсем красиво.

Можно действительно на OnPageNotFound.

суть в том что при каждом заходе на сайт, загонять в куку текущий ID страницы.
при вводе ошибочного, использовать в OnPageNotFound

// тут код модалки с сообщением об ошибке
$modx->config['404_error'] = '<script>$.fancybox({content:'PAGE NOT FOUND'})</script>';
// вот тут вместо 404 покажет последнюю страницу
 $modx->sendForvard( $_COOCKIE['lastID'] )


ну и в HEAD вставить где нибудь пониже [(404_error)]
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.