Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Маршрутизация по времени

08.03.2015, 22:39
usps
Михаил Кузин
usps

Зарегистрирован:
2014-10-28
Сообщений: 11

Здравствуйте!

Есть раздел, в котором присутствует инфоблок с новостями. Когда ходишь по новостям
внутри данного раздела, адресная строка имеет вид /раздел/год/месяц/дата/. Но когда заходишь в новостной раздел с других (не новостных) разделов сайта, адрес остается как /раздел/, хотя при этом отображаются новости за определенный год/месяц/день/.

Если кто знает, как изменить адрес при входе в новостной раздел из других разделов сайта с /раздел/ на /раздел/год/месяц/дата/, откликнитесь пожалуйста. Слышал что с этим может помочь модуль "маршрутизация", но на практике даже если его включить и настроить, задачу решить не удается.
09.03.2015, 00:16
usps
Михаил Кузин
usps

Зарегистрирован:
2014-10-28
Сообщений: 11

Пока мне удалось решить задачу добавлением в системные настройки компонента раздела вот такой конструкции:

<?
$ai = date(Y).'/'.date(m).'/'.date(d);
?>
<?= opt($_SERVER['REQUEST_URI'] == '/раздел/',"
<meta http-equiv='refresh' content='0; url=http://адрес_сайта/раздел/$ai/'>
") ?>

Кто-нибудь знает как решить задачу чтобы страница при входе в раздел не перезагружалась? Т.е. фактически чтобы маршрутизация отрабатывала еще до загрузки страницы.
09.03.2015, 15:37
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Код:
header('Location: /news...'); // Переадрисация должна стоять на верху
exit; // Чтобы далее не чего не обрабатывать


У вас проблема вероятно где то глубже. Возможно в сессию записывается и потому верно отображает хотя ссылка не верная. Может в htaccess что то прописано или в настройках макета.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
09.03.2015, 16:38
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Причина проста: просто у вас там, где формируются ссылки на новости, вместо $fullDateLink написано $fullLink. Это и приводит к тому, что ссылки формируются в "обычном" виде вместо ссылок с датами.
09.03.2015, 23:55
usps
Михаил Кузин
usps

Зарегистрирован:
2014-10-28
Сообщений: 11

Спасибо! Но конструкция

<?
$ai = date(Y).'/'.date(m).'/'.date(d);
?>
<?= opt($_SERVER['REQUEST_URI'] == '/раздел/',"
<?php header('Location: http://сайт/раздел/$ai/');
exit; ?>
") ?>

не работает. Причем по отдельности opt и сама переадресация по header работают, а вот вместе не хотят. Есть мысли что может быть не так?
10.03.2015, 13:44
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Тут множественные ошибки синтаксиса. Будьте внимательнее. За вас его не кто форматировать не будет.
Код:
<?
$ai = date(Y).'/'.date(m).'/'.date(d);
?>
<?= opt($_SERVER['REQUEST_URI'] == '/раздел/',"
<?php header('Location: http://сайт/раздел/$ai/');
exit; ?>
") ?>

Как они сюда попали? Да еще и в функцию. Я гляжу вы далеко пойдете. Прошу прощения но такие ошибки стыдно допускать. Как вообще можно открыть PHP теги в функции PHP?
Почему $_SERVER['REQUEST_URI'] вы не поместили в кавычки? По той же самой причине функции не заключаются в кавычки внутри другой функции.


Решение
Код:
<?
$ai = date(Y).'/'.date(m).'/'.date(d);

if($_SERVER['REQUEST_URI'] == '/раздел/' OR $current_sub[Subdivision_ID] == 234){
header('Location: /раздел/$ai/'); // Указывать внутри сайта абсолютную ссылку не нужно
exit;
}
?>


Я бы изменил условие с ($_SERVER['REQUEST_URI'] == '/раздел/') на ($current_sub[Subdivision_ID] == 234), где 234 - номер раздела новостей.

Ищите проблему, а не ставьте костыли.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
10.03.2015, 17:30
Гость
Гость

Александр, благодарю за указание на ошибки, все заработало!
Только в Вашем решении вместо header('Location: /раздел/$ai/'); нужно указывать header('Location: /раздел/'.$ai.'/'); иначе переменная при перенаправлении воспринимается дословно. А current_sub тут использовать не удается, т.к. все новости находятся в одном этом разделе и при такой конструкции начинается циклическая переадресация.
198 196 2015-03-10 17:30:31 14050
Описание проекта