Drupal

Drupal
Información sobre la plantilla
Parte de la familia Sistemas de Gestión de Contenido
Drupal logo.jpg
CMS de código abierto y multiplataforma
CreadorDries Buytaert
Fecha de Creación15 de enero de 2001
Última versión estable9.0.0 (3 de junio, 2020)[1]
Sistemas Operativos compatiblesLinux, Windows, Mac OS, Solaris, BSD
IdiomaMultilenguaje[2]
LicenciaGNU/GPL
Sitio web
Sitio oficial de Drupal

Drupal es un sistema de gestión de contenido modular y muy configurable.
Es un programa de código abierto, con licencia GNU/GPL, escrito en PHP, desarrollado y mantenido por una activa comunidad de usuarios. Destaca por la cálidad de su código y de las páginas generadas, el respeto de los estándares de la web, y un énfasis especial en la usabilidad y consistencia de todo el sistema.
El diseño de Drupal es especialmente idóneo para construir y gestionar comunidades en Internet. No obstante, su flexibilidad y adaptabilidad, así como la gran cantidad de módulos adicionales disponibles, hace que sea adecuado para realizar muchos tipos diferentes de sitios web.
El sitio principal de desarrollo y coordinación de Drupal es drupal.org, en el que participan activamente varios miles de usuarios de todo el mundo.

Historia

En el año 2000, las conexiones permanentes de Internet eran un premio para los estudiantes de la Universidad de Antwerp. Dries Buytaert y Hans Snijder configuraron un puente inalámbrico entre los dormitorios de estudiantes para compartir la conexión ADSL por módem de Hans entre ocho estudiantes. Mientras esto era una situación extremadamente lujuriosa en aquel tiempo, algo faltaba: no existía un medio para discutir o compartir cosas simples.

Esto inspiró a Dries a trabajar en un pequeño sitio de noticias, permitiendo al grupo de amigos dejarse notas acerca del estado de la red, anuncios sobre donde iban a cenar o para compartir algunas cosas.

El software no tuvo un nombre hasta el día después que Dries se marcho de la universidad tras la graduación. El grupo decidió poner el sitio en línea, mientras ellos permanecieron palpables, manteniendo notas de intereses compartidos y narrando memorias de su vida personal. Dries, mientras verificaba si el nombre dorp.org estaba libre, le puso al sitio “drop.org”. Dorp es la palabra holandesa para “aldea o pueblo”, la cual fue considerada la palabra que se ajustaba a la pequeña comunidad.

Una vez establecido drop.org en la web, su audiencia cambia y los miembros comenzaron a hablar sobre nuevas tecnologías web, como moderación, sindicación y autenticación distribuida. Drop.org lentamente cambió a un entorno de experimentación personal, manejado por las discusiones y flujos de ideas. Las discusiones acerca de las tecnologías web fueron probadas en el mismo drop.org como nuevas adiciones al software del sitio.

Luego, en enero de 2001, Dries decidió liberar el software tras drop.org como Drupal. El propósito era permitir a otros usar y extender la plataforma de experimentación para que más personas pudieran explorar nuevos caminos para el desarrollo.

El nombre Drupal, pronunciada “droo-puhl”, deriva de la pronunciación en inglés de la palabra holandesa “druppel”, que significa “gota”.

Requerimientos del sistema

  • Un servidor web que ejecute scripts PHP

Recomendado: Apache (también puede usarse XAMPP o WAMP) Opcional: IIS. Drupal está siendo desarrollado con compatibilidad con el IIS, y se ha reportado que funciona bien.

La versión de PHP a usar está en dependencia de la version de Drupal usada. Las versiones más antiguas pueden correr sobre PHP 4.0.6 o superior.
Extensión XML de PHP (para los módulos bloggerapi, drupal, jabber, ping). Esta extensión está habilitada por defecto en una instalación estandar de PHP; la versión de PHP de windows tiene soporte integrado para esta extensión.

  • Un servidor de base de datos soportado por PHP

Recomendado: MySQL
Opcional: alguna base de datos soportada por PEAR. Actualmente, solo PostgreSQL es activamente mantenida y soportada. Las experiencias con otras bases de datos son totalmente bienvenidas.

