Como incluir vistas en nuestros módulos Drupal 7

Author Top
enzo

Como ya he remarcado antes el modulo de Views es una parte fundamental de Drupal y cuando desarrollamos nuestros modulos una parte muy importante es poder hacer que nuestros módulos incluyan vistas que representen alguna lógica de nuestro modulo.

Una forma de hacer esta labor es por medio del modulo Features lo cual funciona, pero a mi gusto le agrega una complejidad innecesaria a nuestro modulo si solo lo incluimos para que nuestro modulo cree vistas. Por eso les voy a mostrar una forma simple de realizar esta labor.

1. Incluir dependencias.

Como lo que necesitamos es incluir vistas en nuestro modulo, debemos informar al sistema que nuestro modulo requiere el modulo de views, para esto agregaremos la dependencia en el archivo .info del modulo como vemos a continuación.

name = MIMODULO
description = "MIMODULO con vistas"
core = 7.x
dependencies[] = views
dependencies[] = views_ui

2. Indicar version Views API.

Debemos también implementar el hook hook_views_api() el cual registra la version de View API que implementa nuestro modulo, sin esta implementación ningún elemento de Views que deseemos implementar funcionar, veamos un ejemplo de esta implementación.

/**
 * Implements hook_views_api().
 */
function MIMODULO_views_api($module = NULL, $api = NULL) {
  return array("api" => "3.0");
}

3. Exportar vista.

Luego de crear la vista conforme la necesitemos en nuestro modulo debemos exportar la vista utilizando la opción disponible en el proceso de edición de la vista como se muestra la siguiente imagen.

La salida de la exportación sera código PHP similar al siguiente listado.

$view = new view();
$view->name = 'admin_views_node';
$view->description = 'Find and manage content.';
$view->tag = 'admin';
$view->base_table = 'node';
$view->human_name = 'Administration: Nodes';
$view->core = 0;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

....
....
....

Este código lo utilizaremos en la siguiente sección.

4. Incluir vista en modulo.

Para finalizar debemos crear un archivo cuyo nombre debe tener el siguiente formato para que sea procesado por el módulo de views: (module_name).views_default.inc, dentro de este archivo debemos implementar el hook hook_views_default_views() que nos permite definir las vistas que deseamos que nuestro modulo cargue.

Vemos la siguiente implementación.

<?php
/**
 * @file
 * MIMODULO.views_default.inc
 */

/**
 * Implements hook_views_default_views().
 */
function MIMODULO_views_default_views() {
  $export = array();

  $view = new view();
  $view->name = 'admin_views_node';
  $view->description = 'Find and manage content.';
  $view->tag = 'admin';
  $view->base_table = 'node';
  $view->human_name = 'Administration: Nodes';
  $view->core = 0;
  $view->api_version = '3.0';
  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
  ....
  ....
  ....
  
  $export['mivista'] = $view;

  return $export;
}

Como se puede ver el arreglo $export puede contente en cada indice del arreglo cada vista que deseemos implementar, si deseamos actualizar la vista solo debemos usar el View UI para implementar los cambio a la vista y luego exportar nuevamente y remplazar el código en nuestro archivo de views_default.

Espero que haya sido de su agrado.