Drupal como Content Management Framework

drupalEstán muy de moda los CMS (Content Management System) tales como WordPress, Joomla y Jaws, entre otros, por la facilidad y extensibilidad que tienen mediante módulos, plugins, widgets, themes, templates, etc. Desde hace 8 meses mas o menos que estoy en un proyecto que involucra la creación de un sistema para una comunidad de cientificos, usando Drupal.

¿Por qué Drupal?

Drupal pretende ser mucho más que un gestor de contenidos, lo que busca ser es un gestor de comunidades, un framework para gestionar comunidades, lo que yo llamo CMF. Es extensible, permite la reutilización de código, utilización de templates/themes propios y muchas otras cosas.

¿Por qué NO WordPress, Joomla u otro CMS?

Un CMS, com su nombre lo dice, es un sistema gestor de contenidos, están más orientados a blogs o sitios que no implican una cantidad grande de usuarios y contenido y tipos de contenidos. Lo que yo necesitaba, era un framework para gestionar una comunidad.

¿Se entiende?

El sitio en el que estoy trabajando tiene más de mil usuarios y tiene una cantidad enorme de contenido que se va generando día a día, para esto es necesario algo que me permita gestionarlo y que tenga gran parte del código desarrollado, es decir, que existan plugins o módulos ya hechos y que sólo haga falta modificarlos o adaptarlos a lo que necesitamos. Para Drupal encontramos una serie como por ejemplo el conocido OG:

Organic Groups: Enable users to create and manage their own ‘groups’. Each group can have subscribers, and maintains a group home page where subscribers communicate amongst themselves

Con esto tenemos la posibilidad de que los usuarios creen sus propios grupos, manejen sus suscripciones, creen noticias relacionadas al grupo, privadas o públicas, administración y moderación de grupos, etc.
Tambien es posible crear perfiles personalizados para cada usuario usando el módulo ContentProfile:

Content Profile: is module builds user profiles as content (aka nodes), which opens the opportunity to use all the powerful modules for content for user profiles too, e.g. the Content Construction Kit (CCK).

La creación de módulos propios es bien sencilla, sólo hay que entender cómo trabaja los templates, páginas, nodos, etc. La tarea de creación de módulos se facilita bastante gracias a los hooks, con esto es posible modificar comportamientos de otros módulos (contrib y propios del sistema) y lograr tener un control casi completo del sistema. La idea es, por ningun motivo, tocar el core de Drupal, de lo contrario será muy difícil la mantención del sistema (actualizaciones, etc).
Drupal tambien nos provee de una API, muy completa, la cual podemos trabajar usando las funcionalidades y bondades de Drupal sin tener que usar Drupal –valga la redundancia-. Por ejemplo, hace unos meses tuve que usar sólo el módulo “forum” de Drupal para integrarlo con un sitio que ya estaba desarrollado, ajeno a Drupal. Tambien es muy útil cuando se necesita hacer migración de usuarios y/o contenido de una plataforma a otra. Para usar la API sólo necesitamos descargar el código fuente y tener las siguientes líneas:

  1. include_once ‘api/includes/bootstrap.inc’;
  2. drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

(siendo el directorio api dónde tenemos el código fuente de Drupal)

Y listo, ya podemos usar todas las funciones o métodos, variables, constantes, etc.

La versión estable actual de Drupal es la 6, se está trabajando en la 7 que será orientada a objetos. El problema de esto, es que cada vez que se lanza una version nueva (4→5, 5→6, 6→7), los desarrolladores deben volver a programar sus módulos, ya que Drupal no tiene compatibilidad retroactiva.

Links:

Drupal Modules: Repositorio muy completo con distintos módulos para distintas versiones de Drupal .
Documentación de la API

Lectura recomendada:

images

2 comentarios

  1. Drupal es simplemente un lujo.
    Lo utilicé hace un tiempo para hacer algunas pruebas e incluso llegué a desarrollar un módulo y la verdad que me dejó muy contento.
    Es muy personalizable, crear módulos es muy simple, el código está bien estructurado, cosa que cualquiera puede entenderlo, y permite fina granularidad a la hora de setear permisos sobre quién puede hacer qué.

  2. Muy bien.

    Solo un detalle: Haz notado la estupidez del término “CMS” o “Content Management System”.

    Te traduzco la parte relevante de http://www.gnu.org/philosophy/words-to-avoid.html#Content:

    El término “Manejador de contenido” se lleva el premio por su vacío significado. “Contenido” significa “Algún tipo de información” mientras que “manejar”, en éste contexto significa “hacer algo con él” así que un “Content Management System”/”Sistema de manejo de contenido” es un sistema para hacer algo con algún tipo de información. Prácticamente todos los programas encajan en ésta descripción.

    Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.