2

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

我在想我可能必须实现钩子hook_url_inbound_alter并自己更改 url。

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

4

4 回答 4

2

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

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

于 2011-09-20T00:58:31.833 回答
1

我使用以下代码解决了这个问题,您需要更改模式以匹配您的 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;
        }
    }
}
于 2011-09-20T14:47:27.597 回答
1

你可以使用这个模块Subpathauto

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

于 2014-03-27T08:43:03.100 回答
0

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

于 2011-07-17T15:41:37.050 回答