使用页面上的节点菜单

时间:2012-01-05 13:12:02

标签: drupal menu

我想在Drupal的页面上使用节点菜单(见图像)。

enter image description here

这是可能的,如果是的话,怎么样?

2 个答案:

答案 0 :(得分:1)

好;节点页面通常具有“查看”和“编辑”选项卡。所以我的下一个问题是想知道它们为什么没有出现在你的节点页面上。您是否偶然为此节点类型创建了自定义页面模板并删除了打印选项卡的代码?或者您是否有可能以无权编辑此类节点的用户身份登录?

必须有一个原因,你没有得到这些标签;默认情况下,他们应该在那里。

如果您有此节点类型的自定义页面模板,请查找类似于以下内容的代码:

        <?php if ($tabs): ?>
          <div class="tabs"><?php print $tabs; ?></div>
        <?php endif; ?>

如果您没有看到类似的代码,请尝试添加。

如果你看到这样的代码,试着找出与你看到这些标签的其他内容类型相比,这种内容类型有什么不同。

答案 1 :(得分:1)

如果您引用的页面是模块的自定义页面输出,并且“mymodule / page”是该页面的路径,您希望选项卡“查看”和“编辑”,那么您应该实现{ {1}}使用类似于以下代码的代码:

hook_menu()

如果您引用的页面是example.com/mymodule/page中显示的页面,并且该页面应显示您在example.com/node/7上看到的内容,那么您可以在Drupal中实现以下代码7:

function mymodule_menu() {
  $items = array();

  $items['mymodule/page'] = array(
    'page callback' => 'mymodule_page_view', 
    'access arguments' => array('view mymodule page'),
  );

  $items['mymodule/page/view'] = array(
    'title' => 'View', 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
    'weight' => -10,
  );
  $items['mymodule/page/edit'] = array(
    'title' => 'Edit', 
    'page callback' => 'mymodule_page_edit', 
    'access arguments' => array('edit mymodule page'), 
    'weight' => 0, 
    'type' => MENU_LOCAL_TASK, 
  );

  return $items;
}

Drupal 6的等价物是在settings.php文件中编写以下代码:

function mymodule_url_inbound_alter(&$path, $original_path, $path_language) {
  if (preg_match('|^mymodule/page|', $path)) {
    $path = 'node/7';
  }
}

我没有编写function custom_url_rewrite_inbound(&$result, $path, $path_language) { if (preg_match('|^mymodule/page|', $path)) { $result = 'node/7'; } } hook_url_outbound_alter()的对称代码,因为我认为您对重写example.com/node/7不感兴趣,使其显示为example.com/mymodule / page,但您有兴趣与example.com/node/7一样显示example.com/mymodule/page。