Programación de módulos para Drupal 7
-
Upload
cristian-mamani -
Category
Technology
-
view
2.273 -
download
7
description
Transcript of Programación de módulos para Drupal 7
Programación de módulos
para Drupal 7
Cristian Mamani @xjkwak
¿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.
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.
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.
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.
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
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.
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)
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.
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!")); }}
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...
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
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
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
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
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