How to hide Edit | View tabs?

后端 未结 11 1006
轮回少年
轮回少年 2021-02-01 04:43

Can I hide the

Edit | View

tabs on top of each node ?

I\'ve searched for this option in theme settings (both global and sta

11条回答
  •  时光取名叫无心
    2021-02-01 05:25

    This really is a presentational thing, not a functionality thing, so it should be done at the theme level.

    The problem with overriding theme_menu_local_tasks() is that you override/take a hatchet to the entire local task display, when you really just want to get in there with a scalpel to remove two specific local tasks. So, you need to get a little more specific.

    theme_menu_local_tasks() gets the current page's local tasks and passes them to menu_local_tasks(). Here, two theme functions are used:

    1. theme_menu_item_link(), which gets the link markup for the task
    2. theme_menu_local_task(), which gets the
    3. element for the task.

    So, you can get rid of the View and Edit local tasks in a really robust way by overriding theme_menu_item_link() and theme_menu_local_task() to include your check for them:

    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 
  • element if $link is empty if ($link === '') { return ''; } else { return '
  • '. $link ."
  • \n"; } }

    This way, you're relying on the menu router path, not modifying the menu router item, and achieving the result you want with minimal changes to core functionality or theming.

提交回复
热议问题