"Зебра" (class odd / even) для .item-list ul li

Главные вкладки

Аватар пользователя romandor romandor 8 августа 2007 в 10:26

Поелзно для улучшения читабельности коротких материалов, добавляет к последовательным элементам классы "нечётный" "чётный", которые соответственно оформляются css.
Для блоков реализуется добавлением в block.tpl.php:
<?php print $zebra; ?>

Решение:

<?php
function themename_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
static $count = 0; //add
$output = '

';
if (isset($title)) {
$output .= '

'. $title .'

';
}

if (!empty($items)) {
$output .= "<$type" . drupal_attributes($attributes) . '>';
foreach ($items as $item) {
$zebra = ($count % 2) ? 'odd' : 'even'; // add
$count++; // add
$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
}
$output .= '

  • '. $data .'
  • '; //changed
    }
    $output .= "";
    }
    $output .= '

    ';
    return $output;
    ?>

    Комментарии

    Аватар пользователя romandor romandor 8 августа 2007 в 12:09

    Да, но в моём случае используерся модуль Statistics и его блок "Popular content", зебру необходимо применить к его элементам.
    На друпал.орг ткнули сюда: http://drupal.org/node/88096
    но это относится к элементам меню.
    Наверное, по аналогии можно стделать для простых списков?

    Аватар пользователя ftyuriy ftyuriy 20 декабря 2009 в 6:50

    Подскажите в каком файле прописывать код ? -
    <?php
    function themename_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
    ...
    ?>
    Если в template.php то выдает ошибку на - ?>