две разных 404 страницы для Modx Evo
Всем привет!
У нас есть двуязычный сайт на MODX Evo и хотелось бы сделать две 404 страницы на разных языках. Для русской версии — на русском, на английской — английскую.
Программист упирается рогами и говорит, что нельзя обработать событие OnPageNotFound
так как нам хочется.
Я — еще не писал плагины, но меня вдохновила статья
но написав кусочек кода
Плиз, хелп ми =/
P.S. на сайте стоит также evoBabel версии 0.21 и там происходит следующее:
================
UPDATE
Я тут выяснил, что плагин у нас просто для красоты стоит, в качестве недовыпиленного легаси.
И мультиязычность якобы реализована средствами modx (то есть все-все ручками делается)
У нас есть двуязычный сайт на MODX Evo и хотелось бы сделать две 404 страницы на разных языках. Для русской версии — на русском, на английской — английскую.
Программист упирается рогами и говорит, что нельзя обработать событие OnPageNotFound
так как нам хочется.
Я — еще не писал плагины, но меня вдохновила статья
но написав кусочек кода
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
echo '<pre>';
print_r($_REQUEST);
print_r($_SERVER);
die;
и назначив плагину соответствующее событие OnPageNotFound, пытаясь открыть несуществующий адрес на сайте, я не заметил разницы.Плиз, хелп ми =/
switch ($e->name) {
case 'OnPageNotFound'://переадресация на нужную страницу 404, указать ее в модуле лексикона
//$docid = 0;
$docid = !empty($modx->config['error_page']) ? $modx->config['error_page'] : $modx->config['site_start'];
if (!isset($_SESSION['perevod'])) {
//$docid = $modx->config['site_start'];
$modx->sendRedirect($modx->makeUrl($docid), 0, 'REDIRECT_HEADER', 'HTTP/1.0 404 Not Found');exit();
}
$id = $_SESSION['perevod']['Страница не найдена'];
$docid = (int)$id;
if ($docid == 0) {
$id = $_SESSION['perevod']['Главная страница'];
$docid = (int)$id;
if ($docid == 0) {
$id = $_SESSION['perevod']['Корневая папка'];
$docid = (int)$id;
}
}
if ($docid != 0) {
$modx->sendRedirect($modx->makeUrl($docid), 0, 'REDIRECT_HEADER', 'HTTP/1.0 404 Not Found');exit();
} else {
$docid = !empty($modx->config['error_page']) ? $modx->config['error_page'] : $modx->config['site_start'];
}
break ;
================
UPDATE
Я тут выяснил, что плагин у нас просто для красоты стоит, в качестве недовыпиленного легаси.
И мультиязычность якобы реализована средствами modx (то есть все-все ручками делается)
Комментарии: 4
В плагине же комментарий:
//переадресация на нужную страницу 404, указать ее в модуле лексикона
Откройте модуль лексикона и настройте параметры для каждой версии.
Павел, извините, спасибо за ваш ответ.
Однако выяснилось, что у нас плагин этот не работает.
И значит вопрос открыт — почему-то никаким образом не обрабатывается событие OnPageNotFound
Однако выяснилось, что у нас плагин этот не работает.
И значит вопрос открыт — почему-то никаким образом не обрабатывается событие OnPageNotFound
Посмотрите порядок вызова плагинов на этом событии. Скорее всего, до нужного вам дело просто не доходит.
Для начала нужно узнать каким образом реализована мультиязычность. На данный момент есть 2 способа которыми пользуются массы: evoBabel и bLang. И тот и другой способ позволяют реализовать задуманное. Если это не так — вопросы к разработчику — каким именно способом он реализовал мультиязычность. Но в любом случае, плагином на событии OnPageNotFound всегда можно решить вопрос.
Если вдруг возникнут сложности — обращайтесь. Помогу.
Если вдруг возникнут сложности — обращайтесь. Помогу.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.