0

I would like to place a <br /> tag in my MENU_LOCAL_TASK titles so that I can reduce the width of the primary tabs.

It seems that in theme_menu_local_task the link title is run through check_plain, but when I remark this line out only the link title of the active tab responds. All the inactive tab link title are still being sanitized.

Basically, I want to have HTML in my MENU_LOCAL_TASK titles - without using any contrib modules.

Any ideas? Thanks.

0

The key is this if construct: if (!empty($variables['element']['#active'])) with regard to getting the titles of the inactive tabs to respond. My solution was to customize: theme_menu_local_task. Perhaps there is a better solution?

/**
 * Alter theme_menu_local_task.
 */
function my_theme_menu_local_task($variables) {
  $link = $variables['element']['#link'];
  $link_text = $link['title'];

  if (!empty($variables['element']['#active'])) {
    // Add text to indicate active tab for non-visual users.
    $active = '<span class="element-invisible">' . t('(active tab)') . '</span>';

    // If the link does not contain HTML already, check_plain() it now.
    // After we set 'html'=TRUE the link will not be sanitized by l().
    if (empty($link['localized_options']['html'])) {
      if (arg(0) != 'my-page') { // ** ADDED **
        $link['title'] = check_plain($link['title']);
      } // ** ADDED **
    }
    $link['localized_options']['html'] = TRUE;
    $link_text = t('!local-task-title!active', array('!local-task-title' => $link['title'], '!active' => $active));
  }

  if (arg(0) == 'my-page') { // ** ADDED **
    $link['localized_options']['html'] = TRUE; // ** ADDED **
  } // ** ADDED **

  return '<li' . (!empty($variables['element']['#active']) ? ' class="active"' : '') . '>' . l($link_text, $link['href'], $link['localized_options']) . "</li>\n";
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.