Mayo 14, 2014
enzo
Algunas veces deseamos cambiar los datos presentando en una vista basados en los mismos datos retornados, es decir poder decir si el campo A es TRUE , entonces en el Campo B cambiar el contenido a BB.
Esto tarea lo podríamos hacer mediando un template del campo especifico, pero hoy quiero mostrarle como hacerlo mucho antes de que el proceso de renderizado de la Vista se lleva acabo.
Para esto implementaremos el hook hook_views_pre_render() como se muestra a continuación.
/**
* Implements hook_views_pre_render().
*/
function MIMODULO_views_pre_render($view) {
if ($view->name == 'YOUR_VIEW' && $view->current_display == 'YOUR_DISPLAY') {
foreach ($view->result as &$result) {
if($result->node_revision_states_state == 'published') {
$result->node_revision_states_state = 'Published by Sales';
}
}
}
}
En el ejemplo anterior filtramos la Vista y el Display sobre el cual queremos cambiar los datos; Luego hacemos un foreach por el arreglo $result que no es mas que objetos PHP, que en nuestro ejemplo son Nodos, pero podría ser cualquier cosa soportada por el modulo de Views.
Los resultados después de este punto solo serán usando por las funciones de renderizado así que cualquier cambia que hagamos en los objetos solo sera visual para la vista y no afectara en nada nuestra base de datos.
En el ejemplo lo único que se hace es verificar el valor de un campo especifico y si el valor se cumple cambio el valor que vera el usuario a “Published by Sales”.
Espero que haya sido de su agrado.