Главное меню
все форумы все темы форума добавить тему
вопрос по переадресации - не пойму как сделать
Здравствуйте!
Дело такое: есть раздел новостей, доступный по адресу http://nvr/news
где nvr - локальный адрес
Хочу расположить на сайте новости на главной странице. Соответственно, прочитав статью "Как сделать одинаковые страницы по разным адресам?" создал раздел "Главная" в виде ссылки на Новости.
Проблема: когда захожу внутрь новости, получаю не красивые ссылки, вида:
http://nvr/-item.1/
А хотелось бы (хотя-бы)
http://nvr/news-item.1/     - что для этого нужно сделать?
хотя мне больше по нраву http://nvr/news/item/1/   - возможно ли такое?
 
И вообще - есть ли описание использования {url}? Может там можно префикс задавать или ещё что?
Тут можно пойти несколькими путями:
1. Расположить на главной странице не сам модуль новостей, а модуль "топ новостей", оформив его так же как основные новости. Правда, при этом на главной не будет постраничной навигации по новостям.
2. Исправить шаблон списка новостей так, чтобы ссылка оттуда вела на страницу "/news". То есть если было {url action="item" var1=$item_id}, то будет {url href="/news" action="item" var1=$item_id}.
3. Можно сделать безусловную переадресацию с главной страницы на страницу /news
 
{url} является всего лишь оберткой вокруг класса разбора и генерации url адресов. Какой из классов использовать - указано в настройках сайта. Классы хранятся в каталоге kernel/classes/Url и имеют всего два метода:
PHP
//разобрать текущий URI
static function parse();
//создать URI из переданных параметров
static function create($params, $action, $type, $href, $redirect, $token);

Так что Вы можете создать свой класс, который будет работать с любым URL каким захотите.
Я зашёл чтобы сообщить, что сам нашёл решение, покапавшись в коде
В общем-то это решение, которое вы написали под №2, только вместо href="/news" лучше писать href=getModulePath("news"), на случай, если захочу изменить путь к модулю новостей.
Благодарю за быструю реакцию!
Да. Это хорошее решение. Только надо учесть что getModulePath может выдать не тот адрес, если модуль подключен к нескольким узлам. Чтобы этого не произошло, надо /news сделалть узлом с модулем новостей, а "/" - сделать ссылкой на него.