Características generales 

  • Ayuda on-line - Un robusto sistema de ayuda online y páginas de ayuda para los módulos del core, tanto para usuarios como para administradores.
  • Búsqueda - Todo el contenido en Drupal es totalmente indexado en tiempo real y se puede consultar en cualquier momento.
  • Código abierto - El código fuente de Drupal está libremente disponible bajo los términos de la licencia GNU/GPL. Al contrario de otros sistemas de 'blogs' o de gestión de contenido propietarios, es posible extender o adaptar Drupal según las necesidades.
  • Módulos - La comunidad de Drupal ha contribuido con muchos módulos que proporcionan funcionalidades como 'página de categorías', autenticación mediante jabber, mensajes privados, bookmarks, etc.
  • Personalización - Un robusto entorno de personalización está implementado en el núcleo de Drupal. Tanto el contenido como la presentación pueden ser individualizados de acuerdo las preferencias definidas por el usuario.
  • URLs amigables - Drupal usa el mod_rewrite de Apache para crear URLs que son manejables por los usuarios y los motores de búsqueda.

Gestión de usuarios

Autenticación de usuarios
Los usuarios se pueden registrar e iniciar sesión de forma local o utilizando un sistema de autenticación externo como Jabber, Blogger, LiveJournal o otro sitio Drupal. Para su uso en una intranet, Drupal se puede integrar con un servidor LDAP.

Permisos basados en roles
Los administradores de Drupal no tienen que establecer permisos para cada usuario. En lugar de eso, pueden asignar permisos a un 'rol' y agrupar los usuarios por roles.

Rendimiento y escalabilidad

Control de congestión
Drupal incorpora un mecanismo de control de congestión que permite habilitar y deshabilitar determinados módulos o bloques dependiendo de la carga del servidor. Este mecanismo es totalmente configurable y ajustable.

Sistema de caché 
El mecanismo de caché elimina consultas a la base de datos incrementando el rendimiento y reduciendo la carga del servidor.

Taxonomías

El sistema de taxonomías de Drupal es robusto y potente, el contenido se organiza en categorías que se arman a través del módulo taxonomías, el cual permite generar vocabularios controlados con términos que pueden ordenarse jerárquicamente y asociarse a un tipo de nodo en particular si hiciera falta. Se puede configurar que un nodo pueda ser clasificado bajo uno o múltiples términos de un vocabulario, flexibilidad que agradecemos quienes administramos sistemas de contenidos rígidos.

Tipos de contenido

Drupal introduce el concepto de nodo como sinónimo de tipos de contenido, cualquier recurso que se ingrese al sistema pasa a ser un nodo que puede ser variable e incluir artículos, historias, comentarios, encuestas, imágenes, libros colaborativos, reseñas, recetas, etcétera. Este nuevo concepto nos permite estandarizar la información asignándoles las mismas características a distintos tipos de objetos y la posibilidad de tener toda la información centralizada y a la vez catalogada.
La clasificación de los nodos es un tanto arbitraria y está al servicio de los usuarios/administradores de contenidos que pueden construir los que necesite.

Entrada de blog

Blogs o weblogs, son otros términos para un diario en línea. Es un lugar donde miembros de la comunidad pueden escribir sus propios pensamientos y no tienen que preocuparse si están en un tema específico en el sitio.

Página de libro

Las páginas de libro están designadas a ser parte de un libro colaborativo. Un ejemplo de libro colaborativo es la documentación de desarrollo de Drupal.

Comentarios

Los comentarios actualmente no son nodos, son un tipo de contenido especial. Los comentarios permiten a las personas comentar sobre un nodo que ha sido creado.

Foros

Los foros son un conjunto de nodos y sus comentarios. Son agrupados juntos, perteneciendo a un foro, asignándolos al nombre del foro, el cual es un término de la taxonomía. Esos nombres pueden ser agrupados en contenedores de foro, los cuales son otros términos, siendo hijos en un vocabulario jerárquico llamado foros, y configurados para ser aplicados solo a los nodos de tipo “foro”.

Página

Las páginas son nodos simples, típicamente usados para contenido estático que puede (pero no es requerido) ser vinculado a la barra de navegación principal.

Encuesta

Una encuesta es una pregunta de selección múltiple, la cual los usuarios pueden responder y ver respuestas de otros usuarios.

Historia

Las historias son páginas genéricas usadas comúnmente en los CMS. Generalmente son usadas para información que es relevante solo por un periodo de tiempo.

