Как я могу добавить итоговую строку в Drupal View? - PullRequest
6 голосов
/ 25 октября 2010

Я построил представление (Drupal 6.x, Views 2.x). Я хотел бы иметь возможность добавить итоговую строку в конце этого представления - суммировать несколько столбцов и включать итоги в итоговую строку.

Как я могу это сделать? Есть ли какой-нибудь хук, изменяющий данные Views, который я могу реализовать, чтобы изменить построенные данные (до того, как они получат тематическую информацию)?

(Обратите внимание, что я не могу использовать views_calc, потому что некоторые данные в этом представлении поступают из отношений взаимосвязей, которые views_calc не поддерживают на момент написания.)

Ответы [ 5 ]

6 голосов
/ 25 октября 2010

Чтобы ответить на мой вопрос пару часов спустя ... Одним из способов было бы реализовать hook_views_pre_render():

/**
 * Implementation of hook_views_pre_render().
 */
function mymodule_views_pre_render(&$view) {
  if ($view->name == 'myview') {
    // perform calculations on each row
    $pointsEarned = $pointsPossible = 0;
    foreach($view->result as $submission) {
      if (is_numeric($submission->node_data_field_pointsearned_field_pointsearned_value)) {
        $pointsEarned += $submission->node_data_field_pointsearned_field_pointsearned_value;
        $pointsPossible += $submission->node_node_data_field_pointspossible_field_pointspossible_value;
      }
    }


    // insert a 'total' row
    $row = new stdClass();
    $row->node_data_field_pointsearned_field_pointsearned_value = $pointsEarned;
    $row->node_node_data_field_pointspossible_field_pointspossible_value = $pointsPossible;
    $view->result[] = $row;

    if ($pointsPossible > 0) {
      // insert an 'average' row
      $row = new stdClass();
      $row->users_name = 'Average:';
      $row->node_data_field_pointsearned_field_pointsearned_value = round($pointsEarned/$pointsPossible * 100) . "%";
      $view->result[] = $row;
    }
  }
}
4 голосов
/ 25 октября 2010

Взглянув вокруг, похоже, Просмотров Calc может делать то, что вы хотите.

2 голосов
/ 15 августа 2013

Просмотры Calc имеет много открытых ошибок. View Summarize кажется более стабильным.

1 голос
/ 23 июня 2013

Если кто-то еще сталкивался с этим вопросом, вы можете использовать Суммирование просмотров , которое добавляет отображение сводной таблицы. Вы просто устанавливаете отображение, а затем выбираете, как вы хотите, чтобы каждый столбец суммировался. Я пока не смог заставить его работать с Экспортом данных Views, но он работает, если вы просто хотите увидеть данные на сайте.

1 голос
/ 25 октября 2010

Лично я бы справился с этим в шаблонах представления.Создайте views-view.tpl.php для своего представления, а затем отредактируйте его, вычислите и распечатайте сводку.

Другой вариант - создать другое отображение для того же представления, а затем создайте views-view-unformatted.tpl.php, рассчитайте и распечатайтеСводка без print $row;, чтобы избежать вызова шаблона поля.При необходимости добавьте отображение вида использования.

...