function theme_item_list

Returns HTML for a list or nested list of items.

Parameters

$variables: An associative array containing:

  • items: An array of items to be displayed in the list. If an item is a string, then it is used as is. If an item is an array, then the "data" element of the array is used as the contents of the list item. If an item is an array with a "children" element, those children are displayed in a nested list. All other elements are treated as attributes of the list item element.
  • title: The title of the list.
  • type: The type of list to return (e.g. "ul", "ol").
  • attributes: The attributes applied to the list element.

Related topics

30 theme calls to theme_item_list()
aggregator_block_view in modules/aggregator/aggregator.module
Implements hook_block_view().
authorize.php in ./authorize.php
Administrative script for running authorized file operations.
book_render in modules/book/book.pages.inc
Menu callback: Prints a listing of all books.
callback_batch_finished in modules/system/form.api.php
Complete a batch process.
entity_query_access_test_sample_query in modules/simpletest/tests/entity_query_access_test.module
Returns the results from an example EntityFieldQuery.

... See full list

File

includes/theme.inc, line 2214

Code

function theme_item_list($variables) {
    $items = $variables['items'];
    $title = $variables['title'];
    $type = $variables['type'];
    $attributes = $variables['attributes'];
    // Only output the list container and title, if there are any list items.
    // Check to see whether the block title exists before adding a header.
    // Empty headers are not semantic and present accessibility challenges.
    $output = '<div class="item-list">';
    if (isset($title) && $title !== '') {
        $output .= '<h3>' . $title . '</h3>';
    }
    if (!empty($items)) {
        $output .= "<{$type}" . drupal_attributes($attributes) . '>';
        $num_items = count($items);
        $i = 0;
        foreach ($items as $item) {
            $attributes = array();
            $children = array();
            $data = '';
            $i++;
            if (is_array($item)) {
                foreach ($item as $key => $value) {
                    if ($key == 'data') {
                        $data = $value;
                    }
                    elseif ($key == 'children') {
                        $children = $value;
                    }
                    else {
                        $attributes[$key] = $value;
                    }
                }
            }
            else {
                $data = $item;
            }
            if (count($children) > 0) {
                // Render nested list.
                $data .= theme_item_list(array(
                    'items' => $children,
                    'title' => NULL,
                    'type' => $type,
                    'attributes' => $attributes,
                ));
            }
            if ($i == 1) {
                $attributes['class'][] = 'first';
            }
            if ($i == $num_items) {
                $attributes['class'][] = 'last';
            }
            $output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";
        }
        $output .= "</{$type}>";
    }
    $output .= '</div>';
    return $output;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.