Tipos de nodos adicionales son provistos por módulos de los desarrolladores de la comunidad de Drupal.

Modularización

Si bien las características básicas de Drupal son suficientes como para lanzar un sitio completo, el core incluye: administración de usuarios, páginas, vocabulario, comentarios y sindicación. Su potencialidad reside en su estructura modular que permite ser extendida y personalizada a gusto y placer del administrador para distintas funciones por medio de módulos de fácil instalación. Entonces este multifacético CMS nos permitiría armar desde un blog personal hasta una intranet corporativa, pasando por bibliotecas digitales, wikis, sitios de e-commerce, álbumes de fotos y hasta recetas de cocina.

Los módulos son desarrollados por una gran comunidad que colabora para el crecimiento de esta herramienta. Algunos de los más destacados y que se pueden encontrar en la sección módulos de Drupal son:

  • Book Review: sirve para publicar reseñas de libros, como si fuera un nodo más, ya que provee campos específicos para esta tarea.
  • Captcha: añade al sistema de registro de usuarios una validación manual (copiar el código de una imagen distorsionada) para evitar el uso masivo por parte de robots, con fines inescrupulosos.
  • Daily: ofrece un nuevo tipo de nodo que sirve para mostrar tiras cómicas o frases diarias. El nodo está asociado a una fecha y esto permite su navegación a ediciones pasadas a través de un calendario.
  • E-Commerce: serie de módulos que permite crear una herramienta de e-business.
  • Font size: provee al usuario la funcionalidad de poder cambiar el tamaño de fuente usado mediante CSS y javascript.
  • Live Discussion: permite mostrar en una página un bloque con la lista de los comentarios recientes.
  • Organic groups: permite a los usuarios crear y administrar grupos de personas.
  • Photo album: permite mantener múltiples álbumes de fotos.
  • Project: herramienta de seguimiento de proyectos con notificaciones vía e-mail.
  • Recipe: módulo que permite el intercambio de recetas de cocina.
  • Scheduler: permite incorporar capacidades de publicación o despublicación automática para los distintos nodos.
  • Subscriptions: permite a los usuarios suscribirse para recibir notificaciones sobre nuevo contenido o actualizaciones en el sitio.
  • Syndication: permite centralizar en una página todos los RSS que genera Drupal.
  • Video: permite incluir videos en formato QuickTime en el sitio.
  • Workflow: Permite definir flujos de publicación personalizados. Librandonos asi del rígido flujo que la mayoría de los CMS “proposición - aprobación”. Esto se podría aprovechar por ejemplo para las traducciones, pudiera haber un estado del flujo de publicación donde se lleva a cabo la traducción a los idiomas soportados por especialistas, liberando así al autor original del articulo de tener que escribirlo en varios idiomas.

Los módulos más instalados son:

  • Wiews
  • CCK
  • Panels
  • Pathauto
  • Token

Módulos

Existen tres tipos de módulos de Drupal, llamadas las "3 C":

  • Core (núcleo): son los módulos provistos por Drupal al instalarse, algunos de ellos fueron contribuciones de la comunidad de Drupal que se incorporaron.
  • Contributed (contribuidos): son los módulos que son compartidos para la comunidad de Drupal, están bajo GNU de Licencia Pública (GPL).
  • Custom (personalizados): son los módulos creados por el desarrollador del sitio.[3]

En Drupal se pueden ampliar sus funcionalidades mediante extensiones llamadas módulos programados por su comunidad de usuarios. Entre los más importantes[4] que no están incluidos en la distribución oficial, se pueden destacar:[5]

  • Views
  • Content Construction Kit (CCK)
  • Token
  • Pathauto
  • FileField
  • Administration menu
  • ImageField
  • ImageAPI
  • ImageCache
  • WYSIWYG

Conceptos generales de Drupal

Módulo

El módulo (module) es un software que extiende las funcionalidades y/o características de Drupal. Viene con módulos precargados según la versión, a los cuales se les puede añadir los que se necesite según la funcionalidad que tenga el sitio.

Usuario, Permiso, Rol

Cada visitante del sitio que tenga ingreso al mismo o no (como visitante anónimo) es considerado un Usuario para Drupal. Se pueden definir los tipos de usuario desde el núcleo de Drupal en la parte de Perfil (profile) y los campos asociados a cada usuario. Los Usuarios anónimos tendrán el ID cero (0), mientras que los que se encuentran registrados el ID uno (1). A estos usuarios se les asignará los Permisos por medio de Roles, pudiendo crear diferentes tipos de roles además de los preestablecidos por defecto, para luego agregarle o quitarle permisos según la necesidad del sitio.

