我有一个面板页设置路径node/%node/foo
和所有工作正常,当我访问一个链接,如node/6/foo
。但是,当我访问nodealias/foo
时,它根本不起作用。这样可以让面板与pathauto一起工作吗?Drupal面板页Pathauto
我想我可能不得不实施挂钩hook_url_inbound_alter并自己更改网址。
我也贴在面板模块在这里支持请求:http://drupal.org/node/1219796
我有一个面板页设置路径node/%node/foo
和所有工作正常,当我访问一个链接,如node/6/foo
。但是,当我访问nodealias/foo
时,它根本不起作用。这样可以让面板与pathauto一起工作吗?Drupal面板页Pathauto
我想我可能不得不实施挂钩hook_url_inbound_alter并自己更改网址。
我也贴在面板模块在这里支持请求:http://drupal.org/node/1219796
我使用下面的代码修复了这个问题,您需要更改模式以匹配您的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;
}
}
}
的nodealias与NID = 6的节点的全部别名。第三个参数(foo)通过由面板模块的hook_menu()添加到确切的别名(node /%nid /%anythingelse),并且不会应用于别名的URL,因此您不能使用nodealias/foo url来访问只是因为它不被面板模块“挂钩”。 我认为,手动更改网址是一个好主意。
由于阿列克谢答案面板不关心的别名,它只能看到节点/%NID 下面是有效还是为D7一个很好的解释: http://drupal.org/node/211338 总结,并把它最新的D7: 出口您创建的面板的变体,并将其导入到覆盖Drupal中的默认节点显示的面板中。 将变体添加到变体中,以便面板/变体仅用于您希望使用此变体显示的内容类型。 瞧:)(在链路阅读的讨论,否则摘要将很难理解)
希望这有助于 - 我自己也花一些时间google搜索,并试图了解这一点,我也被这样的事实感到困惑该视图确实关心别名...
同样在这里,我有这个问题搏斗了更多的时间比我会承认,因为在意识到之前我已经对别名作出了同样的假设。 – Ashlar