如何在自定义路径上显示论坛?

时间:2012-10-04 04:34:42

标签: php drupal

默认情况下,我的网站上的论坛已启用论坛;我希望他们转移到分享/论坛。我可以采取哪些不同的方法,哪一种最好?

我尝试使用Pathauto模块执行此操作,但是当我希望它显示“Home>> share>> forum”时,面包屑会显示“Home>> forum”。

2 个答案:

答案 0 :(得分:0)

有很多方法, 1)要么你可以使用pathauto(你使用它但它使用默认的nid跟踪事情,这就是为什么在面包屑中它显示的那样) 2)使用子域模块和移动你的论坛(如果你的主机支持那个) 3)使用一个单独的论坛模块,如phpbb左右,并把它放到你想要的路径,并使用重定向。

无论哪个适合你..

答案 1 :(得分:0)

如果您只想在共享/论坛上显示论坛页面,可以在自定义模块中使用以下代码。

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()随后对活动路径执行以下调整:

     
      
  • 如果'href'与$ item的'href'相同,则删除$ active_trail中的最后一个链接。发生这种情况,因为面包屑通常不包含指向当前页面的链接。
  •   
  • 如果当前$ item为MENU_DEFAULT_LOCAL_TASK,则会删除$ active_trail中的(第二个)最后一个链接。当发生在默认本地任务的路径上时,发生这种情况是为了不显示当前页面的链接;例如当位于路径节点/%/ view上时,面包屑不应包含指向节点/%.
  • 的链接