Nodo

El Nodo (node) es un término genérico para cada pieza de contenido del sitio. Algunos ejemplos de nodos pueden ser: páginas en libros, temas de discusión en foros, entradas en blogs, nuevos artículos, etc. Cada nodo será un tipo de contenido que tendrá un ID, un título, una fecha de creación, un autor, un cuerpo o body y otras propiedades, también según qué otros módulos se encuentre usando agregará más propiedades a cada nodo.

Comentario

El Comentario (comment) es otro tipo de contenido dentro de Drupal, ya que cada comentario es una pequeña pieza de contenido que un usuario envía a un nodo específico, por ejemplo, cada pieza de comentario dentro de una discusión en el foro.

Taxonomía

La Taxonomía (taxonomy) es el sistema mediante el cual Drupal clasifica el contenido y es uno de los módulos del núcleo de Drupal. Se pueden definir los vocabularios propios como grupos de términos de taxonomía. Cada tipo de vocabulario puede ser agregado como uno o más tipos de contenido y por ello, los nodos en el sitio pueden ser clasificados según agrupaciones en categorías, etiquetas o como cualquier cosa que se elija.

Base de datos

La información de Drupal depende de la base de datos, cada información se encuentra en una tabla dentro de la base de datos. Por ejemplo, la información básica de los Nodos se encuentra en la tabla de Node.

Path

Cuando se visita un sitio con Drupal, una parte de la dirección de URL es conocida como path. Es la información enviada por el navegador a la base de datos. Si se esta viendo la página http://drupal.org/node/16785 el path será "node/16785". Por defecto, luego de la instalación del sitio se proseguirá con "?q=". Pero con el sistema de URL limpias que se puede activar desde la administración se puede quitar ese atributo.

Plantilla

La Plantilla (theme) controlará cómo se visualizará el sitio, el diseño y los colores. Consiste en uno o más archivos en PHP que definen la salida HTML, con uno o más archivos en CSS definiendo las fuentes, colores y otros estilos.

Región, Bloque, Menú

Drupal se encuentra dividido en Regiones (regions) que pueden incluir la cabecera, el pie, las barras laterales, la sección principal de contenido. Los Bloques (blocks) es la información que se visualiza en las diferentes regiones, pudiendo tomar la forma de menús (como el menú de navegación) o visualizaciones de módulos (como los contenidos más vistos del foro) o información estática o dinámica que fue creada por un usuario (como eventos). Existen tres menús estándar en Drupal: Enlaces primarios, Enlaces secundarios y Menú de navegación. Los primarios y secundarios son construidos a criterio de los administradores y mostrados automáticamente. También se pueden crear menús personalizados mediante la creación de bloques.[6]

Funcionalidades

Drupal es un gestor de contenidos multipropósito que puede usarse para aplicaciones como por ejemplo:

  • Portales comunitarios
  • Foros de discusión
  • Sitios web corporativos
  • Aplicaciones de Intranet
  • Sitios personales o blogs
  • Aplicaciones de comercio electrónico
  • Directorio de recursos
  • Sitios de redes sociales

Novedades de la versión 7

Requerimientos mínimos del sistema

  • Base de datos: MySQL 5.0.15 o PostgreSQL 8.3
  • PHP Versión: 5.2 o superior
  • PHP Memoria: 40 MB - 64 MB

En cuanto a la seguridad se reformaron las tareas programadas como el "cron.php", el ingreso como usuario y el sistema de contraseñas, también la actualización de los módulos. Se agregaron más tareas administrativas desplegables, las tareas programadas del Cron se realizan desde la administración sin necesidad de scripts en el servidor web, se rediseñó la fortaleza de la contraseña entre otras cuestiones.

En la base de datos se agregó los INSERT, UPDATE, DELETE, MERGE, y SELECT y se agregó soporte para las bases de datos SQLite. Se incluye la ayuda de las aplicaciones dentro del núcleo de Drupal. Se eliminaron las plantillas de "Bluemarine", "Chameleon" y "Pushbutton" y se incorporan las nuevas llamadas "Bartik" para la vista de usuario, "Seven" para la administración y "Stark".

