
Drupal 7: Creando un bloque con Views y Entity Reference
El concepto de entidad es algo que ya no es nuevo para nosotros, mucho hemos escrito ya sobre entidades y es que esta manera de trabajar o este “concepto” hace que nuestra vida sea mas feliz.
Aunque el echo de trabajar con entidades trae muchos beneficios en si, hoy nos pararemos en algo que seguro muchos ya hemos trabajado, las relaciones entre entidades.
Estoy seguro que muchos de vosotros, alguna vez, habéis relacionado nodos entre si mediante el entity reference y seguro que en alguna ocasión habéis querido mostrar que nodos o entidades tienen las mismas referencias que el nodo o entidad que se esta mostrando en ese momento.
Bien, pues hoy veremos como con views y con una serie de sencillas configuraciones en cuestión de minutos podemos tener esta información
CREAMOS LA VISTA
El primer paso es sin duda el mas sencillo, crearemos una vista de la forma que hemos echo siempre y seleccionaremos los campos que queramos mostrar.
AÑADIMOS LAS RELACIONES
Aquí es donde tenéis que prestar toda la atención, porque es donde reside la magia o el “truco” de este ejercicio.
Hemos de añadir dos relaciones o “relationships”, dependiendo en que idioma tengáis vuestro drupal y añadimos lo siguiente:
1- Entity Referenced: Referenced Entity
2- Entity Referencing: Referencing Entity


Exactamente, no entiendo porque hay que crear una relación de las relaciones, pero por eso lo llamo magia!
No olvidar marcar “Require this relationship” en ambas
Y por supuesto, en la segunda relación “Entity Referencing…” diremos que tiene relacionado “Entity Referenced…” es muy importante este orden y estas relaciones o no funcionará
AÑADIMOS LOS FILTROS CONTEXTUALES
Para que la vista sepa de donde tiene que sacar la información la cual tiene que comprar le diremos que escoja el nodo que se esta visualizando.
Esto es tan sencillo como irnos a “contextual filter” y en el apartado “When the filter value is NOT available” escogeremos “provide default value” y seleccionaremos “Content ID from url”. No olvideis exigir la relación “content referencing”.

ojo! la segunda de las dos relaciones que hicimos anteriormente
ELIMINAR EL NODO VISUALIZADO
El probable que queráis que NO se muestre el nodo que estáis visualizando en ese momento para que se muestren solamente los otros.
Pues para esto repetiremos la opción anterior pero atención, esta vez no exigiremos ninguna relación y al final del cuadro de dialogo en “more” seleccionaremos “exclude”


ELIMINAR REPETIDOS
Llegados a este punto, veréis que empieza a salir una lista que se acerca a lo que estamos buscando, pero es probable que si habéis permitido mas de una relación, os salgan nodos duplicados.
Para eliminar estos duplicado únicamente tendremos que ir a “query settings” que esta en el lateral derecho abajo de la vista y seleccionar “Distinct”

GUARDAR Y PROBAR
Y esto es todo, simplemente tendremos que guardar nuestro bloque y situarlo en nuestra plantilla. Ojo que solo funcionara si el nodo donde se muestra el bloque tiene algún tipo de entidad relacionada.
Aunque esto es un poco de magia, me surge la duda de que pasaría si hubiera varios campos de entidades relacionadas, por cual de ellos filtraría? hummm.. es una gran pregunta y si tengo tiempo prometo responderla!
Espero que os haya gustado y no olvidéis comentar y compartir sobre todo si os atascáis en algún paso del tutorial.
Referencia e imagenes de: ericgilbertsen.com
Comentarios (7)
Maria Eva (no verificado)
admin
Maria Eva Brizu...
reparación orde... (no verificado)
reparación orde... (no verificado)
admin
Pepe (no verificado)