Allow HTML markup in quicktabs

Quicktabs by default strips html tags in Quicktab title by default. To add additional markup of text changes, hook_quicktabs_alter() is not sufficient the quicktabs tabset needs to be overriden to allow html markup in titles.

hook_quicktabs_alter() to modify title. In the example modification for the first tab is done

<?php
function ji_custom_quicktabs_alter(&$quicktabs){
  if(isset(
$quicktabs->tabs[0]['title'])){
   
$title = $quicktabs->tabs[0]['title'];
   
$quicktabs->tabs[0]['title'] =  '<span class="link-badge-text">'.$title.'</span><span class="link-badge-badge-wrapper"><span class="link-badge link-badge-menu_badges_execute_view">2414</span></span>';
  }
}
?>

Modifying the theme theme_qt_quicktabs_tabset to allow html markup in title

<?php
/**
 * Overrides Theme function to output tablinks for classic Quicktabs style tabs.
 */
function ji_theme_qt_quicktabs_tabset($vars) {
 
$variables = array(
   
'attributes' => array(
     
'class' => 'quicktabs-tabs quicktabs-style-' . $vars['tabset']['#options']['style'],
    ),
   
'items' => array(),
  );
  foreach (
element_children($vars['tabset']['tablinks']) as $key) {
   
$item = array();
    if (
is_array($vars['tabset']['tablinks'][$key])) {
     
$tab = $vars['tabset']['tablinks'][$key];
     
$tab['#options']['html'] = TRUE; // Added this to override to allow HTML in titles.
     
if ($key == $vars['tabset']['#options']['active']) {
       
$item['class'] = array('active');
      }
     
$item['data'] = drupal_render($tab);
     
$variables['items'][] = $item;
    }
  }
  return
theme('item_list', $variables);
}
?>

--
https://drupal.org/comment/8343639#comment-8343639
http://drupalcontrib.org/api/drupal/contributions!quicktabs!quicktabs.ap...

Technologies: