drupal

Drupal 7, 8 o 9

Cuando se libero por primera vez Drupal 7, las migraciones de sitios basados en drupal 6 no fue sencilla, hasta se podria decir que fue traumatica. Las APIs de Drupal, habian cambiado, habian fields que no eran compatibles y no todos los modulos tenian soporte en la version 7. 

Han pasado 8 años desde aquel 5 de Enero del 2011 y la migracion entre drupal 7 y drupal 8 va ser incluso mas dolorosa. Los sitios de tipo blog sin muchos campos adicionales no van a tener mayor problema, pero no asi los medianamente complejos.

Actualmente ( a Diciembre del 2018 ) existen 753 mil sitios basados en drupal 7 y apenas 194 mil en drupal 8 y eso que ya han transcurrido mas de 3 años de su lanzamiento en noviembre del 2015. Existen cerca de 14 mil modulos para drupal 7 y un poco mas de 6 mil para drupal 8.

Pero a que se debe esto ?

En primer lugar mencionar que a diferencia de todas las versiones anteriores de drupal, la version 8 es la primera en usar un framework de php, explicitamente Sinfony. Esto implica que TODO el codigo interno de Drupal tuvo que ser reescrito. Todos los modulos de drupal 8 tambien tuvieron que ser reescritos. El sistema de templates de Drupal 8 tambien cambio, ahora esta basado en Twig, por lo que todos los temas escritos para Drupal 7 tuvieron que ser reescritos desde 0.

Para complicar aun mas la situacion, drupal utiliza fields para almacenar la informacion, sin embargo no todos los fields de drupal 7 existen o tienen un equivalente en drupal 8. Y aunque existe una herramienta para migrar la informacion de un sitio drupal 7 a drupal 8, los valores de esos fields no siempre son migrados adecuadamente, y en algunas ocasiones no son migrados en absoluto. Es decir se migra el nodo, pero no la informacion extra que contiene.

Asi mismo, a dia de hoy no es posible migrar las vistas ... es decir deben ser reescritas desde 0. 

Que implicancias tiene esto ?

La mas importante de todas ... una actualizacion de un site de Drupal 7 a Drupal 8 debera ser probablemente considerado como un proyecto nuevo de desarrollo mas un proyecto de migracion de data. 

Pero no dijiste que una herramienta de migracion ? Si, pero al no funcionar de forma completa lo mas adecuado seria escribir un codigo que se encargue de leer los nodos y sus respectivos fields de drupal 7 y crear nodos equivalentes en la nueva version de drupal 8.

Y hasta cuando estara disponible la version 7 de drupal 

Actualmente en el ecosistema de drupal conviven 3 versiones. La version Drupal 7 que estara disponible hasta Noviembre del 2021. La version Drupal 8 que esta vigente desde Noviembre del 2015 y probablemente seguira vigente hasta Noviembre del 2021 y la version Drupal 9 que esta actualmente en desarrollo y que probablemente sea liberada en algun momento antes de Noviembre del 2021.

El fin de soporte de una version de Drupal, significa que no existiran nuevas funcionalidades y que no habra correcciones de errores o problemas de seguridad. Basicamente tu sitio debera defenderse solito de hackers y spammers. Aunque podras seguir usandolo ( y probablemente todavia existan muchos sitios en drupal 7 en el 2022 ) seria bajo tu propio riesgo.

La dificultad en la migracion de Drupal 6 a Drupal 7 y de Drupal 7 a Drupal 8 volvera a ocurrir en Drupal 9 ? Probablemente no. Aunque es verdad que toda migracion mayor implica romper la compatibilidad, tambien es cierto que mientras Drupal siga usando sinfony como base, este cambio no deberia ser tan brusco.

Porque sale una version nueva de Drupal tan pronto ?

Ahora que Drupal esta sujeto al uso de Sinfony, se ve en la necesidad de hacer lanzamientos basandose en el ciclo de vida del mismo Simfony, la cual dejara de tener soporte en Noviembre del 2021. Es por eso que Drupal necesita, si o si, tener una version ( Drupal 9 ) que use la version 4 de Simfony para no dejar de tener soporte.

Entonces, migro a Drupal 8 o espero a Drupal 9

