Суть проблемы такова:
есть табличный views.
подскажите как можно реализовать, чтобы стиль строки с материалом менялся в зависимости от того какой термин выбран для этого материала?
как сменить note.tpl.php я знаю. вот например есть такой код:
<?php
if ( isset($node->taxonomy[89]) ) {
include('node-taxonomy.tpl.php') ;
return ;
}
?>
а как такое сделать для views?
максимум что мне нужно, это чтобы менялся background в нужной строке.
Комментарии
а как будет определяться цвет для термина? термин=цвет?
копируете стиль views-view-table.tpl.php в свою тему и переименовываете согласно списку у вас в «Theme: Information».
там делаете, что хотите, например:
<?php
foreach ($rows as $count => $row):
// Добавить к каждой строке класс row-term-id-%tid%. Поле Term Id должно
// быть выбрано в настройках Views и, если его не нужно отображать - скрыто.
$row_classes[$count][] = 'row-term-id-' . $result[$count]->term_data_tid;
// ...
?>
в php не очень, и честно говоря не совсем понял как работает этот код. то что он выводит мне в class "row-term-id-" - вот это я понял )
подозреваю что идея заключалась в том, чтобы к классу строки добавить TID. (id термина таксономии к которому принадлежит нода, неаходящаяся в этой строке таблицы). но как это сделать я не знаю
1. найдите файл /sites/all/modules/views/theme/views-view-table.tpl.php
2. не меняйте его
3. скопируйте его в папку своей темы (как создать тему?), поместив предварительно в папку views.
4. Открываете в своем вьюсе «Theme: Information» и копируете одно из предложенных названий файла темизации.
5. Переименовываете файл views-view-table.tpl.php из своей темы.
6. Открываете файл views-view-table--YOUR_VIEW_NAME.tpl.php и темизируете.
7. Я показала вам в php-коде кусок этого самого файла.
orion76
я подозреваю (!) что нужно как-то через шаблоны это все сделать. )
например,
если термин = 1 то шаблон для таблицы = а;
если термин = 2 то шаблон для таблицы = b; и т.д.
думаю как-то так.
есть еще один вариант, но он очень длительный и мучительный.
создать tpl для данного типа материала.
задать шаблон тизера в табличном виде (по сути во views таблица использовалась только для удобства, а views calc можно заменить export xls).
затем проверить на привязку к термину, и менять цвет фона в шаблоне. а во views выводить материал -> тизер.
только опять все через "жэ" получается. да и не очень хочется отказываться от табличного views, т.к. возможно понадобиться сортировка в таблице.
Может будут идеи?
через шабоны вьюс действовать надо. из $fields брать tid, и по условию присваивать класс
смотря сколько терминов ,а если их сотни ?
их у меня будет всего 3-4
в гугл за : темизация views
а потом второй пост этого топика
то как создать файл шаблона для views я понял. проблема именно с написанием условий.
ну ладно, сейчас буду пробовать. спасибо за советы
через родителей значит действовать)
мы тут друг другу мозг выносим, а есть уже готовое решение. views_table_highlighter, которое между прочем еще и список допустимых значений выдает. Один минус, модуль идет как стиль views'a и нет возможности использовать совместно с views calc. ну ничего.
спасибо за советы. будем юзать!
Я все сделал, как сказали. Но у меня проблема с файлом шаблона views
<?php if (!empty($title) || !empty($caption)) : ?>
<caption><?php print $caption . $title; ?></caption>
<?php endif; ?>
<?php if (!empty($header)) : ?>
<thead>
<tr>
<?php foreach ($header as $field => $label): ?>
<th <?php if ($header_classes[$field]) { print 'class="'. $header_classes[$field] . '" '; } ?>>
<?php print $label; ?>
</th>
<?php endforeach; ?>
</tr>
</thead>
<?php endif; ?>
<tbody>
<?php foreach ($rows as $row_count => $row): ?>
<tr <?php if ($row_classes[$row_count]) { print 'class="' . implode(' ', $row_classes[$row_count]) .'"'; } ?>>
<?php foreach ($row as $field => $content): ?>
<td <?php if ($field_classes[$field][$row_count]) { print 'class="'. $field_classes[$field][$row_count] . '" '; } ?><?php print drupal_attributes($field_attributes[$field][$row_count]); ?>>
<?php print $content; ?>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Я не знаю, куда добавлять ваш код
foreach ($rows as $count => $row):
// Добавить к каждой строке класс row-term-id-%tid%. Поле Term Id должно
// быть выбрано в настройках Views и, если его не нужно отображать - скрыто.
$row_classes[$count][] = 'row-term-id-' . $result[$count]->term_data_tid;
// ...
?>
Всех с Новым Годом и Рождеством!
Хоть дело происходило и 2 года назад, но ответ http://www.drupal.ru/node/71268#comment-406952 вполне актуален. Если что-то не получается, обращайтесь за платной помощью.
Успехов!
Можно настроить Relations со значением Термина Таксономии.
Добавить его в качестве поля (Скрыть).
Использовать его в качестве токена для класса, используя rewrite, например )
Все