从Drupal网站内部重定向到新页面

4
我正在处理一个Drupal网站,我们想要设置一个特殊的URL来重定向到外部网站。换句话说,如果http://www.mysite.com是我们的Drupal网站,我们希望http://www.mysite.com/external可以重定向到外部网站。
我对Drupal几乎没有经验,不知道如何设置。非常感谢您的帮助!
5个回答

6
如果您只想在用户访问链接http://www.example.com/external时将其重定向到相同的站点,则可使用类似以下代码的方式实现hook_menu()
function mymodule_menu() {
  $items = array();

  $items['external'] = array(
    'title' => 'Redirect', 
    'page callback' => 'mymodule_redirect', 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_redirect() {
  drupal_goto($url, array('external' => TRUE));
}

如果重定向用户的URL取决于在URL中传递的值,那么您可以使用类似以下代码的代码:
```html

如果重定向用户的URL取决于在URL中传递的值,那么您可以使用类似以下代码的代码:

```
function mymodule_menu() {
  $items = array();

  $items['external/%'] = array(
    'title' => 'Redirect', 
    'page callback' => 'mymodule_redirect',
    'page arguments' => array(1), 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_redirect($id) {
  // Calculate $url basing on the value of $id.
  drupal_goto($url, array('external' => TRUE));
}

3
您可以安装Path Redirect模块,它可以让您轻松实现此功能,无需进行编码。
如果您使用的是Drupal 7,则需要安装Redirect模块。

+1 赞同。重定向 在我使用 Drupal 7 上也可以工作。注意 - 安装后一定要清除所有缓存(通过管理界面中的性能部分或 drush cc all 命令),以避免致命的 PHP 错误:https://drupal.org/node/1948676 - therobyouknow

1
如果您想重定向现有的URL,另一种通过UI的方式是使用流行的Rules模块:
例如:“Reaction Rule”导出,将主页重定向到外部域:
{ "rules_redirect_homepage" : {
    "LABEL" : "Redirect homepage",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "data_is" : { "data" : [ "site:current-page:url" ], "value" : [ "site:url" ] } }
    ],
    "DO" : [ { "redirect" : { "url" : "http:\/\/example.com" } } ]
  }
} 

可以在 管理员/配置/工作流/规则/反应/导入 处进行导入。

0

你需要下载Clive提到的模块,然后你就可以添加一个菜单链接,无需任何模块即可重定向到外部网站。

1- 进入管理/结构/菜单

2- 选择要添加URL的菜单,然后点击{添加链接}

3- 在“路径”字段中添加外部路径,例如“http://yahoo.com”

祝好运!


0
如果您正在使用Drupal 8,您可以使用RedirectResponse类来实现此功能。
使用Symfony\Component\HttpFoundation\RedirectResponse;
有关如何实现的详细信息,请阅读此文章如何在Drupal 8上示例重定向页面

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接