Drupal: en mi opinión el mejor CMS en PHP

Existen bastantes páginas donde podemos encontrar comparativas y opiniones de diferentes CMS’s. La opinión que aquí expreso está basada en mis años de experiencia y me centraré en los 3 más populares desarrollados en PHP: Drupal, Joomla y WordPress. En Python me parece excelente Plone, aunque complejo, en .NET todavía no he conocido ninguno bueno pero en este artículo no hablaré de ellos.

WordPress fue concebido para los blogs pero hoy en día dispone de muchos plugins alguno de los cuales pretende que WordPress pueda ir más allá. Un ejemplo representativo es crear una tienda con WordPress y mediante un plugin añadirle la funcionalidad de e-commerce: he tenido que sufrir ese plugin y ver que simplemente WordPress no da la talla. Probablemente es el mejor CMS para gestionar blogs y sitios web muy estándar pero tiene carencias importantes sacado de ese contexto. Por supuesto eso no significa que no pueda salir del mundo de los blogs, pero hay CMS’s mejores para ello. Es el que hago servir para este sitio web y es realmente muy fácil, rápido y cómodo de mantener, así como también lo fue crearlo.

Joomla es uno de los CMS más populares. Su principal ventaja sobre Drupal es que es más rápido desarrollar un sitio, siempre y cuando sea un sitio web que no se aleje demasiado de aquello para lo que Joomla fue ideado. En otras palabras: cuando debemos personalizar y empezar a tocar el corazón para dotar al sitio de nuevas funcionalidades las cosas se complican sobremanera.

Cuando se quiere un sitio personalizado me parece que Drupal es ideal. No tan solo por la creación de diseños personalizados mediante temas (themes), como cualquier otro CMS, sino también por la capacidad de crear nuevas funcionalidades y modificar las existentes mediante “hooks” o “callbacks”. Los “hooks” nos permiten tanto la modificación del núcleo del CMS como la de los módulos sin tocar una sola línea del código original, lo que permite actualizar tanto el núcleo como los módulos sin que se pierdan las funcionalidades implementadas en los hooks. Y hablando de módulos, la cantidad de estos es ingente: desde módulos para hacer copias de seguridad de la base de datos hasta módulos para crear tipos de contenidos y campos personalizados pasando por módulos para optimizar el sitio para los motores de búsqueda, módulos para mostrar galerías de imágenes o vídeos, etc. Hay tantos módulos que no es muy frecuente que debamos desarrollar uno propio. La perfecta separación entre por un lado el núcleo del CMS y los módulos desarrollados por terceros y por el otro nuestras modificaciones hacen que un sitio en Drupal sea muy agradable de mantener, siempre y cuando en el desarrollo se haya respetado dicha separación.

Al hablar de las actualizaciones he tocado el tema de la seguridad y ahí Drupal también se sitúa mejor: la reputación de Joomla en lo que a seguridad se refiere no es muy buena.

Obviamente no todo son ventajas con Drupal. Su principal defecto es que el código sea un poco lo que en la jerga de los programadores llamamos “spaghetti code”. Drupal, al menos en su versión 6, no utiliza muchas de las características de orientación a objetos que proporciona PHP 5 aunque a cambio puede funcionar con PHP 4.4.0. Si miramos el código la primera impresión es que es procedimental: no encontraremos clases. Si bien esa herencia de la versión 4 de PHP ahora le pesa, en su diseño se incluyeron algunos de los principios de la orientación a objetos que lo mitigan parcialmente. Componentes como los módulos, temas, nodos y usuarios encajan en la descripción de objeto. Incluso se emuló la herencia, la abstracción, la encapsulación y el polimorfismo. Por otro lado, los usuarios menos avezados que tengan la tarea de administrar el sitio web pueden encontrar algunos aspectos del back-end difíciles de usar, por ejemplo he oído quejas sobre la dificultad del módulo vistas pero es también éste uno de los módulos más poderosos de Drupal y no es fácil simplificarlo manteniendo al mismo tiempo toda su potencia. Lo que sucede con dicho módulo es un buen resumen de la idea detrás de Drupal: muy configurable y versátil pero eso tiene un coste en su facilidad de uso.

Otra característica de Drupal, que no es positiva ni negativa a mi entender, es que no usa el hoy en día tan popular patrón MVC (Modelo Vista Controlador) sino el menos conocido PAC (Presentación Abstracción Control). (Aunque por ahí hay gente intentado hacer encajar Drupal en el patrón MVC). Que el patrón MVC sea el más popular no implica necesariamente que sea el mejor para la web, frecuentemente en el mundo de la informática lo más popular (léase usado) no es lo mejor pues hay otros factores que entran en juego, pero todo eso ya sería tema para muchos artículos 😉 y no tiene cabida en esta breve oda de Drupal.