【问题标题】:Redirect to a new page from within a Drupal site从 Drupal 站点内重定向到新页面
【发布时间】:2011-11-09 05:38:53
【问题描述】:

我正在使用 Drupal 站点,我们想设置一个特殊的 URL 来重定向到外部站点。换句话说,如果http://www.mysite.com 是我们的Drupal 站点,我们希望http://www.mysite.com/external 重定向到外部站点。

我对 Drupal 的经验很少,也不知道如何设置它。任何帮助表示赞赏!

【问题讨论】:

    标签: drupal url redirect external


    【解决方案1】:

    如果您只想将用户重定向到同一站点,当他们点击将他们带到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 中传递的值,那么您可以使用类似于以下的代码:

    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));
    }
    

    【讨论】:

      【解决方案2】:

      您可以安装 Path Redirect 模块,它可以让您完全做到这一点,无需编码。

      如果您使用的是 Drupal 7,则需要 Redirect 模块。

      【讨论】:

      • +1 upvote Redirect 在 Drupal 7 上也适用于我。注意 - 请务必在安装后清除所有缓存(通过管理员的性能部分或 drush cc all ),以避免致命的 PHP错误:drupal.org/node/1948676
      【解决方案3】:

      如果您想重定向现有 URL,另一种通过 UI 的方法是使用流行的 Rules 模块:

      例如:“反应规则”导出,将主页重定向到外部域:

      { "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" } } ]
        }
      } 
      

      可以在 admin/config/workflow/rules/reaction/import 导入

      【讨论】:

        【解决方案4】:

        您必须下载 Clive 提到的模块 并且您可以添加一个无需任何模块即可重定向到外部站点的菜单链接

        1- 转到管理/结构/菜单

        2- 选择要添加网址的菜单并点击{添加链接}

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

        祝你好运

        【讨论】:

          【解决方案5】:

          如果您使用的是 Drupal 8,则可以使用 RedirectResponse 类来执行此操作。

          使用 Symfony\Component\HttpFoundation\RedirectResponse;

          具体如何实现,可以看这篇帖子How to sample redirect page on drupal 8

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-08
            • 1970-01-01
            • 2016-06-07
            • 1970-01-01
            • 2010-11-28
            • 1970-01-01
            • 2013-10-25
            • 2017-07-25
            相关资源
            最近更新 更多