Cambiar la "base table" de una view en Drupal 7

El otro día tuve la necesidad de modificar la tabla base de una vista para poder usar las tablas que nos proporcionan el modulo Search API y asi poder tener mas optimizado la vista, dado que iba a ser una vista con un motor de búsqueda avanzado.

Lo mas normal y lo primero que se me ocurrió fue tratar de replicar la vista desde el principio eligiendo la nueva tabla, El problema es, que la vista la creaba un modulo contrib y además, era una vista muy compleja con muchas relaciones.

Como estaba seguro que me iba a costar toda la tarde migrar esa vista decidí buscar otro método alternativo mas original y después de buscar un poquito encontré ese pequeño truco.

Pero antes de ver que va el truco vamos a entender un poco mas el problema, que es el "base table", para que sirve y todo eso.

Que es el "base table"?

A la hora de crear un vista una de las pocas cosas que nos preguntan en la primera página, aparte del nombre de la vista, es que seleccionemos que queremos "mostrar", si va a ser un nodo, una taxonomía... 

Aparecerán mas o menos dependiendo la cantidad de módulos que tengamos instalados.

lo que estamos seleccionando ahí, es básicamente la entidad vamos a usar, dado que cada entidad tiene una tabla independiente y cuenta con una serie de atributos que conforman la conforman, views necesita saber de donde y que información tiene que mostrar.

Lo mas normal es que usemos node o taxonomy que son las entidades mas usadas en drupal 7. Pero existe muchas mas y ya que views es un modulo para mostrar entidades esta información es vital.

No he logrado descifrar porque y/o como se puede modificar este valor una vez creada la vista, probablemente sea por seguridad para que no explote drupal mientras probamos cosas a lo loco.

Como cambiar el valor de "base_table"?

Como ya os mencionaba anteriormente esto parece ser imposible cambiar, es decir, una vez creamos la vista ya no hay marcha atrás, pero no os lamentéis, drupal siempre tiene trucos ocultos.

lo que si que tenéis que tener claro es que vais a tener que crear otra vista si o si, pero no hace falta que nos peguemos todo el trabajo de creación de la vista.

Lo primero que vamos hacer es abrir la vista que queramos modificar y nos iremos a "exportar vista".

Una vez hacemos click en exportar nos saldrá una texto largo con cantidad de información de la vista que tenemos que copiar e importar. Pero antes realizaremos un pequeño cambio.

Al principio de la vista encontraremos esto:

$view = new view();
$view->name = 'questions';
$view->description = '';
$view->tag = 'answers, answers_best_answer, answers_voting';
$view->base_table = 'node'; // Esta sera la linea que cambiaremos
$view->human_name = 'Questions';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
En el código anterior vemos que:
$view->base_table = 'node'
Lo que haremos sera cambiar este valor por la entidad que necesitemos, en este ejemplo lo modificare para usar taxonomías.
$view->base_table = 'taxonomy_term_data'
De esta forma copiaremos todo el código con esta modificación y lo importaremos en otra visa.
 
Realizar una copia de seguridad antes de importar la vista por si acaso vuestro drupal dejase de funcionar.
 
Y volia, ya habremos modificado la entidad.
 
Tened en cuenta que si esto no se puede cambiar tan a la ligera es por algo, así que no pretendáis cambiar de nodo a comentarios por ejemplo porque probablemente os explote todo.
 
Si os ha gustado no olvidéis compartir!
 
Total de votos: 112

Entradas relacionadas

Comentarios (0)

Deja un comentario