function theme_links in Drupal 7
Same name and namespace in other branches
- 4 includes/theme.inc \theme_links()
- 5 includes/theme.inc \theme_links()
- 6 includes/theme.inc \theme_links()
Returns HTML for a set of links.
Parameters
$variables: An associative array containing:
- links: An associative array of links to be themed. The key for each link
is used as its CSS class. Each link should be itself an array, with the
following elements:
- title: The link text.
- href: The link URL. If omitted, the 'title' is shown as a plain text item in the links list.
- html: (optional) Whether or not 'title' is HTML. If set, the title will not be passed through check_plain().
- attributes: (optional) Attributes for the anchor, or for the <span> tag used in its place if no 'href' is supplied. If element 'class' is included, it must be an array of one or more class names.
If the 'href' element is supplied, the entire link array is passed to l() as its $options parameter.
- attributes: A keyed array of attributes for the UL containing the list of links.
- heading: (optional) A heading to precede the links. May be an
associative array or a string. If it's an array, it can have the
following elements:
- text: The heading text.
- level: The heading level (e.g. 'h2', 'h3').
- class: (optional) An array of the CSS classes for the heading.
When using a string it will be used as the text of the heading and the level will default to 'h2'. Headings should be used on navigation menus and any list of links that consistently appears on multiple pages. To make the heading invisible use the 'element-invisible' CSS class. Do not use 'display:none', which removes it from screen-readers and assistive technology. Headings allow screen-reader and keyboard only users to navigate to or skip the links. See http://juicystudio.com/article/screen-readers-display-none.php and http://www.w3.org/TR/WCAG-TECHS/H42.html for more information.
Related topics
29 theme calls to theme_links()
- blog_node_view in modules/
blog/ blog.module - Implements hook_node_view().
- book_node_view_link in modules/
book/ book.module - Adds relevant book links to the node's links.
- comment_build_content in modules/
comment/ comment.module - Builds a structured array representing the comment's content.
- comment_build_content in modules/
comment/ comment.module - Builds a structured array representing the comment's content.
- comment_node_view in modules/
comment/ comment.module - Implements hook_node_view().
File
- includes/
theme.inc, line 1778 - The theme system, which controls the output of Drupal.
Code
function theme_links($variables) {
$links = (array) $variables['links'];
$attributes = (array) $variables['attributes'];
$heading = $variables['heading'];
global $language_url;
$output = '';
if (!empty($links)) {
// Treat the heading first if it is present to prepend it to the
// list of links.
if (!empty($heading)) {
if (is_string($heading)) {
// Prepare the array that will be used when the passed heading
// is a string.
$heading = array(
'text' => $heading,
// Set the default level of the heading.
'level' => 'h2',
);
}
$output .= '<' . $heading['level'];
if (!empty($heading['class'])) {
$output .= drupal_attributes(array(
'class' => $heading['class'],
));
}
$output .= '>' . check_plain($heading['text']) . '</' . $heading['level'] . '>';
}
$output .= '<ul' . drupal_attributes($attributes) . '>';
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = array(
$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()) && (empty($link['language']) || $link['language']->language == $language_url->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);
}
elseif (!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;
}