2010-10-25 9 views
6

He creado una vista (Drupal 6.x, Vistas 2.x). Me gustaría poder agregar una fila de resumen al final de esta vista: totalizar varias columnas e incluir los totales en la fila de resumen.¿Cómo puedo agregar una fila de resumen a una vista de Drupal?

¿Cómo puedo hacer esto? ¿Hay algún gancho para alterar los datos de Views que pueda implementar, para cambiar los datos construidos (antes de que tenga el tema)?

(Tenga en cuenta que no puedo usar views_calc debido a que algunos de los datos en este punto de vista proviene de Relaciones Vistas, que views_calc no es compatible en el momento de la escritura.)

Respuesta

6

Para responder a mi propia pregunta una par de horas más tarde ... Una forma sería la implementación de 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; 
    } 
    } 
} 
+0

Si tiene columnas adicionales, ese código creará muchas advertencias. Para eliminar estos, agregue $ row-> field_YOUR_FIELD = array(); después de crear la nueva fila para eliminarlos. –

1

Personalmente, me gustaría manejar esto de las plantillas de vista. Cree un views-view.tpl.php para su vista, y luego edítelo para calcular e imprimir el resumen.

Otra opción es crear otra pantalla para la misma vista, y luego crear un views-view-unformatted.tpl.php y calcular e imprimir el resumen sin hacer un print $row; para evitar llamar a la plantilla de los campos. La pantalla de uso de agregar vista donde sea necesario.

4

Echando un vistazo alrededor, parece que Views Calc puede hacer lo que quiera.

+0

¿Por qué un voto a favor? Esto es útil. –

+3

Vistas Calc no admite Vistas Relaciones. La pregunta original dice que Views Calc no se puede usar por ese motivo. – smokris

1

Si alguien más se encuentra con esta pregunta, puede usar Views Summarize que agrega una tabla resumida. Simplemente configure la pantalla y luego elija cómo desea que se resuma cada columna. Todavía no he podido hacer que esto funcione con Views Data Export, pero funciona si solo desea ver los datos en el sitio.

Cuestiones relacionadas