theme_item_list
includes/theme.inc, строка 1461
- Версии
- 5 – 6
theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL)
Возвращает темизированный список.
Параметры
$items
Массив элементов, которые будут отображаться в списке. Если пункт списка является строкой, то он используется без изменений, как есть. Если пункт списка — массив, то для его вывода будут использоваться данные ('data'
), указанные для элемента массива. Если пункт списка является массивом с дочерним элементом ('children'
), то этот элемент тоже отображается в списке. Все другие элементы расцениваются как атрибуты пункта списка.
$title
Заголовок списка.
$type
Тег списка (например, 'ul'
, 'ol'
).
$attributes
Ассоциативный массив атрибутов тега списка.
Возвращаемое значение
Строка, содержащая выводимый список.
Связанные темы
Код
<?php
function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
$output = '<div class="item-list">';
if (isset($title)) {
$output .= '<h3>'. $title .'</h3>';
}
if (!empty($items)) {
$output .= "<$type". drupal_attributes($attributes) .'>';
$num_items = count($items);
foreach ($items as $i => $item) {
$attributes = array();
$children = array();
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) {
$data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
}
if ($i == 0) {
$attributes['class'] = empty($attributes['class']) ? 'first' : ($attributes['class'] .' first');
}
if ($i == $num_items - 1) {
$attributes['class'] = empty($attributes['class']) ? 'last' : ($attributes['class'] .' last');
}
$output .= '<li'. drupal_attributes($attributes) .'>'. $data ."</li>\n";
}
$output .= "</$type>";
}
$output .= '</div>';
return $output;
}
?>
Чтобы получить многоуровневый список (со вложенными списками) типа:
Нужно передать массив $items примерно такого вида: