Mostrando entradas con la etiqueta drupal. Mostrar todas las entradas
Mostrando entradas con la etiqueta drupal. Mostrar todas las entradas

viernes, 30 de abril de 2010

Drupal: Mandar correos con PHPMailer

Mandar correos electrónicos tras realizar una operación es algo bastante común en cualquier aplicación informática. En Drupal no es una excepción, pero muchas veces tendremos problemas con la configuración PHP de nuestro servidor. Muchos servidores gratuitos deshabilitan la función mail() que envía correos vía PHP para evitar el spam.

Nosotros para superar esta complicación usaremos PHPMailer, un módulo desarrollado para Drupal que nos facilitará el envío de correos electrónicos.

Para empezar nos descargamos la versión para Drupal de PHPMailer. Extraemos la carpeta y observaremos que dentro de ella existe otra carpeta llamada "phpmailer". En esa carpeta debemos añadir los ficheros class.phpmailer.php, class.smtp.php y class.pop3.php que se encuentran en la implementación de la clase PHPMailer que se puede descargar aquí (descargar PHPMailer_v5.1.tar.gz).

Una vez hemos completado la descarga del módulo lo añadimos en %ROOT_SITIO%/sites/all/module.

Accedemos a nuestra distribución de Drupal y accedemos a Administer -> Site Building -> Modules y habilitamos el PHPMailer.

Marchamos a la configuración del módulo y activamos la casilla de enviar correos usando PHPMailer y completamos (ejemplo para usar SMTP de Gmail):

General

Primary SMTP server: smtp.gmail.com
SMTP Port: 465
Use Secure Protocol: SSL

SMTP Autenticathion

Username: Tu cuenta de gmail (incluyendo "gmail.com")
Password: Tu password

En Advanced SMTP Settings sólo es necesario añadir el nombre del que envía el correo y en Test Configuration se añaden los correos para enviar los email de prueba.

Salvamos la configuración y se enviará el correo de prueba.

Sin embargo, si estás usando un Apache Local puede que tengas un problema. No puedes elegir en "Use Secure Protocol" otra opción que no sea "No" y eso impide enviar correos por SMTP desde Gmail, Hotmail, ...

Debes acceder a dos archivos:

1.- El httpd.conf de nuestro servidor Apache en el que se debe descomentar la siguiente línea


LoadModule ssl_module modules/mod_ssl.so


2.- El php.ini donde deberemos descomentar la siguiente línea


extension=php_openssl.dll


Ahora el desplegable de Protocolos debería tener: No, SSL y TLS.

jueves, 11 de marzo de 2010

Drupal: Crear una galería embebida en un contenido

Vamos a crear una galería embebida en un contenido con Ajax de manera que en el contenido podremos navegar sobre todas las fotos que hemos subido de ese contenido



Para realizar este tutorial he usado la versión 6.16 de Drupal y los módulos:

Vamos a partir de una instalación limpia de Drupal con estos módulos contenidos en ella.

Video:

miércoles, 10 de marzo de 2010

Cómo hacer un backup en local de nuestra página Drupal

Esta es una pregunta que me estaba haciendo bastantes veces por el miedo a que estos hostings gratuitos de hoy en día se fueran al garete en el momento menos pensado. De hecho, tenía pensado hacerlo pero hasta que no he tenido problemas de verdad no me he centrado en hacerlo.

Para empezar a hacer nuestra copia de seguridad de un sitio Drupal que tengamos publicado en la web (se puede hacer a la inversa) tenemos que tener en cuenta que debemos hacer dos copias de seguridad, del sitio en sí (ficheros) y de la base de datos.

Backup del sitio

En primer lugar vamos a hacernos una copia del sitio. Nos copiamos todo lo que tenemos subido, es decir, archivos originales de la instalación, módulos que hayamos agregado y archivos adicionales del uso de la página, fundamentalmente imágenes.

- Accedemos como queramos a donde tenemos el sitio (FTP, explorador si lo tenemos en local, etc) y vamos a la raíz, que es el directorio donde se encuentra index.php, update.php, cron.php, ...
- Ese directorio y todos los que contiene los copiamos, es decir, nos los bajamos a nuestros local.

Una vez hecho esto ya tenemos nuestra copia de seguridad del sitio.

Backup de la Base de datos

Para hacer una copia de la base de datos vamos a tener que hacer uso de alguna herramienta.

Normalmente todos los alojamientos disponen de una llamada phpMyAdmin que permite administrar las bases MySQL que tengamos alojadas en un servidor. Una de las capacidades de esta herramienta se encuentra en el apartado "Exportar" y nos permite obtener algún fichero de la extensión que le digamos con todos los datos de nuestra base.

