我有一个使用路径设置的面板页面,node/%node/foo
当我访问诸如node/6/foo
. 但是,当我访问nodealias/foo
它时,它根本不起作用。是否可以让面板以这种方式与 pathauto 一起使用?
我在想我可能必须实现钩子hook_url_inbound_alter并自己更改 url。
我还在此处的面板模块中发布了支持请求:http: //drupal.org/node/1219796
我有一个使用路径设置的面板页面,node/%node/foo
当我访问诸如node/6/foo
. 但是,当我访问nodealias/foo
它时,它根本不起作用。是否可以让面板以这种方式与 pathauto 一起使用?
我在想我可能必须实现钩子hook_url_inbound_alter并自己更改 url。
我还在此处的面板模块中发布了支持请求:http: //drupal.org/node/1219796
由于 Alexey 回答面板不关心别名,它只看到 node/%nid 这是一个对 D7 仍然有效的很好的解释: http: //drupal.org/node/211338 总结并更新 D7 :为您创建的面板导出您的变体,并将其导入到覆盖 Drupal 中默认节点显示的面板中。将标准添加到变体,以便面板/变体仅用于您希望使用此变体显示的内容类型。瞧 :) (阅读链接中的讨论,否则摘要将难以理解)
希望这会有所帮助 - 我自己花了一些时间在谷歌上搜索并试图理解这一点,而且我也对 Views DOES 关心别名这一事实感到困惑......
我使用以下代码解决了这个问题,您需要更改模式以匹配您的 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;
}
}
}
你可以使用这个模块Subpathauto
它会自动使别名与子路径一起使用,例如:nodealias/foo
nodealias 是您的节点的完整别名,nid=6。第三个参数 (foo) 由面板模块通过 hook_menu() 添加到确切的别名 (node/%nid/%anythingelse) 并且它不会应用于您的别名 URL,因此您不能使用 nodealias/foo url 访问您的面板只是因为它没有被面板模块“挂钩”。我认为手动更改 url 是个好主意。