Logo geekia
Posts etiquetados con: Drupal

Migrando y rediseñando el que es y será nuestro último drupal

Uno de los últimos proyectos en el que hemos trabajado ha sido la migración de un marketplace ( más o menos 😛 ) bajo drupal con una estructura un poco liosa y un theme bastante antiguo.

Debido a que algunos de los módulos creados y usados todavía no se habían migrado a drupal 8, pensamos que la opción más correcta era seguir con drupal 7, especialmente también por tiempos y presupuesto 😉

En principio, el cliente solo nos solicitó pequeñas cambios estéticos y de funcionalidad pero comprabando como estaba el site, nuestra propuesta fue un rediseño completo, tanto del theme como del propio funcionamiento.

Antes del rediseño visual nos encargamos de unificar y simplificar la arquitectura de contenidos, basándonos principalmente en el nodo anuncio, que es el principal del site.

Diseño antiguo

Diseño antiguo

El cliente nos comentaba que las llamadas para modificar algo del anuncio o para darlo de alta eran constantes, así que, una vez unificados los diferentes tipos de contenido en uno, se preparó para que su creación no fuera tan “liosa”.

Usamos el módulo create and reg para que cuando se creara un anuncio, se cree tambien un usuario ya que muchos de los problemas de la anterior versión eran que tenían que dar de alta antes un usuario para poder generar despues el anuncio.

Además, para crear el anuncio, eliminamos todos los posibles distractores para que el usuario se centrara exclusivamente en eso.

El resultado hay sido una mejora considerable en el tiempo a la hora de crear un anuncio y la minimización de posibles errores.

Una vez habiamos resuelto la creación del anuncio, lo demás ha sido trabajar en base a él, creando las vistas y demás.

 

Nuevo diseño

Nuevo diseño

