DrupalBin
Submit Code
About
Recent Posts
Code
Fix for Fix for Code
Fix for Code
Code
Node type whitelist
an axe coach accessories
coach purses married
Fix for de las ghd alturas
de las ghd alturas
Code
more
User login
Log in using OpenID:
What is OpenID?
Username:
*
Password:
*
Log in using OpenID
Cancel OpenID login
Create new account
Request new password
Tags
CCK
drupal
fapi
jquery
menu
module
php
simpletest
taxonomy
test
theme
views
more tags
Home
Fix for add extra spans to the primary menu links
View
Fix
September 11, 2009 - 9:35am — Anonymous
// a preprocess function to highjack primary links
function
phptemplate_preprocess_page
(
&
$vars
)
{
// add some extra spans to the primary menu links
if
(
isset
(
$vars
[
'primary_links'
]
)
)
{
$vars
[
'klassik_primary_links'
]
= _klassik_primary_links
(
$vars
[
'primary_links'
]
)
;
}
}
// then rewrite theme_links for it, my theme is called klassik, I needed to add a lot of spans, modify as needed!
/**
* Implementation of theme_links(), we need extra span tags inside the primary menu links
*
* Return a themed set of links.
*
* @param $links
* A keyed array of links to be themed.
* @param $attributes
* A keyed array of attributes
* @return
* A string containing an unordered list of links.
*/
function
_klassik_primary_links
(
$links
,
$attributes
=
array
(
'id'
=
>
'nav'
,
'class'
=
>
'links'
)
)
{
$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'
;
}
if
(
isset
(
$link
[
'href'
]
)
&&
(
$link
[
'href'
]
==
$_GET
[
'q'
]
||
(
$link
[
'href'
]
==
'<front>'
&&
drupal_is_front_page
(
)
)
)
)
{
$class
.=
' active'
;
}
$output
.=
'<li'
.
drupal_attributes
(
array
(
'class'
=
>
$class
)
)
.
'>'
;
if
(
isset
(
$link
[
'href'
]
)
)
{
$link
[
'title'
]
=
'<span class="link-top-right"></span><span class="link-bottom-left"></span><span class="link-bottom-right"></span><span class="link-text">'
.
check_plain
(
$link
[
'title'
]
)
.
'</span>'
;
$link
[
'html'
]
=
TRUE
;
// 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
;
}
image replacement
primary links
Submit Fix
Summary:
Tags:
Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Show summary in full view
// a preprocess function to highjack primary links function phptemplate_preprocess_page(&$vars) { // add some extra spans to the primary menu links if (isset($vars['primary_links'])) { $vars['klassik_primary_links'] = _klassik_primary_links($vars['primary_links']); } } // then rewrite theme_links for it, my theme is called klassik, I needed to add a lot of spans, modify as needed! /** * Implementation of theme_links(), we need extra span tags inside the primary menu links * * Return a themed set of links. * * @param $links * A keyed array of links to be themed. * @param $attributes * A keyed array of attributes * @return * A string containing an unordered list of links. */ function _klassik_primary_links($links, $attributes = array('id' => 'nav', 'class' => 'links')) { $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'; } if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) { $class .= ' active'; } $output .= '<li'. drupal_attributes(array('class' => $class)) .'>'; if (isset($link['href'])) { $link['title'] = '<span class="link-top-right"></span><span class="link-bottom-left"></span><span class="link-bottom-right"></span><span class="link-text">' . check_plain($link['title']) .'</span>'; $link['html'] = TRUE; // 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; }
Syntax highlighting mode:
ActionScript
ColdFusion
Diff
Drupal 5
Drupal 6
HTML
INI
Javascript
MySQL
PHP
Python
robots.txt
SQL
Text
Select the syntax highlighting mode to use.
See Also:
Order
Title:
URL:
-1
0
1
Title:
URL:
-1
0
1
Any links you'd like to have associated with the post (Drupal.org issue, Wikipedia article, etc).
File attachments
Changes made to the attachments are not permanent until you save this post. The first "listed" file will be included in RSS feeds.
Attach new file:
The maximum upload size is
1 MB
. Only files with the following extensions may be uploaded:
jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp phps
.