我在Drupal 7中添加了一个标签到此节点编辑表单(来自hook_menu
实现的代码段,删除了不相关的行):
'node/%/products' => array(
'title' => t('Products'),
'page callback' => 'some_function',
'page arguments' => array(
1
),
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK
)
选项卡显示并起作用,但页面显示在网站的默认主题中,而不是在管理主题中。此外,显示的页面中缺少其他选项卡。
我尝试通过将其包含在hook_admin_paths
的实现中来解决此问题,但它没有任何区别:
return array(
'node/%/products' => TRUE,
);
如何强制我的页面显示在管理主题中并显示节点编辑表单的其他选项卡(例如“编辑”,“修订”等)?
编辑:框中在admin/appearance
编辑或创建内容时使用管理主题,并在管理主题中显示系统定义的页面,如node/%/edit
,但我的新页面没有。
答案 0 :(得分:2)
我发现了我做错了什么。在hook_menu
%用于表示参数;在hook_admin_paths
中,这些必须用星号代替。我对hook_admin_paths
实施的以下更改解决了这个问题:
return array(
'node/*/products' => TRUE,
);
答案 1 :(得分:1)
在/ admin /外观页面上,在您设置管理菜单的页面底部,选中复选框“编辑或创建内容时使用管理主题”的值。
答案 2 :(得分:0)
我遇到了同样的问题,我解决了以下hook_menu
:
<?php
function <mymodulename>_menu() {
$items = array();
$output['node/%node/mypath'] = array(
'title' => t('Title'),
'type' => MENU_LOCAL_TASK,
'page arguments' => array('node', 1),
'page callback' => 'callback_function',
'theme callback' => 'variable_get',
'theme arguments' => array('admin_theme'),
)
}
function callback_function() {
return 'My New Page.';
}
我认为你需要在路径中有%node
,因为这是“自动加载”节点的正确方法(Drupal负责这个)并将其作为参数传递给callback_function
你在哪里可以使用加载的节点。