Nodos y tipos de contenido son los conceptos que se mencionan con más frecuencia cuando se está empezando a aprender Drupal. En algunas ocasiones se usan de forma indistinta, pero representan diferentes conceptos. Veamos sus diferencias y cómo se relacionan entre ellos. Aprenderemos atributos que todos los nodos comparten, cómo los tipos de contenido proveen valores por defecto y cómo los tipos de contenido sirven de plantilla para recolectar diferentes tipos de información.
Definiciones
Un nodo es un contenedor de información que puede contar una historia por sí mismo. Por ejemplo, si estás describiendo tu primer vehículo puedes decir que fue un Toyota Yaris de 2011 que operaba con gasolina y su placa era M1Q-2TY. Esta información se puede almacenar en un nodo dentro de Drupal. Toma en cuenta que estás describiendo un vehículo en específico el cuál es distinto al vehículo de alguien más. Tal vez el primer vehículo de tu padre fue un Dodge Ram del de 1971 que operaba con diesel y su placa era P80-1SN. Cada vehículo en particular se almacenará en un nodo diferente en Drupal. De forma similar, cada motocicleta, evento, blog post, etc. en tu sitio web será su propio nodo.
Como podrás imaginar, un vehículo y una motocicleta son objetos muy diferentes con propiedades distintivas y únicas. Por ejemplo, un vehículo tiene puertas y ventanas mientras que las motocicletas no. Aquí es cuando los tipos de contenido entran en juego. Un tipo de contenido es una plantilla para recolectar información de diferentes tipos de objetos o ideas. Estos pueden ser tangibles como un vehículo o intangibles como un evento. El tipo de contenido va a detallar qué información se va a recolectar en cada caso. Para un vehículo, esto puede incluir el año, marca, modelo, tipo de combustible, placa, número de ventanas y número de puertas. Para un evento esto puede ser la fecha, lugar, precio, y cupo de personas.
Es importante entender que un tipo de contenido es la plantilla y un nodo es la instancia específica. Por tanto, cada nodo es de un tipo de contenido particular y cada tipo de contenido puede tener múltiples nodos asociados con él. No es recomendable tener un tipo de contenido que sólo tienen uno o dos nodos de su tipo. Cuando algo como esto puede pasar considera crear un único tipo de contenido para almacenar elementos similares. Luego, usa un atributo específico (un campo de Drupal) como parte de la plantilla para hacer la distinción entre dichos nodos. La razón para hacer esto es reducir las tareas de mantenimiento en sitio Drupal. Por ejemplo, por cada tipo de contenido debes configurar permisos por roles. Imagina que tienes 10 permisos por tipo de contenido y 5 roles en tu sitio web. Si el número de tipos de contenido aumenta de 4 a 7 los permisos que debes configurar aumentarán de 200 a 350. Por supuesto, sólo tú sabes el modelo de contenido que se requiere en tu sitio web así que crea cuantos tipos de contenido sean necesarios.
Atributos que todos los nodos comparten
Todos los nodos en Drupal sin importar su tipo de contenido tendrán ciertos atributos en común. La siguiente lista no es completa, pero incluye algunos de los atributos más importantes:
- Título: siempre es requerido.
- ID del nodo (nid): Es un identificador numérico que Drupal usa internamente para diferenciar entre nodos. El primero tendrá el ID de nodo 1 y este número se incrementará en 1 cada vez que un nuevo nodo es creado. Una vez establecido este número no cambia. Borrar un nodo que su nid esté disponible para usos futuros.
- Alias de url: Se puede tener acceso a cada nodo en un sitio Drupal añadiendo /node/[nid] al dominio del sitio. Sin embargo, las personas recuerdan con mayor facilidad frases en lugar de números. Imagina que alguien te dice que leas un blog post en /node/491827. No sería más fácil recordar algo como /blog/introduccion-a-vistas-en-Drupal? En mi humilde opinión, lo segundo es más fácil de recordar. Eso es un alias de URL: un texto que puedes establecer como alternativa para tener acceso a un nodo. El alias de URL es opcional y aunque se haya establecido el nodo seguirá estando disponible en la ruta /node/[nid]. Usando módulos como Pathauto se pueden definir reglas para crear alias de URL para no que debas escribirlos manualmente en cada ocasión.
- Estado de publicación: esto es un valor ‘sí’ o ‘no’ (booleano) que indica si un nodo está disponible al público en general o no. Puedes empezar a crear un blog post, pero quizás necesitas revisar algunas fuentes antes de publicarlo. En logar de perder tu progreso, puedes guardar el nodo como un borrador (no publicado) haciendo que sólo esté disponible para ciertos usuarios privilegiados. Luego puedes visitar el nodo y, cuando esté listo, guardarlos como publicado haciendo que esté disponible para todos.
- Tipo: este es el tipo de contenido el nodo pertenece a. Por ejemplo: página básica, artículo, vehículo, evento, etc.
- Autor y tiempo de publicación: Quién creó el nodo y cuándo (fecha y hora) se publicó. Si la revisión de contenido está habilitada para el tipo de contenido entonces Drupal llevará registro de quién y cuándo se hizo cada modificación del nodo. La revisión de contenido se explicará en otro blog post.
- Configuración de menú: determina si este nodo debe incluirse en un menú, por ejemplo, aparecer en la navegación principal del sitio. Imagina tener un nodo con información general acerca de tu organización teniendo un enlace “Sobre nosotros” en la navegación principal.
Recuerda que los nodos son creados dentro de la plantilla que provee un tipo de contenido. Por tanto, el tipo de contenido puede establecer valores por defecto para todos los nodos creados de un tipo en particular. Por ejemplo, todos los blog posts se guardan como borrados por defecto asumiendo que deben ser revisados por alguien más antes de ser publicados. O, nodos de tipo blog post no pueden ser agregados a menús porque no quieres que un blog post en particular aparezca en la navegación principal. En lugar de eso, puedes crear un elemento de menú especial que lista todos los blog posts en tu sitio web. Toma en cuenta que dependiendo de los permisos de usuarios, estos valores por defecto pueden sobrescribirse o no así que es importante los permisos correctamente.
Atributos específicos por tipo de contenido
Como un tipo de contenido sirve como plantilla para recolectar información, cada uno puede establecer diferentes atributos a recolectar para nodos de su tipo. Estos atributos específicos por tipo de contenido en Drupal son llamados campos. Estos serán explicados en detalle en un blog post futuro. Por ahora, considera los siguientes ejemplos:
- Tipo de contenido vehículo con campos: año, marca, modelo, tipo de combustible, número de ventanas y número de puertas.
- Tipo de contenido evento con campos: fecha, lugar, precio y cupo de personas.
- Tipo de contenido blog post con campos: imagen, cuerpo y categoría.
En una configuración de Drupal por defecto usando el perfil de instalación estándar se crean dos tipos de contenido: Página básica y Artículo. Cuando se crea un nodo de tipo Página básica sólo puedes ingresar el título y el cuerpo. Por el contrario, cuando se crea un nodo de tipo Artículo adicionalmente puedes establecer una imagen y etiquetas. Esto es porque el tipo de contenido Artículo define dos campos extra: imagen y etiquetas. Cabe destacar también que por defecto los artículos aparecen en la página de inicio y las páginas básicas no. Esto es porque el tipo de contenido artículo por defecto establece el atributo “Promovido a la página de inicio” como ‘sí’ mientras que el tipo de contenido Página básica lo establece como ‘no’. Hoy en día el uso de este atributo de los nodos es poco frecuente porque hay muchos mecanismos para obtener el mismo resultado, pero ten en cuenta que existe.
Nombrar cosas es complicado
Para terminar este blog post veamos algunos sinónimos de las palabras “nodos” y “tipos de contenido” que Drupal usa en su interfaz de usuario y en el código.
- “Contenido” es sinónimo de “nodos“. Esto es particularmente común en la interfaz de Vistas. Si cuando creas una vista eliges mostrar “Contenido” eso hace que la vista muestre “nodos”.
- “Bundle” es un sinónimo de “tipo de contenido“. Técnicamente, los tipos de contenido son los “bundles de la entidad nodo”. Posponiendo la discusión sobre entidades para un blog post futuro, es importante recordar que cuando hablamos de nodos el bundle hace referencia al tipo de contenido. Por ejemplo, cuando tienes un campo de entidad referenciada cuando tienes el “target bundle” configurado a “Artículo”. Esto significa que este campo sólo puede apuntar nodos del tipo de contenido “Artículo”.
Cuando se aprende una nueva tecnología, es importante entender los bloques de construcción básicos. Para drupal, nodos y tipos de contenido son conceptos que necesitas entender desde el principio. ¿Hay otras cosas sobre nodos y tipos de contenidos que consideras es importante saber? Favor compártelas en los comentarios.