Que es una entidad en Drupal

Dos tipos de entidades en Drupal

Hablar de entidades en Drupal, es algo que puede confundir a los recién llegados, además, es algo que, en la documentación oficial, esta explicado solo de cara al desarrollador, y una persona nueva que no se dedique al desarrollo, seguramente no lo llegue a entender.

Personalmente, no considero realmente necesario para quien se encarga de site building (es decir, no toca el código), saber que es una entidad en Drupal hasta que se vaya a tocar código, pero por si acaso alguien tiene dudas, aquí va el artículo.

¿Qué es una entidad?

En esencia, es una estructura de datos compleja con un funcionamiento concreto; además existen de 2 tipos, entidades de contenido, y entidades de configuración.

 

 

Entidades de contenido:

Estas se encargan de gestionar todo lo que el usuario es capaz de ver, y cada entidad de contenido, dispone de mínimo una tabla en la base de datos. Las entidades de contenido, a diferencia de las de configuración se les pueden añadir campos para poder guardar mas información; son accesibles a través de la url, por ejemplo, los nodos gestionan el contenido que el usuario puede ver y pueden ser accesibles a través de /node/1 para el nodo 1; al igual que los usuarios, los cuales se pueden ver con /user/1 para el usuario 1.

Veamos 2 entidades de contenido disponibles en Drupal para ver las diferencias.

Nodos:

Los nodos, son el tipo de entidad que se utiliza para la gestión del contenido, almacenan cierta información necesaria para la gestión del contenido, como la fecha de creación, el autor del contenido, si esta publicado o no, el idioma… Podemos ver la clase que la getiona en core/modules/node/src/Entity/Node.php y las tablas de la base de datos son "node" y "node_field_data".

Usuarios:

Esta entidad, como su nombre indica, gestiona los usuarios y su particularidad es que permite identificarse en el sitio, esta entidad almacena información como la contraseña, fecha de registro, roles de los usuarios… Como los nodos, ver la clase que la getiona en core/modules/user/src/Entity/User.php y las tablas de la base de datos son "users" y "users_field_data".

Ambas entidades, disponen de tablas en la base de datos, y cada una tiene un propósito, existen muchas entidades diferentes en Drupal, por ejemplo, los comentarios también son entidades, que se dedican a gestionar precisamente comentarios, o la entidad media, la cual se encarga de gestionar todo lo multimedia, como imágenes, videos o incluso tweets.

Entidades de configuración:

Estas son un poco más complejas de explicar y entender, ya que, a no ser que sepas lo que son o trabajes con condigo, ni te vas a dar cuenta que las estas utilizando.

Como las de contenido, también se encargan de definir una estructura de datos, pero la característica principal de estas entidades, es que pueden ser exportadas para mover configuraciones entre diferentes sitios webs.

Al contrario que las entidades de contenido, estas no son accesibles por los usuarios, y tampoco disponen de una tabla de la base de datos, todas las entidades de este tipo se almacenan en la misma tabla. Además, no disponen de una ID numérica para identificarlas como las de contenido ni se les pueden añadir campos para almacenar mas información.

Un ejemplo de entidad de configuración, podrían ser los tipos de contenido, por defecto están creados los tipos “Articulo” y “Página básica”, pues bien, esos dos tipos de contenido, están almacenados en una entidad de configuración.

Sus ID las podemos obtener de la URL, si editamos el tipo artículo, veremos en la url lo siguiente:

/admin/structure/types/manage/article

Pues bien, la ID de esa entidad de configuración, es “article”.

¿Que no es una entidad en Drupal?

Algo que puede confundir (y lo he oído), es que los campos son entidades de Drupal, porque también almacenan estructuras de información, pero esto no es asi, ya que las entidades se encargan de las estructuras complejas, los campos, al contrario, son plugins, los cuales se pueden utilizar para estructuras de datos simples y sin mucha lógica que las gestione.

Otros, como los registros de los logs o alias de las URL, tampoco son entidades, aunque tengan si propia tabla en la base de datos o una ID, pero son muy simples, y una entidad sería algo demasiado complejo para esa información.

Comparte este artículo:
Publicado por Borja
Image

Me metí en la aventura de Drupal con la versión 6, y aquí estoy, 10 años después, escribiendo articulos y haciendo videos sobre Drupal, quien me lo iba a decir. Aunque he probado otros framworks y cms, me quedo con Drupal de lejos, pero Symfony y Django estan entre mis favoritos. Aficionado a la montaña, la bicicleta, y el comer, de eso que no falte.