Forcontu - Experto en Drupal 7 - Unidad 2 - Instalación de Drupal
Creando módulos en Drupal 7
-
Upload
edgar-duenas -
Category
Technology
-
view
842 -
download
3
description
Transcript of Creando módulos en Drupal 7
![Page 1: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/1.jpg)
Creando módulos en Drupal 7
Edgar DueñasSenior Web Developer
[email protected]@ieddu
http://www.pixtig.comhttp://www.linkedin.com/in/ieddu
![Page 2: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/2.jpg)
¿Qué es Drupal?
Drupal es una plataforma de gestión de contenidos web muy potente que ofrece multitud de funcionalidades para el desarrollo web.
Drupal ha sido varias veces elegido el mejor CMS de código abierto a nivel mundial por:
● Por su estructura modular.● La consistencia de todo el sistema.● La calidad de su código y la seguridad. ● Estándares.● Accesibilidad y usabilidad web.
![Page 3: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/3.jpg)
Drupal tiene licencia GNU/GPL y está escrito en PHP.
![Page 4: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/4.jpg)
¿Qué es un módulo en Drupal?
El módulo (module) es un software que extiende las funcionalidades o características de Drupal.
![Page 5: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/5.jpg)
Cuando crear un módulo
● Comunicación con sistemas externos.● Creación de funcionalidades muy a la medida.
![Page 6: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/6.jpg)
Temas de hoy
✔ Ubicación del nuevo módulo.✔ Idioma base y codificación de los archivos.✔ Archivos principales del módulo: .info y .module.✔ La función t() para traducción de cadenas de texto.✔ Activación del módulo.✔ Ejemplo de desarrollo de un módulo.
![Page 7: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/7.jpg)
Ubicación del módulo
sites/all/modules
En Drupal cada módulo dispone de su propio directorio, que recibe generalmente el mismo nombre que el módulo para simplificar la organización.
![Page 8: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/8.jpg)
Importante
El nombre del directorio no debe contener espacios ni caracteres especiales.
Podemos utilizar el guion bajo como separador.
![Page 9: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/9.jpg)
Idioma base y codificación
El idioma base siempre será el inglés
Drupal trabaja con UTF-8 en la codificación de archivos
Crear archivos con codificación UTF-8 sin BOM
![Page 10: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/10.jpg)
Archivos principales del módulo
.info y .module
![Page 11: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/11.jpg)
.info
Se trata de un archivo de texto escrito de formasimilar a un archivo php.ini, que contiene
información básica sobre el módulo(nombre, descripción, versión de Drupal, etc.)
El nombre debe ser similar al de la carpeta <nombre_modulo>.info
![Page 12: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/12.jpg)
Ejemplo
sites/all/modules/primer_modulo/
![Page 13: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/13.jpg)
.info
Puede contener otros campos como:
files (archivos, campo opcional). Drupal 7 permite el registro de código de forma dinámica, a través de funciones de autoload.
php (campo opcional). Indica la versión mínima de PHP requerida.
dependencies (dependencias, campo opcional). Nuestro módulo puede necesitar de otros módulos para su funcionamiento. El campo dependencies será un vector con los nombres de estos módulos requeridos.
![Page 14: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/14.jpg)
.info
required (requerido, campo opcional). Especifica que el módulo actual es indispensable y siempre debe estar activado.
configure (configuración, campo opcional). Especifica la ruta a la página de configuración del módulo.
package (paquete, campo opcional). Cuando un módulo pertenece a un conjunto de módulos.
![Page 15: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/15.jpg)
.module
El archivo .module incluye el código del módulo, en forma de funciones PHP. Es en este archivo donde se realizarán las llamada a los hooks.
El estándar para nombrar al archivo .module es similar al de los archivos .info, siguiendo el patrón <nombremodulo>.module.
![Page 16: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/16.jpg)
El fichero .module no es más que un script PHP, de manera que la primera línea comienza con la marca de inicio de código PHP "<?php", pero no se cierra con este código ?>.
![Page 17: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/17.jpg)
¿Qué es una hook?
Son funciones PHP que utilizamos en nuestros módulos, el nombre de las mismas se compone de la siguiente forma:
![Page 18: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/18.jpg)
¿Para qué sirven las hooks?
Aumentan la funcionalidad de Drupal permitiendo a los módulos interactuar con el core.
De esta manera podemos alterar los comportamientos default de Drupal, y agregar nueva funcionalidad, si esos son los requerimientos para nuestro sitio.
![Page 19: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/19.jpg)
La función t()
La función t() permite que el sistema pueda traducir las cadenas de texto al resto de idiomas activos en el sitio.
![Page 20: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/20.jpg)
Activación del módulo
Ingresar al menu, ir a module, buscar, seleccionar y por ultimo grabar los cambios.
![Page 21: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/21.jpg)
Tipos de módulos más usados
tipo bloquetipo página
![Page 22: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/22.jpg)
Módulo de tipo bloque
![Page 23: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/23.jpg)
Programando un bloque
hook_block_info(), define todos los bloques que nuestro módulo va a proveer.
hook_block_view(), construye el bloque.
hook_theme(), formateará la salida del tema hacia un archivo tpl
![Page 24: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/24.jpg)
hook_block_info()
En el array $blocks definimos todos los bloques de nuestro módulo y proporcionamos las opciones por defecto de cada bloque.
![Page 25: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/25.jpg)
hook_block_view()
En esta función definimos lo que se ve en cada bloque que implementa nuestro módulo. La variable $delta es la que nos identifica el bloque.
![Page 26: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/26.jpg)
$block['content']
En esta variable llamamos a la función que contiene el contenido a imprimir.
![Page 27: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/27.jpg)
Veamos el código y funcionamiento
![Page 28: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/28.jpg)
Theming
![Page 29: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/29.jpg)
Theming: maquetar el resultado
Ahora estamos introduciendo “Hola Mundo” en el array de variables que le vamos a pasar a la plantilla, y a continuación utilizamos la función theme() para generar el resultado de salida. Para ello la función theme() invoca el hook_theme().
![Page 30: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/30.jpg)
hook_theme()
En nuestro hook_theme() estamos llamando a la plantilla (template): “saludar-hola-mundo”, para maquetar el callback: “saludar_hola_mundo”.
![Page 31: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/31.jpg)
Creando un archivo de plantilla
El siguiente paso es crear nuestro archivo tpl que hemos definido en el hook_theme(), en nuestro caso se llama saludar-hola-mundo.tpl
![Page 32: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/32.jpg)
Modulo de tipo pagina
![Page 33: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/33.jpg)
hook_menu()
Sirve para crear una página, es decir, programar la respuesta para una determinada url.
Por ejemplo acceder desde:http://localhost/drupal/saludar/hola-mundo
![Page 34: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/34.jpg)
hook_menu()
Lo que hemos hecho es añadir una url al array de elementos $items, y para esa dirección elegimos un título para la página y la función que implementa el contenido.
![Page 35: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/35.jpg)
Función page callback
![Page 36: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/36.jpg)
Veamos el código y funcionamiento
![Page 37: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/37.jpg)
Form API
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7
![Page 38: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/38.jpg)
Ejemplo
![Page 39: Creando módulos en Drupal 7](https://reader034.fdocuments.co/reader034/viewer/2022042713/5483e3b35806b5d1588b456d/html5/thumbnails/39.jpg)
¿Preguntas?