Entries Tagged as 'primary links'

Managing Drupals Primary Links menus from template.php preprocess functions

You can manage display of primary menu links from your template.php file. If you have used theme(“links”,”$primary_links,array(“class”=>”primary menu”)); Then you can preprocess links from template.php in following manner.

/**
* * @global <type> $language
* @param <type> $links
* @param <type> $attributes
* @return <type>
*/
function phptemplate_links($links, $attributes = array(‘class’ => ‘links’)) {
global $language;
$output = ”;

if (count($links) > 0) {
$output = ‘<ul’. drupal_attributes($attributes) .’>’;

$num_links = count($links);
$i = 1;

foreach ($links as $key => $link) {
$class = $key;

// Add first, last and active classes to the list of links to help out themers.
if ($i == 1) {
$class .= ‘ first’;
}
if ($i == $num_links) {
$class .= ‘ last’;
}
//print_r($link['href'].”<br/>”);

if(arg(0)==$link['href']){
$class .= ‘ active-trail’;
}
if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == ‘<front>’ && drupal_is_front_page()))
&& (empty($link['language']) || $link['language']->language == $language->language)) {
$class .= ‘ active’;
}
$output .= ‘<li’. drupal_attributes(array(‘class’ => $class)) .’>’;

if (isset($link['href'])) {
// Pass in $link as $options, they share the same keys.
$output .= l($link['title'], $link['href'], $link);
}
else if (!empty($link['title'])) {
// Some links are actually not links, but we wrap these in <span> for adding title and class attributes
if (empty($link['html'])) {
$link['title'] = check_plain($link['title']);
}
$span_attributes = ”;
if (isset($link['attributes'])) {
$span_attributes = drupal_attributes($link['attributes']);
}
$output .= ‘<span’. $span_attributes .’>’. $link['title'] .’</span>’;
}

$i++;
$output .= “</li>\n”;
}

$output .= ‘</ul>’;
}

return $output;
}