Esa es una decision muy personal. Actualmente existen muchos modulos que todavia no tienen soporte en Drupal 8 ... probablemente sean modulos abandonados que ya nunca mas tendran soporte en versiones nuevas de Drupal. Por otro lado existen importantes mejoras en la Interfaz de usuario de Drupal que hace muy apetecible migrar lo antes posible ( sino fuera por el costo de la migracion )

En lo particular considero esperar a la liberacion de Drupal 9 ( en Junio del 2020 ) antes de realizar cualquier migracion ... aunque los nuevos sitios de Drupal ya deberian ser realizados en Drupal 8 



Contactanos

AntiBot - Drupal Spam Module

Antibot es un modulo drupal que nos permite evitar la proliferacion de spam en nuestro sitio. Para instalarlo recurrimos a nuestra querida herramienta drush

drush en antibot -y

Una vez instalada en nuestro panel de configuracion debemos activar en que formularios estara activa, por defecto esta activa en el formulario de login, de registro y el formulario de contacto de drupal. Si queremos activarla en otro lugar debemos indicarle el id del formulario, tambien podemos usar wildcards para hacer esta configuracion mas facil.

En nuestro caso, la utilizamos en los formularios de webform, por lo tanto le indicamos que tambien debe estar activo en webform_client_*

Una vez realizado este paso, en cada formulario webform se activara el modulo antibot.

Este modulo funciona obligando al usuario a tener activado javascript en su navegador. En el 2008 se buscaba que los sitios web funcionaran incluso sin javascript, pero en el 2018 son tantos los sitios con javascript ( youtube, facebook, ... ) y javascript es tan omnipresente que podemos darnos el lujo de exigir que este activo.

El modulo antibot, verifica que se use el teclado fisico o el raton para recien habilitar el formulario para el envio de informacion.

 



Contactanos

Happy Pets - Historial Clinico para Mascotas

Happy Pets - Historial Clinico para Mascotas, es una plataforma online que permite a las veterinarias y a los dueños llevar el control sobre la salud de sus mascotas.

Con Happy Pets - Historial Clinico para Mascotas, el veterinario puede tener acceso con un solo click a todo el historial medico de la mascota. Incluyendo radiografias, analisis clinicos, vacunas aplicadas, aumento de peso, medicinas recetas, etc.

 

Con Happy Pets - Historial Clinico de Mascotas pudes buscar facilmente el registro de cualquier mascota ahorrandote mucho tiempo en archivos fisicos.

Happy Pets, te informa de las consultas agendadas para el dia de hoy y para la seamana siguiente. Tambien le envia recordatorios por email de forma automatica a tus clientes para avisarles de la fecha de una consulta agendada. Asi evitas, que los dueños se olviden de sus citas de revision o de la fecha en la que deben aplicar la vacuna.

Las clinicas veterinarias pueden usar Happy Pets desde sus computadoras, tablets o incluso desde su celular, sirviendoles de apoyo incluso en atenciones veterinarias a domicilio. 

Si quieres probar Happy Pets en tu Clinica Veterinaria puedes registrarte en su web Happy Pets



Contactanos

Registro de Usuario solo con Correo Electronico en Drupal

Drupal trabaja con dos datos de usuario (username, correo electronico) para la gestion de usuario esto  complicando un poco la gestion del administrador y tambien del usuario final ya que se puede olvidar del nombre de usuario que ingreso al momento de crear la cuenta. Para solucionar este problema la comunidad de drupal desarrollo un modulo llamado "Email Registration".

Modulo Email Registration

Permite a los usuarios registrarse e iniciar sesión utilizando sólo una dirección de correo electrónico. Los usuarios pueden iniciar sesión utilizando su dirección de correo electrónico y su contraseña para la autenticación.

Para Instalar el modulo usamos el siguiente comando drush :

drush en email_registration -y
 

Este modulo no necesita ninguna configuracion. el resultado que se busca es inmediato.

Antes:


 

Despues:

 

 



Contactanos

Caso de Exito - Recetas Bimbo

El portal Bimbo Recetas busca promover en los consumidores de productos Bimbo diferentes recetas que se acomeden a su estilo de vida. Ofreciendoles alternativas para diferentes momentos del dia o recetas relacionadas con el tipo de producto que suele consumir.

 


 

 

 



Contactanos

Como enviar emails en drupal

Para enviar correos en Drupal se debe realizar un procedimiento en 2 etapas.

Primera Etapa - Armar el correo

