Crear operación en masa personalizada

17/03/2016
Crear operación en masa personalizada

Existe un módulo llamado Views Bulk Operations, que extiende al módulo Views y permite realizar acciones sobre un conjunto de nodos resultado de una vista, como por ejemplo publicarlos o despublicarlos. Este módulo proporciona un campo de views donde poder elegir una serie de acciones predefinidas para aplicar a los nodos.

Como es lógico, se hace necesario disponer de un mecanismo para poder implementar otras acciones personalizadas que se ajusten a las necesidades de nuestro desarrollo, para ello debemos seguir los siguientes pasos:

Paso 1
En el fichero .module del módulo custom o de la feature donde queramos añadir la funcionalidad, añadiremos el siguiente código. Se compone de un hook para definir la nueva acción, y una función callback que es donde se realiza verdaderamente el tratamiento del contenido o la operación en cuestión sobre cada nodo resultado de una vista. En este ejemplo la acción consiste en cambiar el título de los nodos.

/**
* Implements hook_action_info()
* It provides a custom action for VBO views
*/
function custom_module_action_info() {
 return [
	    'action_callback' => [
 	'type' => 'node',
 	'label' => t('My custom bulk operation'),
 	'configurable' => FALSE,
 	'vbo_configurable' => FALSE,
	    ]
 ];
}

/**
* It provides a custom action for VBO views
*/
function action_callback(&$node, $context) {
 if (!empty($node) && $context['view_info']['name'] == 'vista_bulk_operation') {
   // Custom action for node
   $wrapper = entity_metadata_wrapper('node', $node);
	   $wrapper->title->set("My custom title");
	   $wrapper->save();
 }
}

Después de esto, es necesario borrar la caché de Drupal en la ruta 'admin/config/development/performance'.

Paso 2

Después de limpiar la caché, es necesario acceder a la vista donde queramos aplicar la operación en masa personalizada y añadir un campo de tipo “Bulk operations: Contenido”:

bulk_field.jpg

En la configuración del campo seleccionar la operación en masa personalizada con el nombre que le hemos dado en el código y que nos deberá aparecer ahí como tal:
 
select_bulk.jpg

Una vez seleccionada, es necesario guardar la vista. Al regresar a la visualización de la misma, podemos observar que en cada elemento aparece un checkbox para seleccionarlo, además de un formulario donde seleccionar las operaciones en masa a realizar para los elementos que hayamos marcado, que es donde aparecerá nuestra operación en masa personalizada:

bulk_operation.jpg

Una vez seleccionemos los elementos y pinchemos en Ejecutar, se realizará para cada nodo seleccionado la acción definida en el callback de la operación:

result_bulk.jpg

Nota: Existen más opciones para la definición de la operación, formularios de configuración, etc… que se pueden consultar en la dirección web adjunta en el apartado de referencias.

Requisitos generales.

  • Tener instalados los módulos Views, Views UI y Bulk Operations
  • El estilo de la vista tiene que ser de tipo campo (field)