в API друпала есть две функции: одна может возвращать алиас ноды drupal_get_path_alias, вторая редиректить на нужную страницу drupal_goto().
Вот их надо вставить куда-нибудь в page.tpl.php
Но это наверное не очень хорошее решение, т.к. завязано на тему, лучше написать модуль который будет анализировать текущий адрес а потом вызывать drupal_get_path_alias и drupal_goto()
Прежде чем писать такое, подумай о том, что это будет дополнительный редирект - а не процесс "на лету", как в path. Перезагрузки в браузере скорее всего заметно не будет, но тем не менее, нагружает сервер почти как загрузка двух страниц (почти - потому что при заходе на node/x Друпал будет инициализироваться, запрашивать из базы свои переменные, и т.д. - все что до строки drupal_goto будет выполнено - и потом, после редиректа - полная загрузка страницы на твоем алиасе). Если все это устраивает, тогда - вперед, это модуль будет в три строчки.
* …checks if the currently url has an alias set and does a 301 redirect to it.
* …checks if the currently url has a trailing slash, removes it and checks if that has an alias and, if so, does a 301 redirect to that.
* …Finally, checks if the current URL is the same as the site_frontpage, if so - then redirects to "nothing" (ie the frontpage).
Reason:
Once enabled, an alias provides a nice URL for a node. However it doesn't remove the old URL (eg node/1234). This is a problem as you now have two URL's representing precisely the same content. You're getting into dangerous territory for duplicate pages which can get you sandboxed by the likes of Google!
Solution:
This module uses hook_init to interrupt the page load and do an alias lookup. If one exists, redirect off to iit - otherwise the page load may continue uninterrupted.
А если одним предложением и на русском, то при запросе ноды у которой есть path будет выдавать 301 и перенаправлять браузер на страницу с path
Комментарии
в API друпала есть две функции: одна может возвращать алиас ноды drupal_get_path_alias, вторая редиректить на нужную страницу drupal_goto().
Вот их надо вставить куда-нибудь в page.tpl.php
Но это наверное не очень хорошее решение, т.к. завязано на тему, лучше написать модуль который будет анализировать текущий адрес а потом вызывать drupal_get_path_alias и drupal_goto()
Прежде чем писать такое, подумай о том, что это будет дополнительный редирект - а не процесс "на лету", как в path. Перезагрузки в браузере скорее всего заметно не будет, но тем не менее, нагружает сервер почти как загрузка двух страниц (почти - потому что при заходе на node/x Друпал будет инициализироваться, запрашивать из базы свои переменные, и т.д. - все что до строки drupal_goto будет выполнено - и потом, после редиректа - полная загрузка страницы на твоем алиасе). Если все это устраивает, тогда - вперед, это модуль будет в три строчки.
Не понял, что path делает "на лету"?
Прежде чем писать такое - подумайте и напишите ваше решение
непонятно зачем такое надо... просто созданием алиаса для ноды 123 нельзя обойтись?
если нет, то можно написать модуль с хуком _menu, в котором проверять: если arg(0) == 'node' && arg(1) == 123, то drupal_goto('my/new/path').
По моему подойдет модуль Global Redirect
( http://drupal.org/project/globalredirect )
Simple module which…
* …checks if the currently url has an alias set and does a 301 redirect to it.
* …checks if the currently url has a trailing slash, removes it and checks if that has an alias and, if so, does a 301 redirect to that.
* …Finally, checks if the current URL is the same as the site_frontpage, if so - then redirects to "nothing" (ie the frontpage).
Reason:
Once enabled, an alias provides a nice URL for a node. However it doesn't remove the old URL (eg node/1234). This is a problem as you now have two URL's representing precisely the same content. You're getting into dangerous territory for duplicate pages which can get you sandboxed by the likes of Google!
Solution:
This module uses hook_init to interrupt the page load and do an alias lookup. If one exists, redirect off to iit - otherwise the page load may continue uninterrupted.
А если одним предложением и на русском, то при запросе ноды у которой есть path будет выдавать 301 и перенаправлять браузер на страницу с path
Угу. По идее подойти должен, если я задачу правильно понял.
Спасибо, то что хотел.
path достает реальный адрес страницы одним запросом в базу, без всяких редиректов. Чего тут непонятного?