【问题标题】:Drupal Panel Pages PathautoDrupal 面板页面 Pathauto
【发布时间】:2011-07-15 11:51:16
【问题描述】:

我有一个使用路径 node/%node/foo 设置的面板页面,当我访问诸如 node/6/foo 之类的链接时一切正常。但是,当我访问nodealias/foo 时,它根本不起作用。是否可以让面板以这种方式与 pathauto 一起使用?

我想我可能必须实现挂钩 hook_url_inbound_alter 并自己更改网址。

我还在此处的面板模块中发布了支持请求:http://drupal.org/node/1219796

【问题讨论】:

    标签: drupal drupal-7 drupal-panels pathauto


    【解决方案1】:

    由于 Alexey 回答面板不关心别名,它只看到 node/%nid 这是一个对 D7 仍然有效的很好的解释: http://drupal.org/node/211338 总结并更新 D7: 为您创建的面板导出您的变体并将其导入到覆盖 Drupal 中默认节点显示的面板中。 将标准添加到变体,以便面板/变体仅用于您希望使用此变体显示的内容类型。 瞧 :)(阅读链接中的讨论,否则摘要将难以理解)

    希望这会有所帮助 - 我自己花了一些时间在谷歌上搜索并试图理解这一点,而且我也对 Views 确实关心别名这一事实感到困惑......

    【讨论】:

    • 同样,我在这个问题上挣扎的时间比我承认的要长,然后才意识到我因为 Views 而对别名做出了同样的假设。
    【解决方案2】:

    我使用以下代码解决了这个问题,您需要更改模式以匹配您的 url 别名的模式并更改函数名称以匹配您的模块名称。

    function brooklands_url_inbound_alter(&$path, $original_path, $path_language) {
        $pattern = '#^works\/[A-Za-z0-9]+(-[A-Za-z0-9]+)*\/images(\/\d+)?$#';
        if(preg_match($pattern, $original_path)) {
            $snip = substr($original_path, 0, strrpos($original_path, '/images'));
            $system_path = drupal_lookup_path('source', $snip);
            if($system_path) {
                $tail = substr($original_path, strrpos($original_path, '/images'));
                $path = $system_path . $tail;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用这个模块Subpathauto

      它会自动使别名与子路径一起使用,例如:nodealias/foo

      【讨论】:

        【解决方案4】:

        nodealias 是您的节点的完整别名,nid=6。第三个参数 (foo) 由面板模块通过 hook_menu() 添加到确切的别名 (node/%nid/%anythingelse) 并且它不会应用于您的别名 URL,因此您不能使用 nodealias/foo url 访问您的面板只是因为它没有被面板模块“挂钩”。 我认为手动更改网址是个好主意。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          相关资源
          最近更新 更多