Четные и нечетные строки при выводе подразделов

Тема в разделе "NetCat", создана пользователем alex-ii, 21 авг 2009.

Статус темы:
Закрыта.
  1. alex-ii

    alex-ii Создатель

    Регистр.:
    9 июл 2009
    Сообщения:
    16
    Симпатии:
    0
    Создал компонент для вывода подразделов раздела. Хотелось бы сделать так чтобы строки таблиы раскрашивались... нечетная белым, четная например синим...
    Подразделы вывожу так: ".s_browse_sub($sub,$browse_sub)."

    Собственно вот шаблон вывода:
    $browse_sub[prefix] = "<table width='100%' border='0'>";
    $browse_sub[suffix] = "</table>";
    $browse_sub[active] = "<tr><td><a href=%URL>%NAME</a></tr></td>\n"";
    $browse_sub[active_link] = "<tr><td><a href=%URL>%NAME</a></tr></td>\n"";
    $browse_sub[unactive] = "<tr><td><a href=%URL>%NAME</a></tr></td>\n";
    $browse_sub[divider] = "";

    Кто подскажет?
     
  2. Denis__

    Denis__ Писатель

    Регистр.:
    25 янв 2008
    Сообщения:
    4
    Симпатии:
    2
    Предложу свое любимое решение =)

    Предложу своё любимое решение (правда оно к PHP и Netcat отношения не имеет).
    1. Скачайте и скопируйте в корень сайта библиотеку JQuery.
    2. Подключите файл к макету дизайна
    PHP:
    <script type="text/JavaScript" src="jquery.min.js"></script>
    3. Поместите вашу таблицу в DIV с классом "a1"
    PHP:
    $browse_sub[prefix] = "<div class='a1'><table width='100%' border='0'>";
    $browse_sub[suffix] = "</table></div>";
    4. Добавьте стили для нормальной ячейки и окрашенной (".paint")
    PHP:
    <style>
    .
    a1 table tr td{
     
    background#74B8E4; // синий
    }
    .
    a1 table tr.paint td{
     
    background#DFDFDF; // серый
    }
    </
    style>
    5. После блока навигации в макете дизайна добавьте следующий код (он производит выборку всех четных TR во всех таблицах, которые находятся в DIV с классом "a1")
    PHP:
    <script type="text/JavaScript">
    $(
    ".a1 > table tr:nth-child(odd)").addClass("paint");
    </script>
    Помоему, самый лучший мануал по JQuery лежит здесь.
    Надеюсь то, что вы искали :)
     
    alex-ii нравится это.
  3. Cokol

    Cokol Создатель

    Регистр.:
    11 июн 2008
    Сообщения:
    17
    Симпатии:
    4
    Есть делать без js, то вот вариант:
    $browse_sub[prefix] = "<table width='100%' border='0'>";
    $browse_sub[suffix] = "</table>";

    $browse_sub[unactive] = "<tr \".((\$i%2)?\"class='odd'\":NULL).\"><td><a href=%URL>%NAME</a></tr></td>\n";
    // $i - это номер элемента в массиве подразделов
    // проверяем его на четность $i%2 - и подставляем нужный класс в случае успеха
    // в классе "odd" уже указываем, какой цвет ставить
    $browse_sub[divider] = "";

    p.s.
    когда выйдет css3 такие вещи можно будет делать просто через css:
    tr:nth-child(2n+1) /* represents every odd row of a HTML table */
    tr:nth-child(odd) /* same */
    tr:nth-child(2n) /* represents every even row of a HTML table */
    tr:nth-child(even) /* same */

    /* Alternate paragraph colours in CSS */
    p:nth-child(4n+1) { color: navy; }
    p:nth-child(4n+2) { color: green; }
    p:nth-child(4n+3) { color: maroon; }
    p:nth-child(4n+4) { color: purple; }
     
  4. Asi

    Asi Создатель

    Регистр.:
    4 янв 2008
    Сообщения:
    16
    Симпатии:
    1
    Собстно, сами неткатовцы этот вопрос решали в компоненте, а не в шаблонах навигации.
    Возможно, немного ошибусь, но навскидку так

    в префиксе:
    ".opt($counter=0,"")."

    в списке объектов:
    <tr class='".($counter/2==floor($counter/2)? "red" : "green")."'>...
    ".opt($counter++,"")."
     
    alex-ii нравится это.
Статус темы:
Закрыта.