drupal

Drupal es un popular y poderoso CMS que funciona con PHP.  Drupal dispone de numerosos modulos que le permiten extender funcionalidades a diferentes areas como son universidades,  sistemas de gestion, etc.

Mundo Bimbo

Un sitio web de recetas de la marca Bimbo ofrece deliciosas ideas de cocina y postres utilizando productos de la marca. Con fáciles pasos y fotografías, puedes encontrar inspiración para tus comidas diarias o para ocasiones especiales. ¡Disfruta de la comida Bimbo!

La implementación del sitio web se realizo con Drupal, bajo las politicas de seguridad del grupo Bimbo.

Peruvian Drupal Website

Peruvian Airlines es una empresa de transporte aereo con sede en Peru. Peruvian, necesita un sitio web rapido y facil de administrar que le permitiera informar a sus clientes sobre nuevas promociones, actividades turisticas sugeridas en los diferentes destinos, etc.

Todo esta de forma que se pudiera diferenciar la informacion entregada a sus clientes en los diferentes paises donde operaba y en los diferentes idiomas que atendia a la vez que se permitira realizar una gestion simplificada en un unico panel administrativo.

En respuesta a esta problematica, se recomendo implementar el website usando Drupal 7, para permitir una facil administracion del contenido a la vez que se nos permitia personalizarlo de acuerdo al visitante online.

Configurar drush con drupal y docker-compose

Drupal es un CMS muy potente para la creacion de sitios web o MVP de aplicaciones, sin embargo algunas operaciones de mantenimiento son mas sencillas de realizar desde la consola de comandos o directamente ser automatizadas en el servidor. Para poder realizar estas funciones utilizamos drush, y en este articulo aprenderemos a usarlo con docker-compose.

Docker-compose

Docker compose es una herramienta para configurar entornos de desarrollo o produccion a traves de un archivo de definicion YML. En este archivo podemos definir toda la infraestructura de servidores que se necesita para un proyecto en especifico, en este particular para un sitio drupal.

Por ejemplo, este seria un archivo docker-compose.yml para drupal

version: '2'

services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=true

  drush:
    image: drush/drush:7
    volumes:
       - wwwroot:/app/
       - ./:/app/sites/default/

  web:
    image: drupal:7
    volumes:
      - wwwroot:/var/www/html/
      - ./:/var/www/html/sites/default/
    ports:
      - 80:80
    depends_on:
      - db
    stdin_open: true
    tty: true

volumes:
  wwwroot: {}

En este archivo, definimos 3 servicios:

  • DB, aca iniciara el motor de base de datos necesario para que drupal se conecte.
  • WEB, aca iniciara el servidor apache con una instalacion base de drupal
  • DRUSH, este servicio no es ejecutable, sino que nos permite ejecutar el comando drush en la misma carpeta de codigo que usa el servicio WEB.

Para iniciar el servidor de drupal debemos ejecutar el comando

docker-compose up -d web 

Este comando nos permite arrancar el servicio WEB y el servicio DB ( el cual esta ligado con WEB depends_on )

Para ejecutar un comando drush, usamos el siguiente comando

docker-compose run --rm drush cc all 

Este comando iniciar una instancia del servicio DRUSH, ejecuta el comando drush cc all y elimina la instancia.

Drupal Site – Mundo Bimbo

Mundo Bimbo es un sitio, basado en drupal, para compartir recetas basadas en los deliciosos productos bimbo para diferentes ocasiones y estilos de vida.

Mediante una interfaz administrativa personalizada en drupal, MundoBimbo permite compartir diferentes recetas teniendo como base los diferentes productos Bimbo y los diferentes momentos del dia.

Mundo Bimbo te ayuda a escoger el producto ideal para ti gracias a sus comparativas nutricionales.

Deshabilitando el Cache de Drupal para desarrollo

Drupal usa un sistema de cache para mejorar el rendimiento de los sistemas en produccion. Sin embargo, cuando estamos en desarrollo, este puede ser particularmente frustrante.

En mi caso, tengo que ir a la consola casi con cada cambio para ejecutar drush cc all o esperar varios minutos a que se apliquen los cambios en algun tema. Cambios que algunas veces puede ser simplemente correccion de algun label.

