2010-10-25 12 views
6

Ich habe eine Ansicht erstellt (Drupal 6.x, Views 2.x). Ich möchte in der Lage sein, am Ende dieser Ansicht eine Zusammenfassungszeile hinzuzufügen - mehrere Spalten zusammenzufassen und die Summen in die Zusammenfassungszeile einzuschließen.Wie kann ich eine Zusammenfassungszeile zu einer Drupal View hinzufügen?

Wie kann ich das tun? Gibt es einige Datenänderungs-Hooks, die ich implementieren kann, um die konstruierten Daten zu ändern (bevor sie thematisiert werden)?

(Beachten Sie, dass ich nicht views_calc, weil einige der Daten in dieser Ansicht von Ansichten Beziehungen kommen verwenden kann, die views_calc nicht zum Zeitpunkt des Schreibens nicht unterstützt.)

Antwort

6

Um meine eigene Frage einer Antwort paar Stunden später ... Eine Möglichkeit, hook_views_pre_render() umzusetzen wäre:

/** 
* 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; 
    } 
    } 
} 
+0

Wenn Sie zusätzliche Spalten haben, erzeugt dieser Code viele Warnungen. Um diese hinzuzufügen, fügen Sie $ row-> field_YOUR_FIELD = array(); nach dem Erstellen der neuen Zeile, um sie zu entfernen. –

1

ich persönlich dies in der Ansicht Vorlagen behandeln würde. Erstellen Sie eine views-view.tpl.php für Ihre Ansicht, und bearbeiten Sie dann die Berechnung und drucken Sie die Zusammenfassung aus.

Eine andere Option besteht darin, eine weitere Anzeige für die gleiche Ansicht zu erstellen und dann views-view-unformatted.tpl.php zu erstellen und die Zusammenfassung ohne print $row; zu berechnen und auszudrucken, um den Aufruf der Feldvorlage zu vermeiden. Die Anzeige zum Hinzufügen von Verwendungszwecken wird angezeigt, wenn erforderlich.

4

Blick umher, es sieht aus wie Views Calc kann tun, was Sie wollen.

+0

Warum ein Downvote? Das ist nützlich. –

+3

Ansichten Calc unterstützt keine Views-Beziehungen. Die ursprüngliche Frage besagt, dass Views Calc aus diesem Grund nicht verwendet werden kann. – smokris

1

Wenn noch jemand auf diese Frage stößt, können Sie Views Summarize verwenden, das eine zusammengefasste Tabellenanzeige hinzufügt. Sie legen einfach die Anzeige fest und wählen dann aus, wie die einzelnen Spalten zusammengefasst werden sollen. Ich konnte dies noch nicht mit Views Data Export durchführen, aber es funktioniert, wenn Sie nur die Daten auf der Site sehen wollen.

Verwandte Themen