Aca recolectamos todas la informacion necesaria para enviar el correo y lo enviamos a la cola de correo de Drupal
$to ='youremail@gmail.com;       //gets the current user's mail address
$from = variable_get('site_mail', '');    //admin's mail address
$body = 'Gracias por visitarnos.';
 $attachment = array(
      'filecontent' => file_get_contents('Link to file'),
      'filename' => 'filename.pdf',// You can change the name and extension of the file         you need to send.
      'filemime' => 'text/plain',  
      );
 $params = array(
 'subject' => 'Bienvenido',
 'body' => $body,
 'attachment'=>$attachment,
);
drupal_mail('modulename', 'yourkey', $to, language_default(),$params,$from); 

 

 

Segunda Etapa - Enviar el Correo

En la cola de correos de Drupal, el sistema evalua cada solicitud pendiente de ser enviada y debe llenarse adecuadamente 

function yourmodule_mail($key, &$message, $params){
      switch ($key) {
            case "yourkey":   
                 // Set the mail content type to html to send an html e-mail (optional).
                 $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
                 // Grab the subject and body from params and add it to the message.
                 $message['subject'] = $params['subject'];
                 $message['body'][] = $params['body'];
                 if (isset($params['attachment'])) {
                        $message['params']['attachments'][] = $params['attachment'];
                  }
                  break;
          }
}

 



Contactanos

Reconstruir cache en Drupal

Drupal maneja un avanzado sistema de cache, que le permite visualizar rapidamente un contenido a pesar de tener multiples query a la base de datos por cada pagina que visualiza.  Sin embargo, cuando se realiza la instalacion o migracion de un sitio drupal, muchas veces no es posible acceder al nuevo sitio ... precisamente por su cache. El sistema de drupal cree que los archivos estan guardados en /home/developer ( estacion de desarrollo ) cuando realmente estan en /var/www/html/produccion  ( servidor principal ) causando que la pagina se quede en blanco. 

Para solucionar este impase, solo debemos limpiar la cache de drupal para que el la vuelva a crear al tratar de entrar al sitio. Hay varias formas de hacer esto:

Panel de Desarrollo

Puedes limpiar la cache de drupal, accediendo al menu de Administracion -> Configuracion -> Desarrollo -> Performance y haciendo click en el boton "Clear all caches"

Claro, si no te carga la pagina de drupal dificilmente podras acceder a dicho menu. Sin embargo, existen otros casos donde se pueden solucionar las cosas limpiando cache. Como por ejemplo, cuando drupal no reconoce un archivo del tema, o hay un problema en la renderizacion.

 

Drush

Esta es mi favorita. Tengo drush en todas mis instalaciones de drupal. Drush es una herramienta de linea de comandos que te permite interactuar con tu instalacion drupal. Para usarla, deberas ir a la carpeta donde esta instalado tu drupal y ejecutar el siguiente comando

drush cc all

El problema con drush, es que si tienes un hosting compartido ... lo mas probable es que no tengas linea de comandos. 

 

Update.php

Tambien puedes limpiar la cache ejecutando el script PHP update.php. Tan solo debes ir a tu navegador y apuntar la siguiente url http://tusitio.com/update.php

Eso si, asegurate previamente que en tu archivo de configuracion la variable $update_free_access este seteada a TRUE, luego de ejecutado esta limpieza deberas volverla a poner en FALSE por seguridad.

 

Base de datos

Por ultimo, si ya estas al borde de la desesperacion ... siempre puedes conectarte a la base de datos y borrar todos los registros de las tablas que se llaman cache_*

 



Contactanos

Como funciona Drupal ?

Todas las peticiones a Drupal son atendidas por index.php ejecutandose los siguientes pasos:

Bootstrap

En esta etapa se carga el drupal mismo para atender cada peticion que se le hace al servidor.

Inicializacion

Se carga la configuracion definida en el archivo settings.php y se establece la base URL del sitio web.

Cache de Pagina Temprano

En situaciones con alto trafico se invoca un sistema de cache antes inclusive de conectarse a la base datos. Este etapa solo funciona si se ha configurado la variable page_cache_fastpath a TRUE. Cuando una peticion entra a esta etapa el sistema le devuelve el contenido al navegador y termina el proceso drupal.

Inicializacion de la Base de datos

Se configura y realiza la primera conexion a la base de datos