Investigando sobre el tema encontre un API de Drupal que me permite limpiar mi cache de forma automatica en cada request de drupal.

Solo debes incluir la siguiente funcion en drupal

cache_clear_all(NULL, ‘cache_page’);

Y hacer cambios rapidos en tu template sin tener que estar limpiando cache manualmente.

#HappyCoding

Drupal7 node template path based

Cuando queremos personalizar el theme de un nodo en drupal. usualmente tenemos la opcion de hacerlo basado en el content type: node–type.tpl.php

O tambien podemos usar el nid del nodo que queremos personalizar: node–nid.tpl.php

Sin embargo, en un proyecto con una gran cantidad de nodos personalizados es muy dificil seguir el rastro de a que nodo pertenece un theme.tpl.php

Para esto podemos crear themes basados en el path del nodo ( el cual deberia ser mas descriptivo )

Para esto creamos la funcion hook_preprocess_node en el archivo template.php

mytheme_preprocess_node(&$variables) {
  $alias = drupal_get_path_alias();
  $alias =str_replace('/', '_', $alias);
  $suggestion[] = "node__$alias";
  $variables['theme_hook_suggestions'] = array_merge($variables['theme_hook_suggestions'], $suggestion);
}

Y ahora ya podemos crear templates con el noombre del path de los nodos. Por ejemplo, si tenemos un nodo con el path “noticia/equipo-dota-peruano” podemos crear un archivo “node–noticia-equipo-dota-peruano.tpl.php”

#HappyCoding

Como convertir imagenes webp a png usando la linea de comandos

El formato webp, es el “nuevo” formato de google para compresion de imagenes sin perdida ideal para internet. Una misma imagen en webp ( 94k ) y en png ( 1.1 M ).

Sin embargo,  no todas las aplicaciones de linux ( o windows o mac ) estan preparadas para trabajar con este formato. Asi que para poder usarlas fuera del navegador deberemos convertirlas.

En linux existe una herramiento webp que vamos a instalar

sudo apt install webp

Y ahora podemos hacer la conversion con el siguiente comando

dwebp <imagen.webp>  -o <imagen.png>

Por si acaso, tambien podemos hacer el camino inverso. Hacer la conversion al nuevo formato webp usando el comando

cwebp <imagen.png> -o <imagen.webp>

Yo ya tengo varios proyectos web y mobiles donde valdria la pena usarla.

Como personalizar el login de Drupal, SimpleLogin

El login de Drupal /user/login, suele ser una pagina poco retocada en la mayoria de los sitios drupal. Principalmente, porque no hay un suggestion file para personalizarla ( aunque se puede crear uno, pero hay que indicarlo en el archivo template.php )

Por ejemplo,

function your_themename_theme() {
$items = array();
// create custom user-login.tpl.php
$items[‘user_login’] = array(
‘render element’ => ‘form’,
‘path’ => drupal_get_path(‘theme’, ‘your_themename’) . ‘/templates’,
‘template’ => ‘user-login’,
‘preprocess functions’ => array(
‘your_themename_preprocess_user_login’
),
);
return $items;
}

En este caso, ya podemos crear un archivo llamado user-login.tpl.php en nuestra carpeta templates.

Sin embargo, tambien existe un modulo que nos permite configurarlo de una forma mas plugandplay. Este modulo para personalizar el login de drupal se llama simplelogin.

SimpleLogin, nos permite manejar un login ( bastante simple ) pero mucho mas estetico que el login por defecto que trae drupal

Su configuracion es bastante sencilla. Nos permite definir si queremos un background de fondo, asi como incluir algunos CSS especificos para el login.

 

Actualización de modulos en Drupal … requiere FTP ?

Cuando tratamos de instalar un theme o un modulo en Drupal es posible que mas de una ocasion nos haya salido la siguiente pantalla de configuracion:

updatingModulesAndThemesRequiresFTPAccessToYourServer

 

Esto es porque drupal requiere que la carpeta sites/default sea propiedad del usuario apache ( www-data )

chown www-data sites/default -R

Y listo, ahora si podremos instalar nuevos modulos con un click.

686060-33.check-filetransfer-availability-install