Se actualiza el núcleo de JavaScript a jQuery versión 1.4.2 y también actualiza la librería de jQuery a la versión 2.36 y se añade jQuery UI 1.8.[7]

Novedades de la versión 8

En Drupal 8 se ha mejorado la edición de contenidos mediante la utilización de diferentes técnicas:

  • WYSIWYG in Core: Incluye la edición de textos WYSIWYG por defecto en el core, sin necesidad de incorporar ningún módulo adiccional.
  • Edición en línea: Esta mejora nos permite editar la web directamente, sin tener que pasar por la pantalla de edición.
  • Mejoras en el formulario de edición: Incorporando las opciones en la columna izquierda, así como otros botones muy útiles como el de guardar y publicar.
  • Previsualización real: Drupal 7 tenía incorporado un sistema de previsualización que no nos mostraba la realidad del nodo una vez editado. Esto se ha solucionado en Drupal 8, como podéis ver en la siguiente imagen.
  • Drupal 8 es responsive de serie, mejorando así la experiencia de usuario. Todos los temas del nucleo son responsive, y el módulo Picture permite usar imagenes responsive de HTML5. Además con el módulo breakpoint podemos controlar los puntos de corte, así como tablas responsive. La barra de navegación es responsive, oculta los textos al verse en pantallas pequeñas y la segunda barra pasa de ser horizontal a vertical.

Eficiencia y Rendimiento

  • Se ha trabajado duro en mejorar la eficiencia en el navegador. El 80% del tiempo que tarda una Web en presentarse son cálculos que se realizan en el cliente. Se está haciendo un gran esfuerzo en mejorar esto.

Todas estas mejoras hacen que el uso de Drupal 8 por parte de los editores sea mucho más agradable y eficaz, solucionando problemas recurrentes en versiones anteriores de Drupal.

Novedades de la versión 9

Drupal 9 trae las mismas características que la última versión minoritaria de Drupal 8 (Drupal 8.9.0 según lo planificado) pero con las actualizaciones de las dependencias a sus versiones soportadas y la eliminación del código obsoleto.

El beneficio clave de Drupal 9 sobre Drupal 8 es que la plataforma será compatible con las actualizaciones de seguridad que salgan después de noviembre de 2021.

Estas son las principales dependencias actualizadas de Drupal 9 respecto a Drupal 8:

  • Symfony 3 a Symfony 4.4: Es la dependencia más importante y la fecha de salida de Drupal 9 dependía principalmente de esta actualización. Con esta novedad se incrementa la versión necesaria de PHP a la versión 7.3 lo que mejora la estabilidad y la seguridad.
  • Twig 1 a Twig 2: Drupal 8 dependía de Twig 1 ya que en el momento de su lanzamiento Twig 2 no estaba disponible, en este momento Twig 2 es la versión estable del proyecto por lo que se ha decidido incluirlo en Drupal 9.
  • CKeditor 4: Actualmente el soporte de seguridad de CKeditor 4 coincide con el soporte de Drupal 9, por lo tanto se mantendrá en la fecha de salida de Drupal 9, se actualizará durante las próximas versiones de Drupal 9 a CKeditor 5 y se marcará como obsoleto para ser eliminado en Drupal 10.
  • jQuery y jQuery UI: jQuery seguirá siendo una dependencia de Drupal 9 y la mayoría de los componentes de jQuery UI han sido eliminados debido a que han llegado a fin de su tiempo de vida.
  • PHPUnit: Durante el desarrollo de Drupal 8 se ha hecho obsoleto el sistema para realizar las pruebas SimpleTest en favor de PHPUnit. Drupal 9 viene con el soporte para realizar las pruebas con el sistema de pruebas unitarias PHPUnit 8 y con la idea de actualizar a PHPUnit 9 durante las próximas versiones de Drupal 9.
  • Doctrine: Se ha eliminado como dependencia y se han incluido las partes de código necesarias directamente en el núcleo de Drupal 9.
  • Bases de datos: Será necesario disponer de unas versiones de backend de base de datos compatibles con Drupal 9 más recientes. MySQL/Percona >= 5.7.8, MariaDB 10.3.7, SQLite 3.26 y PostgreSQL 10 con la extensión pg_trgm.
  • Drush: La versión compatible con Drupal 9 será Drush 10.[8]

Enlaces externos

Referencias

Fuentes