Para la migración de los anuncios antiguos al nuevo sitio no hemos usado migrate, hemos creado un pequeño módulo para ello ya que además de migrar necesitabamos crear nuevos campos y rellenarlos con información dependiente de otros campos.
“Poco despues hemos descubierto que se podría haber hecho tambien con migrate :(”

Sin embargo, para la otra parte de la web, el foro, si la hemos utilazado y ha sido bastante sencilla su implementación.

En el nuevo diseño visual, se han mantenido los colores oscuros y se ha basado en el framework Foundation si, somos de los raros que no usan Bootstrap para el front-end pero nos hemos adaptado a trabajar con él y de momento cubre la mayoría de nuestras necesidades.

La home se ha unificado con la vista anuncios y se ha mejorado la presentación de los mismos.

Listado antiguo

Nueva home y listado

 

Otro de los puntos creados han sido los nuevos banners, menos intrusivos e incorporados al propio grid del theme, y los destacados en un carrusel en la parte superior y dentro de cada anuncio en la parte inferior del mismo.

Pero, como antes comentaba, sin duda alguna el cambio visual en el nodo anuncio ha sido el más completo.

Se ha dado más importancia a las imágenes, se ha mejorado la validación, se ha incorporado un sistema de favoritos y se han taxonomizado los anuncios para un mejor resultado en la búsqueda, la cual tambien ha sido mejorada, entre otras muchas más cosas.

Antigua vs Nueva

Internamente, el panel del usuario para poder gestionar sus anuncios también se ha diseñado desde cero así como el del administrador.

En definitiva, lo que iba a ser un pequeño trabajo de theming se convirtió en un proyecto completo, el cual está funcionando bastante bien.

pd: no se cual ha sido el equipo de desarrollo anterior, pero con mensajes como éste en el código, me han ganado, eso es comentar y lo demás tontería.

codigo


Drupal 8, mucho más que corazón

He de reconocerlo… me encanta Drupal y su actual rama 8 mucho más 😛

Hace unos meses escribía que estamos usando Drupal 8 en Geekia como parte del desarrollo de una App. Esta última semana decidí actualizar a la versión 0.40 del framework que usamos, React Native, ya que necesitaba una serie de módulos que solo funcionaban a partir de esta versión. Aunque se puede actualizar a través de CLI con reactnativegitupgrade, no paraba de darme errores con algunos de los módulos. Así que la mejor forma ha sido con una instalación limpia. Salvo algunos “problemillas”, con fácil solución, creo que ha sido lo más sencillo.

Una mejora notable ha sido el menor consumo en la App, de momento los esfuerzos se centran en la versión iOS, así como una mejor compatibilidad con algunos módulos.
"dependencies": {
"base-64": "^0.1.0",
"react": "15.4.2",
"react-native": "^0.40.0",
"react-native-checkbox-field": "^1.1.2",
"react-native-datepicker": "^1.4.3",
"react-native-extended-stylesheet": "^0.3.1",
"react-native-keyboard-aware-scroll-view": "^0.2.6",
"react-native-linear-gradient": "^2.0.0",
"react-native-maps": "^0.13.0",
"react-native-push-notification": "^2.2.1",
"react-native-qr-barcode": "^0.6.4",
"react-native-radio-buttons": "^0.14.0",
"react-native-router-flux": "^3.37.0",
"react-native-swiper": "^1.5.4",
"react-native-vector-icons": "^4.0.0",
"react-redux": "^5.0.2",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0"
}

Pero, donde más se ha notado el cambio, ha sido con Drupal ya que a partir de ahora y gracias al módulo Push Notifications, va a ser tambien el encargado del envio de push a los dispositivos en vez de parse que fue con el que comenzamos.

De esta forma Drupal pasa a ser también el “cerebro” de la App ya que, además de gestionar los usuarios, las ofertas y la geoposición de los establecimientos, será también el encargado del envio de notificaciones a los dispositivos (rules)

Ésta va a ser la primera App en la que Geekia se ha encargado de todo el diseño, desarrollo, lógica de funcionamiento…


Drupal 8, el mejor corazón para un desarrollo

Hace unos meses empezamos a trabajar con una empresa que tiene tiendas por toda España, la mayor parte del trabajo es y ha sido relacionado con el marketing, tanto online como offline pero ahora ha tocado la parte técnica, más concretamente en “mejorar” su programa de fidelización.

Actualmente cuentan con un programa de bonos los cuales se reparten en unas fechas determinadas del año. Para romper la estacionalidad decidimos crear unos bonos que se “consumirán” a través de una App. Salvo una serie de condiciones que nos exigió el cliente, algunas que no compartimos, nos aceptaron la creación de la app.

Limpiando para mejorar

El primer problema con el que nos encontramos fue su ERP, aunque bastante potente, estaba un poco limitado para extraer datos, además de que necesitaba urgentemente  un saneo de los mismos. Estamos hablando de una bbdd de aproximadamente 500.000 usuarios, la gran mayoría recurrentes y repartidos por mucha parte de la geografía española. Esa “limpieza” se ha estado llevando a cabo durante estos últimos meses y gracias a la empresa desarrolladora del ERP se ha podido mejorar su conexión con el exterior, con una serie de servicios web tanto para la gestión de usuarios, como para el consumo de bonos.

El corazón de la app

Una vez estaba resuelta la conexión, comenzamos con la creación de una API que “alimentaría” la propia app. Para ello decidimos usar… a ver si lo adivinas… pues si, drupal y más concretamente pensamos en la versión 8 ya que su desarrollo potenciando la omnicanalidad lo hace el más adecuado para ello, además de servirnos como banco de pruebas para el uso de esta nueva versión de nuestro CMS favorito 😉

El desarrollo lo comenzamos con la versión 8.0.0, pero actualmente lo hemos migrado a la 8.2.0, con todo lo que ello ha conllevado. Todos los servicios se han segurizado con OAuth 2.0, además del propio basic_auth del core de drupal. Desde el CMS se gestionan las ofertas que se mostrarán en la app así como la conexión con el gestor de notificaciones, para ello hemos usado parse, y nos está dando muy buenos resultados.

Otra de las funcionalidades que se gestionan desde aquí, es la geoposición de las distintas tiendas que dispone el cliente, mediante la creación de un nodo específico y su correspondiente service.

Drupal 8 nos ha permitido integrar a través de su API REST, todo lo necesario para poder servir los datos de forma correcta, sencilla y segura.

…y por fin, la app

Para el desarrollo de la app hemos optado por un desarrollo híbrido y, aunque tenemos experiencia ya en Ionic, hemos elegido React-Native, a pesar de que solo hemos hecho un desarrollo (en React), su flexibilidad y potencia nos hizo creer que era la mejor opción. De momento, y salvo el cambio tan rápido de versiones que están teniendo, lo cual no está del todo mal, pensamos que la opción ha sido la más acertada.

Durante esta fase, todavía en desarrollo, se ha tenido que “experimentar” muchísimo, tanto que daría para un nuevo post, eso si, por si os puede interesar los módulos que estoy usando son estos:
"dependencies": {
"base-64": "^0.1.0",
"immutable": "^3.8.1",
"parse": "^1.9.2",
"react": "^15.3.2",
"react-native": "^0.34.1",
"react-native-checkbox-field": "^1.0.8",
"react-native-datepicker": "^1.3.2",
"react-native-extended-stylesheet": "^0.2.0",
"react-native-linear-gradient": "^1.5.4",
"react-native-maps": "^0.8.2",
"react-native-nav": "^1.1.4",
"react-native-push-notification": "^2.1.1",
"react-native-qr-barcode": "^0.6.4",
"react-native-radio-buttons": "^0.11.0",
"react-native-remote-push": "^1.0.3",
"react-native-router-flux": "^3.26.16",
"react-native-side-menu": "^0.19.0",
"react-native-swiper": "^1.4.5",
"react-native-vector-icons": "^2.1.0",
"react-redux": "^4.4.5",
"redux": "^3.6.0",
"redux-thunk": "^2.0.1"
}

De ellos, sin duda alguna el que más me ha parecido “magia” ha sido redux… cómo he podido estar desarrollando sin conocer esta maravilla 😉

Para esta parte del desarrollo cambiamos del IDE (o editor) que estábamos usando hasta ahora, NetBeans, por Atom con Nuclide y ya se ha convertido en nuestro editor de código de cabecera… tranquilos, SublimeText todavía no lo he desinstalado y lo sigo usando para otros menesteres 😉

El soporte que tiene Nuclide de React-Native es sin duda alguna mejor que en otros editores, lógico por una parte ya que ha sido desarrollado también por los mismos, Facebook

Una vez todo funcione junto, el flujo de la app deberá ser como esto:

Flujo de la app

 

Esperemos poder presentar el desarrollo muy pronto 😉


DrupalCamp Spain 2010, el poder del voluntariado

Hace algo mas de 24 horas que termin­ó la DrupalCamp Spain 2010 y tení­a muchas ganas de hablar sobre como han sido estos dí­as en ella, si bien el tí­tulo creo que lo expresa muy bien, ENHORABUENA a todos los voluntarios/as (entre los que me incluyo) que de una forma u otra han hecho que todo funcionara a la perfecci­ón 😉
Por supuesto, sin olvidar tampoco a nuestros sponsors ya que sin ellos no habrí­a podido llevarse a cabo:

Nota, el post en plural ya que de Almerí­a fuimos Manolo Ruiz y yo

Viernes 26
Llegada en avi­ón a Barcelona y en tren hacia Cornellí , llegamos un poco tarde, en la puerta estaban con la bolsa de merchandising, muy completa por cierto (la alfombilla de Investic muy chula). En la sesi­ón de bienvenida ya se notaba el ambiente, estaba lleno el auditorio.

Entrada al Citilabmerchandasing

El Citilí b nos parecio increible, las instalaciones, el sitio… y la lona qued­ó genial, es una gran satisfacci­ón ya que estaba hecha con Inkscape 😉

Una vez finalizada la sesi­ón, por fin!!! pude conocer a Jaume, Carlos, Pedro y Robert, salvando algunas sesiones, una de las mejores cosas de esta DrupalCamp conocer a la gente con la que has estado en contacto estos ­últimos meses para la preparaci­ón de esto.
Ese mismo dí­a asistí­ a las sesiones de Migrate y Table Wizard, o como aprendí­ a dejar de preocuparme y amar las migraciones de Modesto Caballero, bastante interesante y amena y despues en Unit testing & Integration testing. Implementaci­ón en Drupal por javier muy muy técnica y “reveladora” 😉

Por la noche nos toco “conocer” Barcelona gracias a Diego Zamora lo pudimos hacer…. mas o menos 😉 y además cenamos en un sitio que os aconsejo Menjador
Continue Reading


Es de bien nacidos ser agradecidos

Ya lo decia mi madre hace tiempo, pero nunca lo habí­a tenido en cuenta.

Es de bien nacidos el ser agradecidos

Hace ya unos años que llevo con el Software Libre y si bien, colaboro en foros y ayudo a quien me lo ha estado pidiendo, nunca me habí­a planteado el donar algo a “la causa”, y creo que ya va siendo hora de devolver un poco de lo que he conseguido gracias a Drupal. Es por esa raz­ón que hoy me he hecho de la Asociaci­ón Drupal y así­ poder aportar también mi granito de arena.

da-individual


Traducir opciones de un CCK o de un Webform

En la ­última web que he preparado me ha surgido un “problemita” con el tema de las traducciones en el apartado de las reservas, al principio habia generado un nodo distinto para cada idioma y todo funcionaba correctamente, pero luego me he dado cuenta que cuando quieran añadir algun campo nuevo poner la web en más idiomas me iba a tocar cambiarlos en todos uno por uno.

Como “uno” es un flojo, decidi crear un solo nodo (webform) y traducir los textos, hasta ahí­ sin problema, el problema ha ocurrido cuando he intentado traducir las opciones de un campo. El campo “room type” tiene dos opciones, double room y single room… pero no he encontrado ninguna forma que me funcionara para traducirlo 😛

Así­ que he echado mano del hook “form_alter” y GENIAL, es posible que se pueda hacer de otra forma… pero no la he encontrado, os pongo como lo he hecho por si os sirve 😛

function formularios_form_alter(&$form, $form_state, $form_id) {
//print_r($form); # para saber cual es el formulario

$formulario='webform_client_form_ID'; # el formulario que quiero cambiar
if ($form_id==$formulario){
$form['submitted']['room_type']['#options'] = array(
'double' => t('Double room'),
'single' => t('Single room')
);
}
}

Asi de simple, luego solo tengo que cambiar para cada idioma las cadenas dentro de t() y listo opciones cambiadas para idioma.

Me ha ayudado bastante este post