默认情况下,我网站上的论坛启用了论坛;我希望他们转移到分享/论坛。我可以采取哪些不同的方法,哪种方法最好?
我尝试使用 Pathauto 模块执行此操作,但是当我希望它显示“主页 >> 分享 >> 论坛”时,面包屑显示“主页 >> 论坛”。
有很多方法,1)您可以使用 pathauto(您使用过,但它使用默认的 nid 来跟踪事物,这就是为什么在面包屑中它会这样显示)2)使用子域模块并转移您的论坛(如果您的主机支持) ) 3) 使用单独的论坛模块,如 phpbb 左右,并将其放到您想要的路径并使用重定向。
哪个适合你..
如果您只想在共享/论坛上显示论坛页面,您可以在自定义模块中使用以下代码。
function mymodule_menu_alter(&$items) {
if (isset($items['forum'])) {
$items['share/forum'] = $items['forum'];
unset($items['forum']);
}
if (isset($items['forum/%forum_forum'])) {
$items['share/forum/%forum_forum'] = $items['forum/%forum_forum'];
unset($items['forum/%forum_forum']);
}
}
如果您希望论坛在旧路径和新路径中都可见,可以使用以下代码。
function mymodule_menu() {
$items['share/forum'] = array(
'title' => 'Forums',
'page callback' => 'forum_page',
'access arguments' => array('access content'),
'file' => 'forum.pages.inc',
);
$items['share/forum/%forum_forum'] = array(
'title' => 'Forums',
'page callback' => 'forum_page',
'page arguments' => array(1),
'access arguments' => array('access content'),
'file' => 'forum.pages.inc',
);
return $items;
}
至于面包屑,您需要实施hook_menu_breadcrumb_alter(),考虑文档页面中报告的内容。
实现应该考虑到 menu_get_active_breadcrumb()在调用此钩子后随后对活动跟踪执行以下调整:
- 如果 $active_trail 中的最后一个链接的“href”与 $item 的“href”相同,则删除它。发生这种情况是因为面包屑通常不包含指向当前页面的链接。
- 如果当前 $item 是 MENU_DEFAULT_LOCAL_TASK,则删除 $active_trail 中的(倒数第二个)链接。发生这种情况是为了在默认本地任务的路径上不显示指向当前页面的链接;例如,当在路径 node/%/view 上时,面包屑不应包含指向 node/% 的链接。