1. Introducción a Drupal
Fecha: 21/01/2010
Autor: Ruben Egiguren
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
2. ÍNDICE
• Introducción a Drupal
• Herramientas de administración
• Instalación de Drupal
• Configuración básica
• Módulos mas usados
• Diseño de un tema
• Modulo básico
• Fuentes
2
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
4. ¿Qué es Drupal?
Definición
Drupal es un programa libre, con licencia GNU/GPL, escrito en PHP, desarrollado y mantenido
por una activa comunidad de usuarios. Destaca por la calidad de su código y de las páginas
generadas, el respeto de los estándares de la web, y un énfasis especial en la usabilidad y
consistencia de todo el sistema.
Drupal es un sistema de gestión de contenido modular multiproposito y muy configurable que
permite publicar artículos, imágenes, u otros archivos y servicios añadidos como foros, encuestas,
votaciones, blogs y administración de usuarios y permisos. Drupal es un sistema dinámico: en
lugar de almacenar sus contenidos en archivos estáticos en el sistema de ficheros del servidor de
forma fija, el contenido textual de las páginas y otras configuraciones son almacenados en una
base de datos y se editan utilizando un entorno Web.
El diseño de Drupal es especialmente idóneo para construir y gestionar comunidades en Internet.
No obstante, su flexibilidad y adaptabilidad, así como la gran cantidad de módulos adicionales
disponibles, hace que sea adecuado para realizar muchos tipos diferentes de sitio web.
Fuente: Wikipedia
4
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
5. ¿Qué es Drupal?
CMS/CMF
• Content Management System (Gestor de contenidos)
• Content Management Framework (marco de trabajo, API,...)
• Community Management System (creación de comunidades,... )
• Communication Management System (sistemas de
comunicación,...)
5
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
6. ¿Qué es Drupal?
Drupal como CMS
• Control sobre el flujo de creación, edición, borrado y
publicación de contenidos.
• Categorización y organización de contenido.
• Gestión de usuarios y roles. Privacidad, control de
acceso.
• Presentación de contenido en diversos formatos.
• Sistema ampliable y extensible.
6
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
7. ¿Qué es Drupal?
Drupal como Framework
• Capa de abstracción sobre la base de datos.
• Sistema de plantillas (themes) separado de la lógica.
• Librerías ajax. Por defecto jQuery.
• Seguridad, identificación de usuarios y configuración
de permisos personalizable.
• Herramientas de caché a varios niveles.
• API para desarrolladores pública y disponible:
http://api.drupal.org/
7
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
8. ¿Qué es Drupal?
Multiplataforma (LAMP / WAMP /XAMP)
8
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
9. ¿Qué es Drupal?
Drupal es software libre
• Publicado bajo licencia GNU/GPL 2 o superior.
• Libre descarga, modificación y reutilización.
• Distribución bajo la misma licencia.
• Todos los plugins (módulos) y plantillas (temas) que
se incluyen tanto en la descarga inicial como en las
descargas desde el repositorio oficial tienen licencia
GPL.
9
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
10. ¿Qué es Drupal?
Licencia GPL
• Libertades del software libre
– Artículo principal: Definición del Software Libre
• De acuerdo con tal definición, el software es "libre" si garantiza las
siguientes libertades:
Libertad Descripción
0 la libertad de usar el programa, con cualquier propósito.
1 la libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a
tus necesidades.
2 la libertad de distribuir copias del programa, con lo cual puedes ayudar a tu
prójimo.
3 la libertad de mejorar el programa y hacer públicas esas mejoras a los demás,
de modo que toda la comunidad se beneficie.
Las libertades 1 y 3 requieren acceso al código fuente porque estudiar y modificar software sin su
código fuente es muy poco viable.
10
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
11. ¿Qué es Drupal?
Arquitectura
11
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
12. ¿Qué es Drupal?
Directorios
12
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
13. ¿De dónde viene?
Dries Buytaert
• Fundador de Drupal.
• Ciudadano Belga.
• Código fuente abierto en 2001.
• Publicado bajo licencia GNU/GPL 2 o superior.
• El dominio original, drop.org es un error tipográfico
de su creador, Dries Buytaert.
• Drupal es el equivalente fonético en inglés a la
palabra neerlandesa druppel que significa 'gota'.
13
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
14. ¿Qué puedo hacer con él?
• Portales corporativos. • Galerías de fotos.
• Intranets. • Galerías de vídeos.
• Blogs. • E-commerce.
• Foros. • E-learning.
• Comunidades. • Aplicaciones.
• Wikis. • ...
• Eventos.
14
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
15. ¿Quién lo está usando?
• Medios. (http://www.vt4.be/)
• Corporativos. (http://www.bilbomatica.es)
• Organizaciones sin animo de lucro. (http://www.amnesty.org/)
• Educación. (http://www.harvardscience.harvard.edu/)
• Software. (http://www.spreadfirefox.com/)
• Políticos. (http://www.premier.fgov.be) Primer Ministro Belga.
• Gobiernos. (http://www.whitehouse.gov/)
• Artistas. (http://www.ericclapton.com/)
• Sanidad. (http://www.uzleuven.be/)
• Revistas. (http://clint.be/)
• Noticias. (http://www.france24.com/)
• …
15
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
16. ¿Quién es quién en Drupal?
Dries Buytaert
• Fundador y desarrollador
líder de Drupal.
• Mantenedor principal del
núcleo.
• Creador y propietario de la
marca.
16
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
17. ¿Quién es quién en Drupal?
Mantenedores de la ramas
• Neil Drumm (D5)
• Gabor Hojtsy (D6)
• Angie Byron (D7)
17
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
18. ¿Quién es quién en Drupal?
Mantenedores y colaboradores
• Mantenedores.
• Colaboradores del núcleo.
• Colaboradores de módulos.
• Colaboradores del temas.
• Colaboradores de de traducciones.
• Colaboradores de documentación.
• Equipo de seguridad.
18
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
19. Algunas características interesantes
• Creación de contenidos.
• Taxonomías.
• Menús.
• Estados de publicación.
• Gestión de usuarios.
• Permisos.
• RSS.
• Multilenguaje.
• Traducción de contenidos.
• Formularios.
• Multisitios.
• …
19
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
20. Algunas características interesantes
Puntos fuertes de Drupal
• Extensible: gran cantidad de módulos contribuidos y una
buena API para desarrollos propios.
• Flexible.
• Seguridad: equipo dedicado a la seguridad, granularidad
de permisos, …
• Sistema de plantillas muy potente.
• Comunidad: centralizada, activa y numerosa.
• Soporte: una comunidad activa y disponibilidad de
profesionales.
• Software libre y gratuito.
20
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
21. Algunas características interesantes
Puntos débiles de Drupal
• Curva de aprendizaje inicial pronunciada.
• Interfaz por defecto poco amigable.
• Compatibilidad inversa.
21
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
22. ¿Cómo construir un sitio de Drupal?
Antes de comenzar
• Análisis de requisitos.
• Arquitectura de información.
• Usabilidad.
• Diseño.
22
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
23. ¿Cómo construir un sitio de Drupal?
Tareas a realizar
• Seleccionar módulos existentes que implementen la
funcionalidad solicitada.
• Adaptar módulos con funcionalidades inexistentes.
• Crear módulos a medida. (El objetivo es desarrollar lo menos
posible y utilizar el máximo de módulos desarrollados por la
comunidad, esto conlleva menor trabajo de desarrollo)
• Instalación y configuración.
• Crear o adaptar un tema para personalizar la apariencia.
• Personalizar y adaptar entorno visual. (Bloques, menús,...).
• Lanzamiento.
• Mantenimiento.
23
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
24. ¿Qué tecnológicas están involucradas
en un buen sitio de Drupal?
Programación
• PHP
• API de Drupal
24
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
25. ¿Qué tecnológicas están involucradas
en un buen sitio de Drupal?
Cliente
• HTML – XHTML
• CSS
• JavaScript
• jQuery
25
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
26. ¿Qué tecnológicas están involucradas
en un buen sitio de Drupal?
Diseño
• Libres
– Gimp
– Inkscape
• Propietarias
– Adobe Photoshop
– Adobe Illustrator
26
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
27. ¿Qué tecnológicas están involucradas
en un buen sitio de Drupal?
Servidor
• Sistema operativo
– Linux (recomendado)
– Windows
– Mac OS X
• Servidor Web
– Apache (recomendado)
– IIS
• Base de datos
– MySQL (recomendado)
– PostgreSQL
• Red
27
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
28. ¿Qué tecnológicas están involucradas
en un buen sitio de Drupal?
Algunos extras
• Ajax
• XML-RPC
• Servicios web
• XML
• Flash
28
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
29. ¿Cual es el estado actual de Drupal?
• Drupal 5
– En mantenimiento (antigua)
• Drupal 6
– En mantenimiento (actual)
• Drupal 7
– Congelada (en correcciones)
29
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
30. ¿Cual es el estado actual de Drupal?
Algunos premios ganados
• Webware 100 2007
• Webware 100 2008
• Webware 100 2009
• Overall Open Source CMS 2007
• Overall Open Source CMS 2008
• Best Open Source PHP CMS 2009
• Hall of Fame 2009
• …
30
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
32. MySQL
• MySQL Admin
• MySQL Query Brownser
• Phpmyadmin
32
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
33. Administración de ficheros
• FileZilla
• WinSCP
33
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
34. Administración de sistemas
• Putty (comandos)
• VNC
• Escritorio remoto
34
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
35. Administración de Drupal
• Firefox
• Opera
• Chrome – Chromium
• Internet Explorer
• Cualquier otro navegador web
35
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
37. GNU/Linux
Se recomienda que los servidores de producción corran
sobre la siguiente arquitectura:
• GNU/Linux
• Apache
• MySQL
• PHP
37
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
38. GNU/Linux
Instalación de paquetes
• Abrir terminal e instalar Apache2, PHP 5 y MySQL 5.1.
$ sudo aptitude install apache2 mysql-server-5.1 php5 php5-mysql
Instalación de herramientas
• Herramientas de administración para MySQL y cliente FTP/SFTP
(FileZilla).
$ sudo aptitude install mysql-query-browser mysql-client-5.1 mysql-admin
mysql-workbench phpmyadmin
Activar url limpias
• Activar las url limpias para mejorar la indexación de las paginas y facilitar
su lectura.
$ sudo a2enmod rewrite
38
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
39. GNU/Linux
Directorio virtual
• Creamos un fichero con los parámetros de nuestros sitio.
$ sudo nano /etc/apache2/sites-available/www.drupalexample.com
<VirtualHost *:80>
ServerAdmin email@bilbomatica.es
ServerName www.drupalexample.com
ServerAlias drupalexample.com
DocumentRoot /home/usuario/Proyectos/drupalexample/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
• www.drupalexample.com debe ser sustituido por el nombre original del sitio. Si no se realiza así
a la hora de cambiar la URL dará algún que otro dolor de cabeza. Dependencia de la url.
• Esta configuración solo es para un desarrollo local. En caso de producción seria recomendable
crearlo en /var/www/
39
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
40. GNU/Linux
Enlace simbólico
• Crear el enlace para activar el nuevo sitio creado.
$ sudo ln -s /etc/apache2/sites-available/www.drupalexample.com
/etc/apache2/sites-enabled/www.drupalexample.com
Editar hosts y reiniciar red
• Editar hosts para el desarrollo en local y así decir en que
ip esta la web sin pasar por el DNS.
$ sudo nano /etc/hosts
89.0.x.x www.drupalexample.com
• Reiniciar red
$ sudo /etc/init.d/networking restart
40
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
41. GNU/Linux
Crear Base de Datos
• Abrir la terminal y ejecutar.
$ mysql -u root -p
mysql> create database drupalexample CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON drupalexample.* TO drupaldbuser@localhost IDENTIFIED
BY 'fuffy';
mysql> flush privileges;
mysql> q
Bye
41
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
42. GNU/Linux
Ficheros de Drupal
• Abrir terminal e ir a la carpeta del proyecto.
$ cd /home/usuario/Proyectos/
• Descargar Drupal.
$ wget http://ftp.drupal.org/files/projects/drupal-6.15.tar.gz
• Descomprimir Drupal.
$ tar xvfz drupal-6.15.tar.gz
• Renombrar Drupal al nombre del proyecto.
$ mv drupal-6.15 drupalexample
Reiniciar Apache
• Reiniciamos apache para que cargue todas las modificaciones.
$ sudo /etc/init.d/apache2 restart
42
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
43. Windows
Para la instalación de windows utilizaremos WAMP.
Resulta mas fácil la instalación y configuración de:
• Apache
• MySQL
• PHP Apache 2.2.11
PHP 5.3.0
MySQL 5.1.36
Phpmyadmin
size: 16Mo
43
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
44. Windows
Descargar e instalar WAMP
• Descargar WAMP:
http://downloads.sourceforge.net/project/wampserver/WampServer%202/WampServer
%202.0/WampServer2.0i.exe?use_mirror=heanet
• Utilizaremos esta versión del WAMP debido a que Drupal
6 no soporta PHP 5.3 o superior. Esta instalación
contiene PHP 5.2.11
• Descargar PHP 5.2.11 para WAMP
http://downloads.sourceforge.net/project/wampserver/WampServer%202%20-
%20Extensions/PHP/WampServer2-PHP5211.exe?use_mirror=kent
• Cuando iniciemos WAMP vamos a php y le cambiamos el
PHP a utilizar.
• Tras descargar activamos el modulo rewrite_module.
44
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
45. Windows
Directorio virtual
• Activamos el modulo vhost_alias_module.
• Editar el fichero httpd.conf y descomentar la siguiente linea:
Include conf/extra/httpd-vhosts.conf
• www.drupalexample.com debe ser sustituido por el nombre
original del sitio. Si no se realiza así a la hora de cambiar la
URL dará algún que otro dolor de cabeza. Dependencia de la
url. Hay solución al mismo que se vera mas adelante.
• Editamos el fichero
C:wampbinapacheApache2.2.11confextrahttpd-
vhosts.conf y añadimos solo:
45
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
46. Windows
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "c:/wamp/www"
ServerName localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin email@bilbomatica.es
ServerName www.drupalexample.com
ServerAlias drupalexample.com
DocumentRoot "c:/wamp/www/drupalexample/"
<Directory "c:/wamp/www/drupalexample/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ErrorLog "c:/wamp/logs/apache_error.log"
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog "c:/wamp/logs/access.log" combined
ServerSignature On
</VirtualHost>
46
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
47. Windows
Editar hosts y reiniciar red
Con en mismo bloc de notas y editamos
C:WINDOWSsystem32driversetchosts y añadimos lo siguiente para
decir en que ip esta la web sin pasar por el DNS:
89.0.x.x www.drupalexample.com
Crear Base de Datos
• Accedemos mediante WAMP a la consola de MySQL que nos
proporciona.
$ mysql -u root -p
mysql> create database drupalexample CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON drupalexample.* TO drupaldbuser@localhost IDENTIFIED BY
'fuffy';
mysql> flush privileges;
mysql> q
Bye
47
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
48. Windows
Ficheros de Drupal
• Descargamos y descomprimimos (winrar o similar) el fichero en
c:/wamp/www/ y renombramos la carpeta de drupal-6.15 a
drupalexample.
• Descarga: http://ftp.drupal.org/files/projects/drupal-6.15.tar.gz
Reiniciar Apache
• Mediantes la herramienta de WAMP reiniciamos los servicios.
48
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
49. Instalando aplicación de Drupal
Estructura directorios
49
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
50. Instalando aplicación de Drupal
• Vamos a sites.
• Copiamos la carpeta default y la llamamos www.drupalexample.com.
• Entramos dentro de www.drupalexample.com.
• Renombramos default.settings.php a settings.php.
• Para sistemas GNU/Linux realizamos lo siguiente
– settings.php tiene que tener permisos de escritura.
• chmod 666 settings.php
– Tras la instalación del portal tenemos que quitarle permisos de escritura.
• chmod 444 settings.php
• Creamos la carpeta files en nuestra web (.sites/www.drupalexample.com/files).
– Cambiar los permisos en GNU/Linux.
• chmod -R 777 files
• Creamos la carpeta modules en nuestra web (.sites/www.drupalexample.com/modules).
• Creamos la carpeta themes en nuestra web (.sites/www.drupalexample.com/themes).
• Accedemos con cualquier navegador, preferiblemente firefox.
50
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
51. Instalando aplicación de Drupal
Perfil
• Abrir navegador e ir a http://www.drupalexample.com/install.php.
• Elegimos siempre el perfil en ingles para evitar posibles errores posteriores.
51
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
52. Instalando aplicación de Drupal
Base de datos
52
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
53. Instalando aplicación de Drupal
Configuración del sitio
53
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
54. Instalando aplicación de Drupal
Finalizada la instalación
• Recordad el cambio de permisos de settings.php
54
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
56. Panel administración
• Panel general para administrar el portal: http://www.drupalexample.com/es/admin.
56
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
57. Página de estado
• Estado del portal, actualizaciones, versiones, ...: http://www.drupalexample.com/es/admin/reports/status.
57
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
58. Módulos
• Listado de módulos disponibles y estado de los mismos: http://www.drupalexample.com/es/admin/build/modules.
58
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
59. Temas
• Listado de temas disponibles, activos y estado de los mismos: http://www.drupalexample.com/es/admin/build/themes.
59
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
60. Bloques
• Disposición de bloques y configuración de los mismos: http://www.drupalexample.com/es/admin/build/block.
60
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
61. Usuarios, roles y permisos
• Gestión de usuarios, roles y permisos para el control de los usuarios:
– Usuarios: http://www.drupalexample.com/es/admin/user/user.
61
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
62. Usuarios, roles y permisos
– Roles: http://www.drupalexample.com/es/admin/user/roles.
62
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
63. Usuarios, roles y permisos
– Permisos de los roles: http://www.drupalexample.com/es/admin/user/permissions.
63
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
64. Rendimiento/Cache
• Configuración para la optimización en la ejecución y consulta de paginas:
http://www.drupalexample.com/es/admin/settings/performance.
64
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
65. Actualizar url
Como se comentaba anteriormente Drupal es dependiente de la url y el cambiar la url afecta directamente a la
• plataforma. Para cambiar la url se ha de ejecutar unas sentencias SQL.
Los campos están serializados (s:xx:) con la longitud total del campo (xx es el valor del campo). Al cambiar la
• url es necesario el adaptar campo numérico con el valor real de la linea.
UPDATE system SET filename = REPLACE(filename, 'www.example.com', 'www.drupalexample.com');
UPDATE files SET filepath = REPLACE(filepath, 'www.example.com', 'www.drupalexample.com');
UPDATE node_revisions SET body = REPLACE(body , 'www.example.com', 'www.drupalexample.com');
UPDATE node_revisions SET teaser = REPLACE(teaser, 'www.example.com', 'www.drupalexample.com');
UPDATE variable SET value = REPLACE(value, 's:36:"sites/www.example.com', 's:42:"sites/www.drupalexample.com');
UPDATE variable SET value = REPLACE(value, 's:31:"sites/www.example.com', 's:37:"sites/www.drupalexample.com');
UPDATE variable SET value = REPLACE(value, 's:27:"sites/www.example.com', 's:33:"sites/www.drupalexample.com');
UPDATE variable SET value = REPLACE(value, 's:21:"sites/www.example.com', 's:27:"sites/www.drupalexample.com');
UPDATE variable SET value = REPLACE(value, 's:46:"sites/www.example.com', 's:52:"sites/www.drupalexample.com');
En este caso vemos que la diferencia entre www.example.com y www.drupalexample.com es de tan solo 6
• caracteres. Con modificar el valor s:xx: es suficiente para corregirlo.
Posteriormente accedemos un par de veces a las siguientes url para que actualice todos los datos.
•
www.drupalexample.com/update.php
–
www.drupalexample.com/cron.php
–
65
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
67. Módulos más usados
Estos son algunos de los módulos más usados en Drupal. Se deben
seleccionar aquellos que sean necesarios para las necesidades del
proyecto.
• Visitar: http://drupal.org/project/usage
– Backup and Migrate: http://drupal.org/project/backup_migrate
– Poormanscron: http://drupal.org/project/poormanscron
– Content Construction Kit (CCK): http://drupal.org/project/cck
– Views: http://drupal.org/project/views
– Wysiwyg: http://drupal.org/project/wysiwyg
– Token: http://drupal.org/project/token
– Pathauto: http://drupal.org/project/pathauto
– Transliteration: http://drupal.org/project/usage/transliteration
–…
67
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
68. Diseño de un tema
68
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
69. Por qué utilizar ZEN
• Diseño básico creado para ser adaptado.
• Provee varios subtemas básicos diseñados para extender.
• Ficheros CSS base para extender.
– IDs creadas y posibilidad de extender.
– Clases creadas y posibilidad de extender.
• Contiene layout básicas.
– Anchura fija.
– Anchura dinámica.
• Capas html básicas para extender.
• Capacidad de añadir nuevas:
– Plantillas.
– IDs.
– Clases.
– Ficheros javascript.
69
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
70. Utilizar como base ZEN
Instalación
• Diseño básico creado para adaptar.
• Proyecto: http://drupal.org/project/zen
• Documentación: http://drupal.org/node/193318
• Descargamos ZEN de:
– http://ftp.drupal.org/files/projects/zen-6.x-1.1.tar.gz
• Descomprimimos el fichero en la carpeta de temas
– ./drupalexample/sites/www.drupalexample.com/th
emes
70
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
71. Utilizar como base ZEN
Crear subtema de Zen
• Diseño básico creado para adaptar.
• Documentación subtema: http://drupal.org/node/226507
• Antes de continuar deshabilita la optimización de CSS y Javascript.
Visite admin/settings/performance y deshabilite "Optimize CSS files"
y "Optimize Javascript files".
• Copia la carpeta STARTERKIT fuera de la carpeta zen/ y renombrela
como vaya a llamar a tu subtema. IMPORTANTE: solo utilizar
minúsculas.
– Por ejemplo, copia la carpeta sites/all/themes/zen/STARTERKIT y
renombrela a sites/all/themes/foo.
• ¿Por qué? Cada tema debe residir en su propia carpeta. A
diferencia de Drupal 5, los sub-temas pueden (y deben) residir
en una carpeta separada de tu tema base.
71
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
72. Utilizar como base ZEN
• En la carpeta del nuevo subtema, renombra el fichero STARTERKIT.info.txt por el
incluido en el nombre de tu nuevo subtema. A continuación, edita el archivo .info para
cambiar cualquier coincidencia de STARTERKIT con el nombre de tu subtema y edita
el nombre y el campo de descripción.
– Por ejemplo, cambia el nombre foo/STARTERKIT.info.txt por foo/foo.info. Edita el
fichero foo.info y cambia "STARTERKIT.css" por "foo.css", cambia “name = Zen
Sub-theme Starter Kit" a "name = foo", y cambia “description = Read..." a
"description = A Zen sub-theme".
• ¿Por qué? El fichero .info describe la información básica sobre tu tema: su
nombre, descripción, características, regiones de plantilla, los archivos CSS, y
los archivos de JavaScript. Ver Drupal 6 Theme Guide para más información.
– A continuación, visita en su sitio web admin/build/themes para refrescar la caché
de Drupal 6 de archivo de datos .info.
72
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
73. Utilizar como base ZEN
• Si deseas un diseño dinámico (liquid) para tu tema, copia el esquema de liquid.css de la
zen/zen y colócala en la carpeta de tu subtema. Si deseas un diseño de ancho fijo para tu
tema, copia el esquema de fixed.css de la carpeta zen/zen y colócala en la carpeta de tu
subtemas. Camba el nombre de la hoja de estilo de diseño a "layout.css".
– Por ejemplo, copia zen/zen/layout-fixed.css y renómbrelo por foo/layout.css. Ten en
cuenta que el archivo .info ya tiene una entrada para el archivo layout.css.
• ¿Por qué? En los temas de Drupal 6, si se desea modificar una hoja de estilos
incluidos en el tema base o a través un módulo, se debería copiar el estilo del tema
base o del directorio de módulos al directorio de tu subtema, y luego agregar la
información de su hoja de estilo a archivo. Ver Drupal 6 Theme Guide para más
información.
• Copia la hoja de estilo zen de la carpeta de zen y colócala en la carpeta de tu subtema.
Cambia el nombre por el de tu subtema.
– Por ejemplo, copia zen/zen/zen.css y renombrala a foo/foo.css. Ten en cuenta que el
archivo .info ya tiene una entrada para el archivo de foo.css y que tu archivo .info
elimina el archivo zen.css el tema base.
73
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
74. Utilizar como base ZEN
• Copia la hoja de estilos de impresión de la carpeta zen y colócala en la carpeta de
tu subtema.
– Por ejemplo, copia zen/zen/print.css a foo/print.css. Ten en cuenta que en el
fichero .info ya existe una entrada print.css.
• Copia la hoja de estilos html-elements stylesheet de la carpeta y colócala en la
carpeta de tu subtema.
– Por ejemplo, copia zen/zen/html-elements.css a foo/html-elements.css. Ten en
cuenta que en el fichero .info ya existe una entrada html-elements.css.
• Edita los ficheros template.php y settings.php de directorio del subtema;
reemplaza todas las coincidencias "STARTERKIT" con el nombre de tu subtema.
– Por ejemplo, edita foo/template.php y foo/theme-settings.php y reemplaza
"STARTERKIT" por "foo".
• Inicie sesión como administrador en el sitio de Drupal y ve a Administer > Site
building > Themes (admin/build/themes) y activa su nuevo subtema.
74
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
75. Utilizar como base ZEN
Opcional
• Modificar las hojas de estilos del núcleo de Zen: Si decides modificar
cualquiera de las hojas de estilo en la carpeta de Zen, cópialos a la carpeta
del subtema antes de hacer cualquier cambio. Además, asegúrate de que la
nueva hoja de estilo se incluye en el archivo de .info y que ha reconstruido el
registro de tema.
– Por ejemplo, copia zen/zen/block-editing.css a foo/block-editing.css. Edita
foo/foo.info y descomenta la siguiente linea para activarlo:
• ;stylesheets[all][] = block-editing.css
• a:
• stylesheets[all][] = block-editing.css
– A continuación, visita en su sitio web admin/build/themes para refrescar la
caché de Drupal 6 de archivo de datos .info.
75
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
76. Utilizar como base ZEN
• Modificando los fichero template del núcleo de Zen: Si decides que deseas modificar
cualquiera de los ficheros plantilla .tpl.php en la carpeta zen, cópialos a la carpeta
del subtema antes de realizar los cambios. Después reconstruye el regitro de temas.
– Por ejemplo, copia zen/zen/page.tpl.php a foo/page.tpl.php.
• Tematizando el formulario de búsqueda en Drupal: Copia el fichero plantilla search-
theme-form.tpl.php de la carpeta modules/search/ y colócala en la carpeta de su
subtema. Después reconstruye el regitro de temas.
– ¿Por qué? Los temas en Drupal, si deseas modificar una plantilla incluida en un
módulo, deberías copiar el archivo de plantilla desde el directorio del módulo a su
directorio de subtemas, y luego reconstruir el registro de tema. Ver
Drupal 6 Theme Guide para más información.
• Mas ampliaciones para su subtema: Descubre nuevas formas para ampliar tu
subtema leyendo Drupal 6's Theme Guide.
76
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
77. Elegir layout y clases
• Layout para subtema a elegir.
– Liquid: anchura dinámica, recomendado.
– Fixed: anchura fija.
Page.tpl.php: pagina principal de diseño, contiene los campos y áreas principales. Dispone de
•
los ids y clases principales. Todas ellas pueden ser adaptadas.
– Clases genéricas: existe la posibilidad de añadir nuevas clases como pueden ser el idioma.
– Ids genéricas: existe la posibilidad de añadir nuevas como pueden ser el idioma.
Node.tpl.php: contenido de los nodos y su presentación. Al igual que el page.tpl.php es
•
extensible y adaptable.
Existen otros componentes que también pueden ser adaptados.
•
– Frontpage.tpl.php: pagina principal.
– node-xxx.tpl.php: nodo especifico de una ruta.
– views-xxx.tpl.php: vistas de un contenido especifico.
– maintenance-page.tpl.php: pagina mantenimiento.
– ….
Logo.
•
Hojas de estilo.
•
...
•
77
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
78. Modulo básico
78
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
79. Ficheros básicos
• nombre_modulo.info
– Información sobre el modulo.
• nombre_modulo.install
– Parámetros de instalación del modulo.
– Ejemplo: crear tabla.
• nombre_modulo.module
– Código principal de modulo.
79
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
80. Hooks
• Permite a los módulos interactuar con el núcleo de Drupal.
• El sistema de módulos de Drupal está basado en el concepto de "hook". Un “hook”
es una función PHP que se denomina foo_bar (), donde foo es el nombre del módulo
(cuyo nombre puede ser, foo.module) y "bar" es el nombre del “hook”. Cada hook
tiene un conjunto definido de parámetros y un tipo de resultado especificado.
• Para extender Drupal, un módulo simplemente necesita implementar un hook.
Cuando Drupal desea permitir la intervención de los módulos, determinará que hook
implementará de un modulo y le llamará en todos los módulos activos que lo
implemente.
• Los hooks disponibles para la implementación se explican en la sección de hooks de
la documentación del desarrollador. La cadena de "hook" se utiliza como marcador
de posición para el nombre del módulo en las definiciones del hook. Por ejemplo, si
el archivo se llama módulo de example.module, entonces hook_help (), aplicado por
dicho módulo se define como example_help ().
• http://api.drupal.org/api/group/hooks
80
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
81. Modulo básico de ejemplo
example.info
$Id: README.txt,v 1.0 2010/01/21 12:58:46 example Exp $
name = Example
description = Módulo de ejemplo para formación
package = Ejemplo
core = 6.x
; Información para el modulo
version = "6.x.1-dev"
core = "6.x"
project = "Example"
datestamp = ""
81
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
82. Modulo básico de ejemplo
example.install
• En principio no es necesario incluir código a menos
que el modulo lo requiera.
<?php
/*
* Fichero de instalación
*/
82
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
83. Modulo básico de ejemplo
example.module
• Las cadenas de texto en la función t() siempre deben de ir en ingles, para
evitar posibles errores posteriores..
<?php //Se inicia el php pero no se cierra
/**
* Implementacion de hook_menu().
*/
function example_menu() {
$items['menu_example'] = array (
'title' => 'Ejemplo de una vez',
'description' => 'Prueba de Ejemplo',
'page callback' => '_example_hello', //"_" para aquellas que son privadas.
'access callback' => TRUE,
//'type' => MENU_CALLBACK, no aparecerá en el menú
'type' => MENU_NORMAL_ITEM, //aparecerá en el menú
);
return $items;
}
83
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
84. Modulo básico de ejemplo
/**
* Ejemplo básico con parámetro en Url
*/
function _example_hello ($dato = '') {
//$dato primer parámetro después de "../menu_example/loquesea"
$retorno = '';
if ($dato == '') {
$retorno = 'Hola Mundo';
} else {
$retorno = $dato;
}
return $retorno;
}
84
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
85. Modulo con formulario
example.info
$Id: README.txt,v 1.0 2010/01/21 12:58:46 example Exp $
name = Example
description = Módulo de ejemplo para formación
package = Ejemplo
core = 6.x
; Información para el modulo
version = "6.x.1-dev"
core = "6.x"
project = "Example"
datestamp = ""
85
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
86. Modulo con formulario
example.install
• En principio no es necesario incluir código a menos
que el modulo lo requiera.
<?php
/*
* Fichero de instalación
*/
86
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
87. Modulo con formulario
example.module
• Las cadenas de texto en la función t() siempre deben de ir en ingles, para
evitar posibles errores posteriores..
<?php //Se inicia el php pero no se cierra
/**
* Implementacion de hook_menu().
*/
function example_menu() {
$items['menu_example'] = array (
'title' => 'Ejemplo de una vez',
'description' => 'Prueba de Ejemplo',
'page callback' => '_example_hello', //"_" para aquellas que son privadas.
'access callback' => TRUE,
//'type' => MENU_CALLBACK, no aparecerá en el menú
'type' => MENU_NORMAL_ITEM, //aparecerá en el menú
);
Continua en la siguiente diapositiva →
87
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
88. Modulo con formulario
← Continuación de la anterior diapositiva
$items['menu_mas'] = array (
'title' => 'Ejemplo con formulario',
'description' => 'Prueba de Ejemplo',
'page callback' => 'drupal_get_form',
'page arguments' => array('example_form'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
'file' => 'example.pages.inc',
);
return $items;
}
88
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
89. Modulo con formulario
example.pages.inc
<?php
// $Id$
/**
* Definir el formulario.
*/
function example_form() {
$form['user_name'] = array(
'#title' => t('Your name'),
'#type' => 'textfield',
'#description' => t('Please enter your name.'), //Siempre en ingles
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit')
);
}
return $form;
Continua en la siguiente diapositiva →
89
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
90. Modulo con formulario
← Continuación de la anterior diapositiva
/**
* Validar el formulario.
*/
function example_form_validate($form, &$form_state) {
$name = $form_state['values']['user_name'];
if ($form_state['values']['user_name'] == 'Ruben Egiguren') {
// Notificamos al API de formulario que el campo a fallado.
// Campo error, texto error
form_set_error('user_name',t('%name is not allowed to use this form.',
array('%name' => $name))); //Siempre en ingles
}
}
/**
* Manejador de post-envío del formulario de validación.
*/
function example_form_submit($form, &$form_state) {
$name = $form_state['values']['user_name'];
drupal_set_message(t('Thanks for filling out the form, %name',
array('%name' => $name))); //Siempre en ingles
}
90
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
91. Fuentes
91
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
92. Fuentes
• http://drupal.org/
• http://drupal.org/books
– Listado amazon
– Pro Drupal Development, Second Edition
– Learning Drupal 6 Module Development
• http://es.wikipedia.org/
• http://www.drupalcoder.com/story/529-introduction-to-drupal-presentation-slides
• http://www.slideshare.net/neurotic/taller-drupal-php-conference
• http://www.flickr.com/photos/raincitystudios/97420788/
• http://buytaert.net/album/drupalcon-sunnyvale-2007/angela-byron
• http://www.flickr.com/photos/sebastian_bergmann/79011031/sizes/m/
92
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
93. Licencia
• Usted es libre de
– copiar, distribuir y comunicar públicamente la obra.
– hacer obras derivadas.
• Bajo las condiciones siguientes
– Reconocimiento ― Debe reconocer los créditos de la obra de la
manera especificada por el autor o el licenciador (pero no de una
manera que sugiera que tiene su apoyo o apoyan el uso que
hace de su obra).
– No comercial ― No puede utilizar esta obra para fines
comerciales.
– Compartir bajo la misma licencia ― Si altera o transforma esta
obra, o genera una obra derivada, sólo puede distribuir la obra
generada bajo una licencia idéntica a ésta.
• Licencia completa
– http://creativecommons.org/licenses/by-nc-sa/3.0/es/legalcode.es
93
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid
94. FIN
94
Introducción a Drupal
Oficinas certificadas: Bilbao y Madrid