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”:
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:
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:
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)