2. ¿Qué es Drupal?
● Drupal es un CMS - CMF (respuesta rápida)
● Drupal es meta tool, una herramienta para
crear herramientas de administración de
contenido web.
● Drupal es una comunidad.
● Creado en el año 2000 por Dries Buytaert y
liberado con licencia GPL el año 2001.
3. Conceptos Drupal
● Entidades: Tipos de objetos a los que podemos
●
●
●
●
asociar campos
○ Los nodos(contenidos) , usuarios, taxonomías,
archivos y comentarios son entidades del núcleo.
Bloques: Trozos de contenido o código con distintas
funcionalidades se pueden colocar en cualquier región
del tema.
Menús: Grupo de enlaces que permiten acceso a
páginas o regiones de estas.
Temas: Permiten cambiar el aspecto gráfico.
Módulos: Añaden funcionalidad al core. Drupal es un
sistema modular que entrelaza funcionalidades
4. The Drupal Way
● Antes de intentar crear código propio:
○ Busca solucionar usando módulos populares en lo
posible.
○ Busca solucionar usando módulos que extiendan
módulos populares en vez que módulos aislados.
● Si es necesario que crees código propio
compártelo con la comunidad.
5. Módulos básicos
Busca antes de intentar programar...
● Views.- Permite sacar vistas de los contenidos.
● Panels.- Flexibilidad para la disposición de
●
elementos.
Rules.- Acciones y grupos condicionadas por
eventos.
Flag.- Marcado de contenidos.
Display Suite.- Modificar la presentación.
Pathauto.- Generación de alias de url/path
●
●
●
.... muchos más
Los módulos contribuidos se han desarrollado gracias a la
6. Módulos útiles para el desarrollo
● Devel.- Facilita la tareas de programación y
trae utilidades de administración.
● Coder.- Ayuda a seguir los estándares de
codificación Drupal.
● Admin_menu.- Permite acceder a todas las
opciones del menú de administración
rápidamente.
● Module_filter.- Un mejor listado de
módulos.
● Examples.- Ejemplos de código de las APIs
7. Entorno de desarrollo
Drupal es preferente de LAMP
Sistema Operativo: Linux, Windows, Mac_OS, ...
Servidor web: Apache, AOLServer, IIS, Tomcat, ...
DBMS: Mysql, MariaBD, postgresSQL, ...
Lenguaje: Php.
Editores: Eclipse, Netbeans, Vim, Vi, Emacs, ...
Control de Versiones: GIT, SVN
Drush: Línea de comandos para Drupal.
8. Arquitectura de Drupal
Secuencia de eventos cuando una solicitud es
procesada por Drupal:
An Introduction to Drupal Architecture - John VanDyk (DrupalCamp Des Moines, lowa
9. Hooks
Los Hooks (Ganchos) permiten a los módulos involucrarse
con lo que está sucediendo en el resto del sistema web
Drupal.
Los Hooks son el medio de comunicarle a Drupal que
hacer y cuando hacerlo.
Ejemplo: Un usuario inicia sesión => Drupal llama a la
función hook_user_login() en la cual podemos validar su
zona horaria y decirle por su nombre buenos días o buenas
tardes.
10. Hooks: ¿Como funcionan?
Usaremos un ejemplo básico para un módulo
llamado initialization:
/**
* Implements hook_init().
*/
function initialization_init() {
if (drupal_is_front_page()) {
drupal_set_message(t("Hello world!"));
}
}
11. APIs del Core y algunos hooks
● Menu System
○ hook_menu()
○ hook_menu_alter()
● Theme System
○ hook_theme()
● Mail System
○ hook_mail()
● BlockAPI
○ hook_block_info()
○ hook_block_view()
...más en...
12. Desarrollo de módulos
PHP Necesario:
● Elementalmente usaremos:
○ Arrays asociativos: Ej. creación de un botón submit
en un formulario:
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit')
);
○ Funciones. (Los hooks son funciones.)
● Se puede emplear POO y todo lo que se sabe en php
pero la forma de comunicarse con drupal será mediante
13. Desarrollo de módulos
Estándares de codificación
Tienen por objetivo permitir código legible y bien estructurado para poder ser
compartido.
●
●
●
Identación con 2 espacios. No se usan tabs
Todos los operadores binarios (+, -, =, !=, etc.) tienen un espacio a ambos
lados.
Las estructuras de control (if, for, while, shitch, etc) de la forma:
if (condition1 || condition2) {
}
● Módulos inician siempre con <?php y no se cierra el tag.
Revisar http://drupal.org/coding-standards
14. Desarrollo de módulos
ARCHIVOS
● mi_modulo.info
información básica sobre el módulo
● mi_modulo.install
configuraciones y estructuras
● mi_modulo.module
código del módulo, en forma de funciones PHP
● Archivos de documentación
README.txt, INSTALL.txt,...
● OTROS: .tpl Librerias, clases o funciones, .css, .js
15. Desarrollo de temas
ARCHIVOS
● mi_tema.info
Información básica sobre el tema
● template.php
Reescritura de hooks del core. Con esto podemos añadir
compartamientos adicionales dependiendo el proposito del tema.
● Archivos tpl.php
Rescritura de tipos de nodos, bloques, vistas, etc. podemos hacer
una carpeta llamada "templates/" y colocar dentro todos los tpl.php
que vayamos a reescribir.
Otros: logo.png, screenshot.png, color.inc, etc..
●
Más información: http://drupal.org/node/171194