2011-07-15 67 views
2

我有一个面板页设置路径node/%node/foo和所有工作正常,当我访问一个链接,如node/6/foo。但是,当我访问nodealias/foo时,它根本不起作用。这样可以让面板与pathauto一起工作吗?Drupal面板页Pathauto

我想我可能不得不实施挂钩hook_url_inbound_alter并自己更改网址。

我也贴在面板模块在这里支持请求:http://drupal.org/node/1219796

回答

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

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

2

由于阿列克谢答案面板不关心的别名,它只能看到节点/%NID 下面是有效还是为D7一个很好的解释: http://drupal.org/node/211338 总结,并把它最新的D7: 出口您创建的面板的变体,并将其导入到覆盖Drupal中的默认节点显示的面板中。 将变体添加到变体中,以便面板/变体仅用于您希望使用此变体显示的内容类型。 瞧:)(在链路阅读的讨论,否则摘要将很难理解)

希望这有助于 - 我自己也花一些时间google搜索,并试图了解这一点,我也被这样的事实感到困惑该视图确实关心别名...

+0

同样在这里,我有这个问题搏斗了更多的时间比我会承认,因为在意识到之前我已经对别名作出了同样的假设。 – Ashlar

1

您可以使用此模块Subpathauto

它会自动进行别名与子路径,如工作:nodealias/foo

+0

我一直都在使用它,它完美地工作。 – user1015214