Presentación utilizada en el Drupal Camp Centroamérica 2014; en esta presentación se muestran conceptos teóricos y básicos sobre el CMS Drupal y se muestran algunos aplicaciones web creadas por medio del CMS Drupal.
3. ¿Qué es un CMS (Content Management System)?
Es un sistema que permite crear, publicar, editar y modificar contenidos, organizar y borrar, todo, desde su
interfaz principal; estos a su vez proveen de un flujo de trabajo para un entorno de colaboración.
Actualmente los contenidos más desarrollados con estas herramientas son sitios web cuyo conteniendo(s) son:
• Blogs
• Noticias
• Sitios de compras
• Aplicaciones web
• Algún híbrido de las anteriores
• O lo que tu imaginación te permita.
¿Qué es Drupal?
Drupal es una plataforma de código abierto, para la creación y administración de contenidos con la que se han
desarrollado millones de sitios y aplicaciones web en todo el mundo. Una característica en común con los demás CMS
más populares, es la posibilidad de administrar los contenidos sin ningún tipo de conocimiento o habilidad de
programación.
4. Drupal es parecido a un juego de lego, en donde los
desarrolladores profesionales ya han creado los bloques
– como módulos contribuidos – que permiten crear y
ajustar un sitio web a las necesidades solicitadas por el
cliente o usuario.
Ventajas:
• Facilidad de integración
• Facilidad para alterar el comportamiento o
presentación del core y/o de los módulos
contribuidos.
Piensa en Drupal como un juego de Lego!!!
Desventajas:
• Invertir de tu tiempo para aprender a utilizarlo y
así poderlo integrar con las demás piezas antes
de crear un prototipo e implementarlo en tu
sitio web.
Imagen tomada de Drupal.org Flujo de la información en las distintas capas de Drupal.
5. Conceptos básico de Drupal
Entity types:
Son una abstracción útil para agrupar campos. Los
tipos de entidad son utilizados para almacenar y
mostrar información, los cuales pueden ser nodos,
comentarios, términos de taxonomías, perfiles de
usuario o algo desarrollado y personalizado.
Nodo (Contenido):
Un nodo es el término genérico para una pieza de
contenido en el sitio web. Dependiendo del tipo
de contenido, este puede tener adjunto un o más
campos y a esto se le conoce como tipo de contenido.
Imagen tomada de Drupal.org
6. Comentarios:
Los comentarios son otro tipo de identidad que puedes
tener en tu sitio web; estos son pequeñas piezas de
contenido que un usuario adjunta y envía a un nodo en
particular
Taxonomías:
Son un tipo de entidad que permite definir uno o más
vocabularios por el usuario y en ellos agrupar términos de
taxonomías; los cuales al momento de adjuntarlos a los
nodos permiten clasificarlos por categorías, etiquetas o
cualquier otro tipo de clasificación que desees.
Usuarios:
Son un tipo de entidad, el cual representa un usuario web
del mundo real. Por defecto un usuario tiene un conjunto
de propiedades (campos): nombre de usuario, contraseña,
role y una dirección de correo electrónico.
Regiones y bloques:
Las páginas en un sitio de Drupal están compuestas en
regiones. Estas pueden incluir las siguientes regiones
cabecera, pie de página, barras laterales y el contenido
principal; puedes definir regiones adicionales según tus
necesidades.
Los bloques son trozos discretos de información que se
mostraran en las regiones de la página del sitio web.
7. Tema:
La capa del tema se encuentra separada de la capa de
datos, de la capa de extensiones de funcionalidad
(módulos) y del core. El tema controla la apariencia (vista y
estilo) de tu sitio. Un tema consiste de uno o más archivos
de plantilla PHP que definen la salida HTML de la página,
junto con uno o mas hojas de estilo (CSS).
Imagen tomada de Drupal.org
8. Módulos:
Un módulo es software (código) que permite extender las
funcionalidades básicas del core de Drupal o de módulos
contribuidos; estos pueden caer en una de tres categorías:
• Módulos del core: Son módulos que vienen por
defecto al momento de descarga principal de
Drupal.
/drupal-install/modules
• Módulos contribuidos: Son módulos que se
descargan desde la sección de módulos del sitio de
Drupal.org estos tienen como funcionalidad
extender o proveer de nuevas funcionalidades al
core de Drupal.
/drupal-install/sites/all/modules
• Módulos personalizados: Son módulos que uno
crea y personaliza por su cuenta y por ende se
requiere de un conocimiento sobre Drupal, PHP y el
API de Drupal.
/drupal-install/sites/default/modules
9. Hooks:
Es una función PHP nombrada como foo_bar(), donde foo
es el nombre del módulo (cuyo nombre de archivo tiene la
forma foo.module) y bar es el nombre del hook. Cada hook
tiene definido un conjunto de parámetros y si aplica retorna
algún tipo de resultado.
Son funciones cuya implementación permiten sobrescribir o
extender el comportamiento de una función previamente
definida.
Ejemplos:
• template_preprocess_(node|page|html|views|etc)
• template_process_(node|page|html|views|etc)
La principal función de los preprocesadores descritos con
anterioridad, es definir y establecer variables para su
posterior uso dentro de los archivos .tpl.php; también son
utilizados para definir los template suggestions. La
implementación de estas funciones, deben hacerse dentro
del archivo template.php del tema.
• hook_theme() {}
• hook_menu() {}
• hook_entity_info() {}
• Hook_menu_alter() {}
• Hook_theme_alter() {}
Los hooks mencionados con anterioridad y otros existentes
deben implementarse en el archivo
module_name.module
Theme functions:
Son funciones predefinidas, las cuales despliegan como
resultado código HTML.
10. • theme_menu_link() {}
• theme_table() {}
• theme_list() {}
• theme_button() {}
Array Renderizables:
Son los componentes básicos de una página de Drupal,
estos son representados como un array asociativo
estandarizado y cuya estructura de datos es utilizado por
Drupal en el sistema de renderizado.
11. Drupal como navaja suiza en tu empresa
Actualmente son varios los tipos de implementación de un
proyecto en Drupal, ten en mente que el core en conjunto
con los módulos contribuidos, pueden ayudarte para
construir aplicaciones web complejas (más que un simple
sitio web) por ejemplo:
Es una herramienta completa para la administración de
proyectos para una pequeña y mediana empresa
proveedores de servicios contiene un pequeño ERP y CRM.
Es un software de colaboración de código libre, que permite
a la organización o empresa que lo utiliza, conectar de
forma segura los equipos de trabajo, proyectos y
conocimientos
Es un LMS (Learning Management System) de código
abierto; cuyo principal objetivo es ser extensible y
escalable.
Notas del editor
Data (Node, Terms, etc.): En la base del sistema se encuentran la colección de nodos - la piscina de datos. Antes de que cualquier cosa sea mostrada en el sitio, estos deben ser ingresados como datos.
Módulos: En la siguiente capa es donde residen los módulos del core y los módulos contribuidos; los cuales permite personalizar el sistema con funcionalidades y/o comportamientos extras, tales como:
Implementar un módulo para brindar la funcionalidd de un comercio electrónico.
Personalizar los campos en los tipos de nodo.
Etc.
Bloques y menús: En la tercera capa encontramos los bloques y menús. Los bloques pueden representar la salida de un módulo o pueden ser creados para mostrar cualquier otra cosa, éstos a diferencia de los nodos pueden ser colocados en cualquier región (dar una breve introducción de regiones) del tema. Menus: Son la forma de navegar en Drupal, se pueden definir varios menús en Drupal cada uno con sus respectivos enlaces (destacar que el módulo de menús pertenece al core de Drupal).
Permisos de usuario: En esta capa se establecen los permisos del usuario, permitiendo establecer que es lo que puede hacer y observar. Los permisos son establecidos a los roles y los usuarios son asignados a éstos últimos.
Template: En la sima tenemos los temas, se caracterizan por que predomina el XHTML y el CSS, con algo de código PHP (específicamente variables), - hacer énfasis sobre la separación de la lógica del sistema de la presentación -