Programación de módulos para Drupal 7

16
Programación de módulos para Drupal 7 Cristian Mamani @xjkwak

description

Programación de módulos en Drupal 7.

Transcript of Programación de módulos para Drupal 7

Page 1: Programación de módulos para Drupal 7

Programación de módulos

para Drupal 7

Cristian Mamani @xjkwak

Page 2: Programación de módulos para Drupal 7

¿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.

Page 3: Programación de módulos para Drupal 7

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 mediante hooks.

Page 4: Programación de módulos para Drupal 7

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.

Page 5: Programación de módulos para Drupal 7

Módulos básicosBusca 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ásLos módulos contribuidos se han desarrollado gracias a la comunidad. Esperan tu aporte.

Page 6: Programación de módulos para Drupal 7

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

Page 7: Programación de módulos para Drupal 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.

Page 8: Programación de módulos para Drupal 7

Arquitectura de Drupal

Secuencia de eventos cuando una solicitud es procesada por Drupal:

An Introduction to Drupal Architecture - John VanDyk (DrupalCamp Des Moines, lowa 2011)

Page 9: Programación de módulos para Drupal 7

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.

Page 11: Programación de módulos para Drupal 7

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...

Page 12: Programación de módulos para Drupal 7

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 los hooks

Page 13: Programación de módulos para Drupal 7

Estándares de codificaciónTienen 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

Desarrollo de módulos

Page 14: Programación de módulos para Drupal 7

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

Page 15: Programación de módulos para Drupal 7

Desarrollo de temas

ARCHIVOS● mi_tema.info

Información básica sobre el tema

● template.phpReescritura de hooks del core. Con esto podemos añadir compartamientos adicionales dependiendo el proposito del tema.

● Archivos tpl.phpRescritura 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

Page 16: Programación de módulos para Drupal 7

Referencias

Conceptos generaleshttp://drupal.org/node/19828

API Drupalhttp://api.drupal.org

Ambiente de desarrollohttp://drupal.org/setting-up-development-environment

Estándares de codificaciónhttp://drupal.org/coding-standards

Ejemplos de móduloshttp://api.drupal.org/api/search/7/example