Работа над ошибками в перестановке строк и колонок таблицы во вюсах в 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>

 

RSSAdd to Google

Обсуждение:

Как вам материальчик? *



















Тема:

Мысль:

Как звать-то:

Почта:

PS: Комментарии публикуются только после проверки модератором.

PPS: E-mail'ы не публикуются.

* обязательные поля