如何隐藏编辑| 查看标签?

ane*_*yzm 24 drupal drupal-6

我可以隐藏吗?

编辑| 视图

每个节点顶部的标签?

我在主题设置中搜索了这个选项(全局和标准主题,但我找不到它).

我仍然希望能够让我的客户编辑/管理内容,所以我不能只删除它的权限.

谢谢

小智 19

这是一个非常简单的解决方案.(Drupal 7)

  • 在当前模板中打开page.tpl.php并搜索$ tabs变量.

  • 如果要完全隐藏它,请删除渲染代码.

  • 如果只想向管理员显示它,请使用此代码

    <?php if ($tabs and $is_admin): ?>
    <div class="tabs">
      <?php print render($tabs); ?>
    </div>
    
    Run Code Online (Sandbox Code Playgroud)

    上面的代码检查用户是否是管理员.如果是,它将呈现标签.如果不是它不会渲染它们.


小智 16

这真的是一个表现性的东西,而不是一个功能性的东西,所以它应该在主题层面完成.

覆盖的问题theme_menu_local_tasks()是,当你真的只想用手术刀去除两个特定的本地任务时,你覆盖整个本地任务显示器.所以,你需要更具体一点.

theme_menu_local_tasks()获取当前页面的本地任务并将其传递给menu_local_tasks().这里使用了两个主题函数:

  1. theme_menu_item_link(),获取任务的链接标记
  2. theme_menu_local_task(),它获取<li>任务的元素.

因此,您可以通过覆盖以及包含对它们的检查,以非常强大的方式摆脱查看编辑本地任务:theme_menu_item_link()theme_menu_local_task()

function mytheme_menu_item_link($link) {
  // Local tasks for view and edit nodes shouldn't be displayed.
  if ($link['type'] & MENU_LOCAL_TASK && ($link['path'] === 'node/%/edit' || $link['path'] === 'node/%/view')) {
    return '';
  }
  else {
    if (empty($link['localized_options'])) {
      $link['localized_options'] = array();
    }

    return l($link['title'], $link['href'], $link['localized_options']);
  }
}

function mytheme_menu_local_task($link, $active = FALSE) {
  // Don't return a <li> element if $link is empty
  if ($link === '') {
    return '';
  }
  else {
    return '<li '. ($active ? 'class="active" ' : '') .'>'. $link ."</li>\n";  
  }
}
Run Code Online (Sandbox Code Playgroud)

这样,您就依赖于菜单路由器路径,而不是修改菜单路由器项,并且只需对核心功能或主题进行最少的更改即可实现您想要的结果.


Gra*_*ide 9

在模块方面,您可以执行一些操作,将Edit的菜单项与节点的本地任务分离:

function custom_menu_alter(&$items) {
  $items['node/%node/edit']['type'] = MENU_CALLBACK;
}
Run Code Online (Sandbox Code Playgroud)

编辑路径仍然存在,但现在它与"视图"选项卡无关.这包括编辑页面本身 - 那里没有"查看"选项卡.


uwe*_*uwe 9

有一个模块:tab tamer允许隐藏或禁用选项卡并重命名它们.