Search code examples
drupaldrupal-6

How to hide Edit | View tabs?


Can I hide the

Edit | View

tabs on top of each node ?

I've searched for this option in theme settings (both global and standard theme but I couldn't find it).

I still want to be able my customer to edit / administer content, so I cannot just remove the permission for it.

thanks


Solution

  • 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 <li> 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 <li> element if $link is empty
      if ($link === '') {
        return '';
      }
      else {
        return '<li '. ($active ? 'class="active" ' : '') .'>'. $link ."</li>\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.