404 страница для мультиязычного сайта Джумла 3.5.6
- Liza
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 3
- Спасибо получено: 0
7 года 11 мес. назад #8291
от Liza
Liza создал тему: 404 страница для мультиязычного сайта Джумла 3.5.6
У кого получилась 404 страница для мультиязычной Джумлы? Поделитесь решением!
Проблема такая: есть двуязычный сайт рус/англ. Для каждого языка создана 404 страница и проделаны манипуляции, как и для одного языка (созданы два варианта страницы, два фиктивных пункта меню без модулей). Пробую два варианта в error.php (во вложении). Итог: для русской версии всё Ок, для англ - или белый экран с моим сообщением, или 404 страница выводится в "теле" Главной страницы, плюя на все настройки по привязке модулей.
Вариант 1
Вариант 2
Проблема такая: есть двуязычный сайт рус/англ. Для каждого языка создана 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>
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2869
- Спасибо получено: 659
7 года 11 мес. назад #8292
от Wedal
Wedal ответил в теме 404 страница для мультиязычного сайта Джумла 3.5.6
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
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Liza
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 3
- Спасибо получено: 0
7 года 11 мес. назад #8293
от Liza
Liza ответил в теме 404 страница для мультиязычного сайта Джумла 3.5.6
Wedal, спасибо что откликнулись! Почти работает. Если поставить Ваш код один-в-один, то на белом экране выводится скромное сообщение
Article not found для английской версии,
и
Материал не найден для русской.
Article not found для английской версии,
и
Материал не найден для русской.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2869
- Спасибо получено: 659
7 года 10 мес. назад #8298
от Wedal
Wedal ответил в теме 404 страница для мультиязычного сайта Джумла 3.5.6
Liza, в код нужно подставить ссылки на ваши страницы 404. Кроме того, я не уверен, что страницы будут отдавать корректные ошибки 404. Проверьте через
webmaster.yandex.ru/tools/server-response/
, чтобы возвращался код 404.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.