и сново о темизации Views. табличный views, разные стили строк в зависимости от выбраного термина таксономии.

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

Аватар пользователя Dorian76453 Dorian76453 9 ноября 2011 в 15:23

Суть проблемы такова:
есть табличный views.
подскажите как можно реализовать, чтобы стиль строки с материалом менялся в зависимости от того какой термин выбран для этого материала?

как сменить note.tpl.php я знаю. вот например есть такой код:

<?php

if ( isset($node->taxonomy[89])  ) {
      include(
'node-taxonomy.tpl.php') ;
      return ;
   }

?>

а как такое сделать для views?
максимум что мне нужно, это чтобы менялся background в нужной строке.

Комментарии

Аватар пользователя kalabro kalabro 9 ноября 2011 в 15:45

копируете стиль 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;
  
//  ...
?>
Аватар пользователя Dorian76453 Dorian76453 9 ноября 2011 в 16:34

kalabro wrote:
копируете стиль 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 термина таксономии к которому принадлежит нода, неаходящаяся в этой строке таблицы). но как это сделать я не знаю Sad

Аватар пользователя kalabro kalabro 10 ноября 2015 в 11:47

1. найдите файл /sites/all/modules/views/theme/views-view-table.tpl.php
2. не меняйте его
3. скопируйте его в папку своей темы (как создать тему?), поместив предварительно в папку views.
4. Открываете в своем вьюсе «Theme: Information» и копируете одно из предложенных названий файла темизации.

5. Переименовываете файл views-view-table.tpl.php из своей темы.

/your_theme
|-- /views
|   |-- views-view-table--YOUR_VIEW_NAME.tpl.php

6. Открываете файл views-view-table--YOUR_VIEW_NAME.tpl.php и темизируете.
7. Я показала вам в php-коде кусок этого самого файла.

Аватар пользователя Dorian76453 Dorian76453 9 ноября 2011 в 15:57

orion76
я подозреваю (!) что нужно как-то через шаблоны это все сделать. )
например,
если термин = 1 то шаблон для таблицы = а;
если термин = 2 то шаблон для таблицы = b; и т.д.
думаю как-то так.

есть еще один вариант, но он очень длительный и мучительный.
создать tpl для данного типа материала.
задать шаблон тизера в табличном виде (по сути во views таблица использовалась только для удобства, а views calc можно заменить export xls).
затем проверить на привязку к термину, и менять цвет фона в шаблоне. а во views выводить материал -> тизер.
только опять все через "жэ" получается. да и не очень хочется отказываться от табличного views, т.к. возможно понадобиться сортировка в таблице.

Может будут идеи?

Аватар пользователя drupby drupby 9 ноября 2011 в 16:29

"q2_faith" wrote:
через шабоны вьюс действовать надо. из $fields брать tid, и по условию присваивать класс

смотря сколько терминов ,а если их сотни ?

Аватар пользователя Dorian76453 Dorian76453 9 ноября 2011 в 16:35

drupby wrote:
"q2_faith" wrote:
через шабоны вьюс действовать надо. из $fields брать tid, и по условию присваивать класс

смотря сколько терминов ,а если их сотни ?

их у меня будет всего 3-4

Аватар пользователя Dorian76453 Dorian76453 9 ноября 2011 в 17:08

то как создать файл шаблона для views я понял. проблема именно с написанием условий.
ну ладно, сейчас буду пробовать. спасибо за советы

Аватар пользователя Dorian76453 Dorian76453 10 ноября 2011 в 8:18

мы тут друг другу мозг выносим, а есть уже готовое решение. views_table_highlighter, которое между прочем еще и список допустимых значений выдает. Один минус, модуль идет как стиль views'a и нет возможности использовать совместно с views calc. ну ничего.
спасибо за советы. будем юзать!

Аватар пользователя snegin snegin 6 января 2014 в 13:35

Я все сделал, как сказали. Но у меня проблема с файлом шаблона views

<table <?php if ($classes) { print 'class="'. $classes . '" '; } ?><?php print $attributes; ?>>
   <?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>

Я не знаю, куда добавлять ваш код

<?php
foreach ($rows as $count => $row):
  // Добавить к каждой строке класс row-term-id-%tid%. Поле Term Id должно
  // быть выбрано в настройках Views и, если его не нужно отображать - скрыто.
  $row_classes[$count][] = 'row-term-id-' . $result[$count]->term_data_tid;
  //  ...
?>
Аватар пользователя kalabro kalabro 6 января 2014 в 18:37

Всех с Новым Годом и Рождеством!

Хоть дело происходило и 2 года назад, но ответ http://www.drupal.ru/node/71268#comment-406952 вполне актуален. Если что-то не получается, обращайтесь за платной помощью.

Успехов!

Аватар пользователя aaegorof aaegorof 24 апреля 2014 в 16:05

Можно настроить Relations со значением Термина Таксономии.
Добавить его в качестве поля (Скрыть).
Использовать его в качестве токена для класса, используя rewrite, например )
Все