【问题标题】:Adding a tab to the node edit form in Drupal在 Drupal 中向节点编辑表单添加选项卡
【发布时间】:2014-01-22 19:23:17
【问题描述】:

我在 Drupal 7 中的节点编辑表单中添加了一个选项卡,如下所示(来自hook_menu 实现的代码 sn-p,删除了不相关的行):

'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)显示在管理主题中,但我的新页面没有。

【问题讨论】:

    标签: drupal drupal-7


    【解决方案1】:

    我发现我做错了什么。在hook_menu中,%用来表示一个论点;在hook_admin_paths 中,这些必须用星号替换。我对hook_admin_paths 的实现的以下更改解决了它:

    return array(
        'node/*/products' => TRUE,
    );
    

    【讨论】:

      【解决方案2】:

      在 /admin/appearance 页面上,在您设置管理菜单的页面底部,选中“编辑或创建内容时使用管理主题”复选框的值。

      【讨论】:

      • 谢谢,但该框已打勾。 node/%/edit 等页面使用管理主题显示。然而,我的新页面node/%/products 不是。
      【解决方案3】:

      我遇到了同样的问题,我用下面的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,您可以在其中使用加载的节点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多