Куда идем?

404 страница для мультиязычного сайта Джумла 3.5.6

Больше
7 года 4 мес. назад #8291 от Liza
У кого получилась 404 страница для мультиязычной Джумлы? Поделитесь решением!
Проблема такая: есть двуязычный сайт рус/англ. Для каждого языка создана 404 страница и проделаны манипуляции, как и для одного языка (созданы два варианта страницы, два фиктивных пункта меню без модулей). Пробую два варианта в error.php (во вложении). Итог: для русской версии всё Ок, для англ - или белый экран с моим сообщением, или 404 страница выводится в "теле" Главной страницы, плюя на все настройки по привязке модулей.
Вариант 1
Code:
defined('_JEXEC') or die; if (!isset($this->error)) { $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); $this->debug = false; } // Get language and direction $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $this->language = $doc->language; $this->direction = $doc->direction; $lang = JFactory::getLanguage(); $lng=$lang->getTag(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> </head> <body> <?php /*перенаправление*/ if (($this->_error->get('code') == '404') &($lng=="ru-RU")) { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=50'); exit;} if (($this->_error->get('code') == '404') &($lng=="en-GB")) { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=63'); exit;} ?> </body> </html>

Вариант 2
Code:
defined('_JEXEC') or die; if (!isset($this->error)) { $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); $this->debug = false; } // Get language and direction $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $this->language = $doc->language; $this->direction = $doc->direction; $lang = JFactory::getLanguage(); $lng=$lang->getTag(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> </head> <body> <?php /*читаем поток. нет 301 редиректа */ if(($this->error->getCode()=='404') &($lng=="ru-RU")) { header("HTTP/1.0 404 Not Found"); $url=JURI::root()."index.php?option=com_content&view=article&id=50"; $data = file_get_contents($url) or die("Cannot open URL"); echo $data; } if(($this->error->getCode()=='404') &($lng=="en-GB")) { header("HTTP/1.0 404 Not Found"); $url=JURI::root()."index.php?option=com_content&view=article&id=63"; $data = file_get_contents($url) or die("Cannot open URL"); echo $data; } ?> </body> </html>

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
7 года 4 мес. назад #8292 от Wedal
Liza, а если вот так:
Code:
<?php defined('_JEXEC') or die; if (!isset($this->error)) { $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); $this->debug = false; } // Get language $lang = JFactory::getLanguage(); $lng=$lang->getTag(); /*перенаправление*/ if (($this->_error->get('code') == '404') &($lng=="ru-RU")) { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=50'); }elseif(($this->_error->get('code') == '404') &($lng=="en-GB")) { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=63'); } ?>
Спасибо сказали: Liza

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
7 года 4 мес. назад #8293 от Liza
Wedal, спасибо что откликнулись! Почти работает. Если поставить Ваш код один-в-один, то на белом экране выводится скромное сообщение
Article not found для английской версии,
и
Материал не найден для русской.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
7 года 4 мес. назад #8298 от Wedal
Liza, в код нужно подставить ссылки на ваши страницы 404. Кроме того, я не уверен, что страницы будут отдавать корректные ошибки 404. Проверьте через webmaster.yandex.ru/tools/server-response/ , чтобы возвращался код 404.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.