Работа над ошибками в перестановке строк и колонок таблицы во вюсах в Drupal
По мере роста сайта был найден неприятный глюк в перестановке местами строк и колонок таблицы для таблиц в которых количество строк не равно количеству колонок в области назначения классов на строки таблицы: классы тупо остались от предыдущей таблицы, что является непорядком.
Исправляю баги:
<?php // $Id: views-view-table.tpl.php,v 1.8 2009/01/28 00:43:43 merlinofchaos Exp $ /** * @file views-view-table.tpl.php * Template to display a view as a table. * * - $title : The title of this group of rows. May be empty. * - $header: An array of header labels keyed by field id. * - $fields: An array of CSS IDs to use for each field id. * - $class: A class or classes to apply to the table, based on settings. * - $row_classes: An array of classes to apply to each row, indexed by row * number. This matches the index in $rows. * - $rows: An array of row items. Each row is an array of content. * $rows are keyed by row number, fields within rows are keyed by field ID. * @ingroup views_templates */ ?> <?php $aNormalRows=$rows; $rows=array(); $i=0; $aNewRowClasses=array(); foreach($fields as $key=>$value){ if($i%2==0){ $aNewRowClasses[$i][]='odd'; }else{ $aNewRowClasses[$i][]='even'; } if($i==0){ $aNewRowClasses[$i][]='views-row-first'; }elseif($i==count($fields)-1){ $aNewRowClasses[$i][]='views-row-last'; } $aNewRow=array(); foreach($aNormalRows as $count=>$row){ if(empty($header[$key])){ $aNewRow[$key.'.'.$count]=$row[$key]; }else{ $aNewRow[$key.'.'.$count]='<h4 class="header">'.$header[$key].'</h4>'.$row[$key]; } } $rows[]=$aNewRow; $i++; } $row_classes=$aNewRowClasses; unset($aNewRowClasses); unset($aNormalRows); unset($header); ?> <table class="<?php print $class; ?>"> <?php if (!empty($title)) : ?> <caption><?php print $title; ?></caption> <?php endif; ?> <tbody> <?php foreach ($rows as $count => $row): ?> <tr class="<?php print implode(' ', $row_classes[$count]); ?>"> <?php foreach ($row as $field => $content): $field=preg_replace('/\.\d+$/','',$field); ?> <td class="views-field views-field-<?php print $fields[$field]; ?>"> <?php print $content; ?> </td> <?php endforeach; ?> </tr> <?php endforeach; ?> </tbody> </table>