IP Based Access Control

En este punto drupal bloquea los accesos en funcion del nombre/IP de la maquina cliente.

Inicializacion de la Session

Drupal carga la informacion de la sesion del usuario directamente de la base de datos.

Cache de Pagina Tardio

En este punto, Drupal determina en funcion de la informacion del usuario ( roles, permisos, etc ) si tiene la informacion solicitada en el cache o debe generarse de nuevo. Si tiene la informacion en la cache la solicitud se detiene en ese punto.

Seleccion de Idioma

Drupal determina aca que idioma debe trabajar, y se busca la informacion en el idioma seleccionado.

Path

En esta etapa, Drupal determina quien debe procesar la peticion en funcion de la URL solicitada.

Completada Carga inicial

Llegados a este punto el proceso de carga de drupal a terminado. De aca Drupal, lanza init_hook para que todos los modulos habilitados para el sitio tengan la oportunidad de cargarse.

Procesando la peticion

Drupal envia la peticion ( URL ) a la funcion hook especifica para su procesamiento

Themes

Luego de haber procesado la informacion solicitada, drupal llama al theme para que se encargar de armar la visualizacion de la misma. Al momento de procesar el theme se procesan en el siguiente orden:

  • html.tpl.php Es el archivo encargado de definir el head y el body. Asi como de cargar los estilos y los javascript declarados en el info. Usualmente no es modificado.
  • page.tpl.php Es el archivo encargado de visualizar las regiones declaradas en el info. Aca usualmente se carga el menu principal. 
  • region.tpl.php Este archivo es el encargado de controlar la  visualizacion de las regiones 
  • block.tpl.php Cada region puede tener diferentes blocks que son definidos en el menu Structure -> Blocks. Este archivo se encarga de controlar la visualizacion de cada bloque.
  • node.tpl.php Existe un bloque especial en drupal llamado content. En el caso que nuestra URL apunte a un nodo el contenido de ese nodo se mostrara usando este archivo.


Contactanos

Configurar Drupal con Amazon S3

Amazon S3 es la solucion de almacenamiento hoy por hoy mas popular del mercado. Lo usa dropbox, digital ocean, netflix y muchos mas.

La principal ventaja que tiene el servicio S3 ( para mi al menos ) es la seguridad. Restaurar un sitio web, moverlo de servidor es mucho mas rapido. Ya que las imagenes y archivos subidos por los usuarios se encuentra en un servicio tercerizado.

Hoy veremos como configurar nuestra cuenta AWS con un portal drupal, para lo cual utilizaremos las siguientes herramientas: Una cuenta de Amazon S3 ( http://aws.amazon.com ), la linea de comandos de Drupal ( drush ) y el modulo drupal S3FS .

Instalar S3FS

Para instalar este modulo drupal, usaremos DRUSH.

drush en s3fs

Este comando lo descarga e instala el modulo. Sin embargo, sera necesario "compilarlo"

drush make --no-core sites/all/modules/s3fs/s3fs.make

Configurar S3FS

Ahora nos vamos a la seccion de configuracion ( admin/config/media/s3fs ) y copiamos nuestras credenciales de AWS

Las credenciales de AWS las puedes sacar de: https://console.aws.amazon.com/iam/home?security_credential#/home

Una vez copiadas nuestras credenciales ( ACCESS_KEY, SECRET_KEY, S3_BUCKET_NAME, S3_REGION ), seguimos a la seccion de configuracion avanzada y activamos el uso de s3 para los archivos public:///

Y guardamos la configuracion

Clear Cache

Una vez terminada la configuracion, vamos a la url ( admin/config/media/s3fs/actions ) y limpiamos la cache de los archivos

Subir archivos

Para subir los archivos ya existentes a S3, se recomienda usar DRUSH sobre todo si hay una gran cantidad de archivos ( mas de 100 ) o son muy pesados.

drush s3fs-copu-local

Y a partir de ahora tu sitio drupal ya usa el servicio AWS-S3 para todos los archivos subidos por los usuarios. ;) 

 

 

 



Contactanos

PLANEA WEB - Minedu

Proyecto del MINEDU desarrollado en conjunto con 86Interactive que busca brindar información actualizada sobre el plan de Educacion Ambiental 2017-2022 a todos los actores educativos ( maestros y directores ) de todo el Perú.

 



Contactanos