Nosotros normalmente haremos un backup de la base con inserts extendidos y con extensión sql. Obtendremos un archivo "basededatos.sql" con todo el contenido de la base de datos que ha ido manipulando drupal a medida que hemos ido trabajando en ella.

Es recomendable antes de realizar este backup borrar la caché de datos de drupal para no hacer copias de datos innecesarios.

Integrar las copias en nuestro local

Para integrar las copias en nuestro local vamos a necesitar dos herramientas:

  • Un servidor Apache para los ficheros php del sitio. Existen varios que cumplen este requisito como AppServ, WebServ o Xampp. Algunos contienen una distribución de MySQL integrada para que no sea necesario descargarla
  • Un paquete de herramientas administrativas para operar con bases de datos MySQL por lo que, efectivamente, debemos tener instalado MySQL en nuestro equipo. Yo, particularmente uso MySQL GUI Tools
Empezaremos por migrar la base de datos.

  • Debemos crear una base de datos dentro de MySQL, lo que viene siendo crear un nuevo esquema. Por ejemplo, lo creamos con el MySQL Administrator del paquete que indicamos anteriormente. Pongámosle, por ejemplo, "drupallocal"
  • Abrimos el MySQL Query Browser (importante seleccionar como default schema -esquema por defecto- el recién creado drupallocal) y marchamos a File -> OpenScript... . Ahí se nos abrirá un explorador donde seleccionaremos el archivo sql que obtuvimos de nuestro backup generado por phpMyAdmin. Se nos mostrará el contenido del backup y le daremos a "Execute" recordando que debe estar marcado como default drupallocal.
  • Una vez hemos ejecutado y si no ha habido ningún problema deberíamos tener nuestra base de datos migrada. Podemos comprobarlo mirando en el esquema si se han creado tablas y tienen datos dentro.
Ahora vamos a migrar el sitio.

  • Tenemos que instalar el servidor apache para que pueda interpetrar los ficheros php de los que se compone el sitio Drupal.
  • Tenemos que mover los ficheros que nos hemos bajado del sitio a una carpeta específica del servidor. En el caso de AppServ es %ruta_instalacion_AppServ%/www/ , por ejemplo.
  • Una vez copiado en la carpeta que sea debemos acceder a la carpeta %ruta_instalacion_AppServ%/www/drupallocal/sites/default/ y modificar el fichero settings.php. Tenemos que cambiar la entrada poniendo nuestro usuario, password, host y el nombre de la base de datos (en nuestro caso drupallocal):


    $db_url = 'mysql://user:pass@localhost/drupallocal';

Una vez realizados estos pasos tenemos copiada la página en nuestro local y si nuestro servidor está corriendo accediendo a http://localhost/drupallocal/ (en caso de AppServ) entraremos en nuestra página en drupal exactamente igual que como la tenemos en publicada. Al acceder a nuestro link "Noticias" vemos como... ¿error 404?. Sí, es posible que pase una vez hemos migrado la página a local.

Tenemos que hacer un par de cositas más para que funcione:

  • Ejecutamos http://localhost/drupallocal/update.php que podremos ejecutar si tenemos en el fichero settings.php anterior la entrada (si la tenemos, ejecutamos el update y cambiamos esta propiedad a FALSE)


    $update_free_access = TRUE;

  • Una vez hemos hecho esto, ejecutamos http://localhost/drupallocal/cron.php
Probamos de nuevo nuestra web y... sigue fallando. Lo más probable es que en nuestro espacio publicado tuviéramos activadas las Clean URLs de Drupal, que en principio no están soportadas por nuestro servidor Apache. Si accedemos a http://localhost/drupallocal/?q=admin/settings/clean-urls y las desactivamos. Ahora funcionará todo, pero nosotros, realmente lo queremos tener exactamente igual que nuestro espacio publicado. Entonces debemos hacer una cosita más.

El servidor Apache al iniciarse carga diversos módulos que necesita para su funcionamiento. Uno de ellos, llamado mod_rewrite, permite reescritura de URL's al vuelo (definición de andar por casa) pero, por defecto, Apache no lo carga. Normalmente este módulo si se carga en los servidores de los hosting gratuitos por lo que se observará que las URL limpias no dan problemas en sitios Drupal en remoto, pero sí en local. Debemos buscar un archivo llamado httpd.conf y buscar donde se encuentra la carga de módulos (LoadModule ...). Pues debemos descomentar la parte que pone:

LoadModule rewrite_module modules/rewrite_module.so

Después de reiniciar el servidor, volvemos a la página de Clean-URLs y las activamos para que, por fin, tengamos todo tal y como está en nuestro espacio publicado.