Migración de datos CSV a párrafos

Posted by MTech on December 7, 2016 at 2:38pm
Migración de datos CSV a párrafos

Con el trabajo cotidiano de la oficina es natural que en el desarrollo de tareas se presenten desafíos y potenciales temas de investigación. Con la incorporación de nuestro desarrollador Lucas, al grupo de mantenedores del core del sistema de migraciones hemos decidido adentrarnos en este tema poco documentado como es la migración de datos CSV a párrafos.

Párrafos es la nueva forma de creación de contenido. Le permite a los constructores de sitios hacer las cosas más limpias para que pueda dar más poder de edición a sus usuarios finales.

Charlotte León Mié, 12/07/2016 - 08:38

Configurar las carpetas publicas y privadas en Drupal 8

Posted by drupaleros.es on November 28, 2016 at 8:54am
Drupal dispone de 2 metodos para almacenar los archivos, el sistema publico y privado. La ubicacion de estas carpetas, se puede modificar, es mas, la carpeta privada no viene definida por defecto, y la carpeta publica esta en /sites/default/files. En Drupal 7, la ubicacion de estas carpetas se puede modificar desde la administracion de Drupal, pero en Drupal 8, si vamos a Admin -> Configuracion -> Multimedia -> Sistema de archivos, veremos que no podemos modificar estas rutas, unicamente la de la carpeta de archivos temporales. Entonces, como modificamos estas rutas? Modificando... Leer mas

#DrupalDrama

Posted by Drupal Mexico on November 24, 2016 at 4:13pm
imagen drama

Luego uno se encuentra con cuentas y hashtag relacionadas a Drupal. En este caso lo relacionado a los dramas con drupal. Es una buena manera de reírse y de sufrir.

Echenle un ojo: https://twitter.com/drupaldrama y https://twitter.com/hashtag/DrupalDrama?src=hash

Categorias: Ligas

Drupal & Beers: Gestión de configuración en Drupal 8

Posted by drupaleros.es on November 22, 2016 at 12:01pm
El próximo 24 de noviembre Drupal.cat organiza un nuevo Drupal & Beers con Robert Menetray, programador de Atenea tech, se animará a hablar sobre CMI (Configuration Management Initiative) en Drupal 8.    Algunos temas que se tratarán serán:   Cómo usarlo desde interfaz y desde drush. Módulos que ayudan a simplificar el trabajo. Cómo sobrescribir valores para poder tener configuraciones distintas entre entornos. Cómo evitar que se exporten configuraciones de algunos módulos y evitar que se activen módulos que solo deben de estar en el entorno de desarrollo.  Además, Robert se animará a realizar una demo en vivo.   El lugar de celebración será el bar Barcelona Bagers, en la calle Còrsega... Leer mas

Sinónimos 8.x

Posted by Drupal Mexico on November 21, 2016 at 1:24am
Portada del módulo Synonyms

En este artículo quiero presentar la versión 8.x del módulo Synonyms (https://www.drupal.org/project/synonyms). En términos generales dicho módulo tiene las siguientes funciones:

  • Guarda los sinónimos de entidades dentro de sus campos (Fields y Base Fields)
  • Provee los controles select con sinónimos y autocompletar con sinónimos para los campos de referencia a entidad
  • Provee de filtros y argumentos con sinónimos en las vistas (views)

Entonces se introduce el concepto de los sinónimos de entidad. Un sinónimo es simplemente una frase (cadena de caracteres) que se supone tiene un significado sinonímico al nombre de la entidad a la cual pertenece. Por ejemplo, si tenemos países como términos de taxonomía, podría haber el término México con un sinónimo Méjico.

Para empezar, veámos en detalle cómo se puede aprovechar el concepto de sinónimo y luego analizaremos cómo realmente se guardan los sinónimos de las entidades en la base de datos.

Primeramente hay que aclarar que existe la idea de comportamientos (behaviors). Comportamiento es una atómica función que toma sinónimos de tus entidades y puede hacer algo productivo con ellos. El módulo tiene 2 comportamientos: select con sinónimos y autocompletar con sinónimos.

Select con sinónimos

Como bien dice su nombre, ese comportamiento crea un control para los campos de referencia a entidad de lista desplegable. Esta lista va a tener no solo los nombres de las entidades que pueden ser referidas sino también sus sinónimos. En conjunto con jQuery.Chosen (https://www.drupal.org/project/chosen) se produce una herramienta poderosa.

Cabe señalar que los usuarios avanzados también pueden utilizar ese select con sinónimos dentro de sus formas:

<?php

$form[‘synonyms_select’] = array(

  ‘#type’ => ‘synonyms_entity_select’,

  ‘#key_column’ => ‘target_id’,

  ‘#target_type’ => ‘user’, // Tipo de entidad que generar.

  ‘#handler’ => ‘default’, // Tipo de EntityReferenceSelection Plugin que utilizar.

  ‘#handler_settings’ => array(), // Configuración de EntityReferenceSelection Plugin.

  ‘#multiple’ => FALSE, // Si hacer el select multiple.

  ‘#default_value’ => array(1), // Lista de IDs de las entidades que deben de ser eligidas por default.

);

?>

 Autocompletar con sinónimos

De manera parecida, ese comportamiento crea un control para los campos de referencia a entidad de autocompletar, pero las sugerencias vienen no solo basadas en los nombres de las entidades sino también en sus sinónimos.

Ese control tiene algunas configuraciones:

  • Cuántas sugerencias producir como máximo. Por defecto no se hacen más que 10 sugerencias, lo cual es bastante razonable. Pero siempre se puede ajustar.
  • Si se debe sugerir la misma entidad únicamente a través de una sola sugerencia: a veces la misma entidad puede ser sugerida por su nombre y por alguno de sus sinónimos a la vez. Si activas esta opción será sugerida solo una vez, ya sea por su nombre o por alguno de sus sinónimos.
  • Tipo de búsqueda que realizar: sugerir solo los nombres o sinónimos que empiezan con la palabra clave o los que contienen la palabra clave.

De igual forma, como en el caso de select con sinónimos, los Drupaleros avanzados pueden utilizar ese control directamente en sus formas:

<?php

$form[‘synonyms_autocomplete’] = array(

   '#type' => 'synonyms_entity_autocomplete',

   '#target_type' => ‘user’, // Tipo de entidad que sugerir.

   '#target_bundles' => array(‘user’), // Vector de bundles que sugerir o NULL para segerir todas las bundles dentro del tipo de entidad especificado.

   '#suggestion_size' => 10, // Cuántas sugerencias producir como el máximo.

   '#suggest_only_unique' => FALSE, // Si una entidad solo se puede sugerir a través de una sola sugerencia.

   '#match' => ‘CONTAINS’, // Cómo ejecutar la búsqueda. Puede ser CONTAINS o STARTS_WITH.

   '#default_value' => array(User::load(1)), // Vector de entidades que tienen que estar pre-elegidas dentro del campo de autcompletar.

);

?>

Filtros y argumentos de las vistas

Se puede crear un filtro de vistas para entidades y tomará forma de los consabidos controles (select con sinónimos o autocompletar con sinónimos). Lo más probable es que vayas a requerirlo como un filtro expuesto para que así los usuarios de tu vista puedan filtrar (y encontrar entidades a base de cuales hacer el filtro) más fácil.

También existe la opción para especificar el criterio sinónimo o el nombre de la entidad en un argumento de la vista. Eso puede ser de gran utilidad para generar URLs más amigables de tus vistas. Por ejemplo, si tenemos nuestros términos de taxonomía (países), y tenemos allí México con el sinónimo MX. El URL de tu vista puede ir desde http://example.com/mi-vista/mexico a http://example.com/mi-vista/mx (y de forma parecida para todos los países restantes).

Usos más avanzados

Para los más atrevidos también existen pequeñas sorpresas. El módulo provee un par de servicios (Services) que pueden ser muy útiles dentro de tus módulos. Esos servicios pueden ayudarte a encontrar una entidad (su ID) por su nombre (o presumiblemente su sinónimo).

Servicio synonyms.synonyms_entity_get

Por la palabra clave te encuentra el ID de la entidad cuyo nombre o uno de sus sinónimos equivale a la palabra clave. Un ejemplo:

<?php

$entity_type = \Drupal::entityTypeManager()->getDefinition('user');

$entity_id = \Drupal::getContainer()->get('synonyms.synonyms_entity_get')->entityGetBySynonym($entity_type, 'palabra-clave');

?>

Si no se encontrara ninguna entidad por la palabra clave proporcionada, tendrás 0 en la respuesta.

Servicio synonyms.synonyms_find

Si tu caso es más complejo y se necesita algo más flexible que una simple búsqueda por la palabra clave, también existe el servicio synonyms.synonyms_find. Ese, aunque implique más trabajo, te da más flexibilidad en la especificación de los criterios de búsqueda. En el ejemplo que sigue se hace una búsqueda dentro de los sinónimos de los usuarios con los siguientes criterios:

  • Alguno de los sinónimos tiene que empezar con ‘palabra-clave’
  • El ID del usuario no puede ser 1

<?php

$entity_type = \Drupal::entityTypeManager()->getDefinitions('user');

$condition = new \Drupal\Core\Database\Query\Condition();

$condition->condition(\Drupal\synonyms\SynonymsProviderInterface\SynonymsFindProviderInterface::COLUMN_SYNONYM_PLACEHOLDER, 'palabra-clave%', 'LIKE');

$condition->condition(\Drupal\synonyms\SynonymsProviderInterface\SynonymsFindProviderInterface::COLUMN_ENTITY_ID_PLACEHOLDER, 1, '!=');

$found_synonyms = \Drupal::getContainer()->get('synonyms.synonyms_find')->synonymsFind($condition, $entity_type);

?>

En el resultado tendrás un vector con la información sobre todos los usuarios que satisfacen tus criterios de búsqueda (tendrás entity_id y synonym (sinónimo que satifizo el criterio de búsqueda)). Trata de examinar el archivo \Drupal\synonyms\SynonymsService\Behavior\AutocompleteService para ver un buen ejemplo de cómo se usa esa herramienta.

 Proveedores de sinónimos

Aunque los sinónimos son cadenas de caracteres, no significa que siempre están guardados en la base de datos como tales. La arquitectura del módulo permite guardar los sinónimos en cualquier formato (es extensible a través de Plugin API). Lo más probable es que querrás guardar tus sinónimos dentro de los campos (Fields o Base Fields). Para ese caso, el módulo ya brinda soporte para “extraer” sinónimos desde los siguientes tipos de campos:

  • Texto
  • Referencia a entidad (se utiliza el nombre de la entidad referdia como el sinónimo)
  • Número entero (Integer) (puede ser útil para precios u otras cifras descriptivas)
  • Coma flotante (Float)
  • Decimal
  • Email
  • Teléfono

Entonces, por un lado, se tienen comportamientos que hacen algo productivo con tus sinónimos y, en el lado opuesto, observamos los proveedores de sinónimos que se hacen cargo de guardar y extraer tus sinónimos. Ahora a los administradores de la página, solo les falta habilitar/deshabilitar ciertos comportamientos sobre ciertos proveedores. Eso puede hacerse en la página de configuración de sinónimos (/admin/structure/synonyms). Por ejemplo, se puede habilitar el comportamiento de select con sinónimos sobre el campo de email en los usuarios y habilitar el campo Nombre completo (digamos que existe uno con ese nombre) para el comportamiento de autocompletaje.

 

Categorias: ModulosVersión: Drupal 8

Qué son los Process plugins en Drupal 8

Posted by 7sabores.com on November 18, 2016 at 5:00pm
Qué son los Process plugins en Drupal 8

En la entrada Qué son y cómo funcionan los plugins de migración describimos algunos puntos a tomar en cuenta para entender los plugins de migración, hablamos del archivo YAML que contiene la configuración de una migración, entre ellas la clave 'process' (linea 8) describe propiedad por propiedad, como el contenido destino se va a construir a partir de los datos del origen.

¿Cómo hacer un Plugin de migración personalizado en Drupal 8?

Posted by 7sabores.com on November 17, 2016 at 7:09pm
¿Cómo hacer un Plugin de migración personalizado en Drupal 8?

En el artículo anterior explicamos que Drupal 8 (D8) trae en el núcleo (core) un sistema de migración automatizada que permite migrar tanto la configuración como el contenido desde Drupal 6/7, en éste articulo explicaremos como migrar sólo el contenido creando un modulo personalizado y un plugin de migración.

Sale Drupal 7.52

Posted by Drupal Mexico on November 17, 2016 at 2:42pm

Mientras algunos dormíamos, salió este Miércoles Drupal 7.52 y drupal 8.2.3 por si gustan subir de versión. También tenemos algunas noticias sobre seguridad:

https://www.drupal.org/SA-CORE-2016-005

Versión: Drupal 7Drupal 8Categorias: Noticias

Que son y como funcionan los plugins de migracion en Drupal 8

Posted by 7sabores.com on November 16, 2016 at 3:33pm
Que son y como funcionan los plugins de migracion en Drupal 8

En este artículo explicaremos algunos detalles de los plugins de migracion en Drupal 8, esta publicación es la continuación de éste artículo donde encontraremos información de como preparar una migración con la Drupal Console.

Cambiar la &quot;base table&quot; de una view en Drupal 7

Posted by drupaleros.es on November 12, 2016 at 5:42pm
El otro día tuve la necesidad de modificar la tabla base de una vista para poder usar las tablas que nos proporcionan el modulo Search API y asi poder tener mas optimizado la vista, dado que iba a ser una vista con un motor de búsqueda avanzado. Lo mas normal y lo primero que se me ocurrió fue tratar de replicar la vista desde el principio eligiendo la nueva tabla, El problema es, que la vista la creaba un modulo contrib y además, era una vista muy compleja con muchas relaciones. Como estaba seguro que me iba a costar toda la tarde migrar esa vista decidí buscar otro método alternativo mas original y después de buscar un... Leer mas

Categorizing Migrations According to Their Type

Posted by MTech on November 11, 2016 at 6:05pm
Categorizar las Migraciones de Acuerdo a Su Tipo

Es muy frecuente que en una migración de drupal 6,7 a drupal 8 se haga el proceso de migración muchas veces, esto se aplica más a sitios que son muy activos en producción, los administradores están actualizando o agregando contenido nuevo.

Hay que tener en cuenta que la API de migración de Drupal 8 ofrece una interfaz de usuario para hacer migraciones, mediante el path /upgrade. De esta manera el proceso de migración es una sola vez y no podemos hacer personalizaciones.

La forma más clásica de hacer un upgrade, puede ser seguida por estos pasos:

Edys Meza Vie, 11/11/2016 - 12:05

Crear un comentario programando en Drupal 8

Posted by drupaleros.es on November 9, 2016 at 12:23pm
Crear un comentario en Drupal 8 puede parecer complicado dada la nueva estructura y manera de programar en Drupal 8. Pero es una tarea realmente sencilla. En Drupal 8 los comentarios son ahora entidades completas y ya no están limitados únicamente a los nodos, son independientes, lo cual hace los nuevos comentarios de Drupal 8 mucho mas flexibles.Para crear un nuevo comentario, tenemos que crear una entidad de tipo comentario pasarle unos parametros, y guardarla, en este ejemplo vamos a rellenar únicamente los campos requeridos.
//Para crear una nueva entidad de comentario...
Leer mas

Cambiar la ubicación de la carpeta “config” en Drupal 8

Posted by drupaleros.es on November 7, 2016 at 8:07pm
A muchos seguramente no les suene esta carpeta, a otros puede que si., en la carpeta “config” (esa gran desconocida) se guardan los archivos de configuración de Drupal 8 cuando hacemos una sincronización y si no la mantenemos en un lugar seguro, alguien puede obtener la configuración que tenemos en ese Drupal 8. Esta carpeta es una novedad, ya que en Drupal 7 no existe ninguna API para configuraciones ni nada parecido, pero es una de las grandes novedades de Drupal 8 y que nos facilita mucho la vida cuando necesitamos mantener 2 Drupal sincronizados (el de producción y el de desarrollo por ejemplo). Y como se donde esta esta carpeta Drupal 8 por defecto... Leer mas

¿Cómo agregar tamaño y tipo de fuente a CKEditor?

Posted by MTech on November 4, 2016 at 6:02pm
¿Cómo agregar tamaño y tipo de fuente a CKEditor?

Como ya se ha hablado en un blog anterior CKEditor es un módulo muy útil para creación y edición de contenido. En mi trabajo de edición de cierto contenido me encontré con la necesidad de modificar el tamaño y tipo de fuente evitando usar css.

A continuación les explicaré cómo extender el módulo CKEditor utilizando el módulo CKEditor_font, haciendo uso de composer, bower y gulp.

En su terminal utilice el siguiente comando para descargar la versión más estable del módulo:

Charlotte León Vie, 11/04/2016 - 12:02

Recomendando el drupal8day

Posted by Drupal Mexico on November 4, 2016 at 3:19pm

Luego con el trabajo uno se olvida de los evento de drupal, pero si los eventos son en linea se vuelve más sencillo seguirlos. Este 19 de Noviembre van a hacer una serie de presentaciones para explicar mejor Drupal 8. Siendo las presentaciones en linea duraran 24 horas el evento y abarcaran todo el mundo.

Se puede uno inscribir y ver las platicas que ya están listas en este url.

http://www.drupal8day.com

Categorias: EventoVersión: Drupal 8

Jornada de contribución a Drupal

Posted by Biko 2 on November 4, 2016 at 10:47am

Desde Biko queremos devolver a #Drupal parte de todo lo que nos está aportando, por ello el viernes pasado realizamos una jornada de contribución a Drupal.

La jornada comenzó con una breve introducción para conocer los procesos y “normas” que se han de seguir para poder contribuir a Drupal, bien sea en documentación, issues de contrib o issues de Core.

En esta primera jornada, de la que esperamos que haya continuación, participamos 13 personas.

Estas son las slides que usamos:

Contribuir a drupal from Biko

Después de la introducción, tocó el hamaiketako para reponer fuerzas, continuamos con el trabajo sobre una serie de issues previamente seleccionadas para poder facilitar el proceso.

Con el objetivo de tener un entorno de desarrollo limpio para facilitar el trabajo con Drupal, creamos un entorno basado en Docker. Se basa en parte de los sistemas Docker que usamos internamente para algunos desarrollos.

Podéis darle un vistazo en:

Este entorno contiene unos script para iniciar rápidamente el proyecto:

El resultado de la jornada se traduce en que tenemos tres issues fixed y dos en RTBC, de ellas dos al Core y otra a contrib.

Vamos a darles la bienvenida como Core Contributors a David Gil y Karlos (que hacía equipo con Oier Bravo y bug273), y también a Ismael como nuevo contribuir a Drupal con apenas dos semanas y un día &#x1f642;

Personalmente estoy muy agradecido por la oportunidad que ha facilitado Biko para poder materializar estas ideas y haber podido participar en ella ayudando a otra gente &#x1f600;

Tutorial: Crear un listado de noticias en Drupal 8

Posted by Atenea tech blog on November 3, 2016 at 10:03am

Anteriormente os hablé de cómo realizar una galería de imágenes en Drupal 8. En esta ocasión vamos con un tutorial, incluso más sencillo: crear una sección de notícias en nuestra web con Drupal 8.

1. Crear tipo de contenido Notícia

Crearemos un nuevo tipo de contenido al que llamaremos Notícia (Estructura → Tipos de contenido → Añadir tipo de contenido).

Crear notícia

Por defecto, en Drupal 8, cuando creamos un nuevo tipo de contenido, tenemos dos campos, Título y Cuerpo. Además de eso, para hacer un poco más completo el tutorial, añadiremos un campo Imagen Principal a la notícia:

Imagen notícia

Además de añadir el campo de comentarios:

Una vez añadidos estos campos, vamos a la pestaña de Administrar presentación, y configuramos la imagen para que tenga un estilo de imagen predeterminado:

 

2. Creamos la vista

Crearemos la vista Noticias (Estructura → Vistas → Añadir nueva vista) tal como se muestra en la siguiente imagen:

Una vez hecho esto, ya podremos ir a visitar nuestra página de Notícias:

 

BONUS:

Como habréis podido comprobar en el listado anterior, las notícias están escritas en latín (no tienen significado, sólo son palabras sueltas). Para generar este contenido, hemos utilizado el módulo Devel Generate. Para ello, tenéis que instalar el módulo Devel y activar Devel Generate. Una vez hecho esto, vamos a la página de generación de contenido Dummy (Configuración → Generate Content).

En esta página indicamos el tipo de contenido que queremos generar, el número de nodos y otras opciones. Una vez hecho esto, tendréis un gran listado de contenido que os servirá para probar las funcionalidades de vuestra web en Drupal 8. También podréis borrar el contenido automático generado desde la misma página.

Unicef.es y las posibilidades de Drupal 8

Posted by Biko 2 on November 3, 2016 at 9:50am

Hace unos meses hablábamos sobre cómo Drupal busca salir de la isla, asociarse a otros proyectos open source y de esa manera hacer el ecosistema php más consistente. La publicación de Unicef.es viene a demostrar que esto es cierto.

Drupal 8 aporta la consistencia que necesita un sector poderoso como es el de la gestión de contenidos. El desarrollo web ha cambiado y nuestros ecosistemas de software tiene que adaptarse y tener en cuenta las buenas prácticas en el desarrollo, los sistemas basados en API, el diseño “atómico/modular”, los dispositivos y sus soportes, la gestión de despliegues, y el soporte multilingüe. Y después de haber participado en el desarrollo de Unicef.es podemos confirmar que esto es así.

Desde el principio asumíamos este proyecto como un reto. Un reto compartido con KPMG, SBIT y 540. Un reto en el que hemos tenido que aprender rápidamente la potencia oculta de Drupal 8, descubrir sus grandes posibilidades y sufrir en algunos casos por su falta de madurez. Pero eso sí, podemos decir que Drupal 8 sigue siendo el mejor gestor de contenidos del mercado.

Son muchos los detalles que podríamos comentar del desarrollo y en algunos ellos profundizaremos en posteriores posts. Pero rescatamos algunos de los que nos parecen más relevantes:

  • Unicef.es  es un Drupal pensado para gestionar landigs. Se ha creado un conjunto muy completo de componentes que son lo que se usan para construir portadas en cualquier parte de sitio con cualquier propósito.
  • Los formularios de donación y suscripción se han desarrollado para integrarse en el sistema de landings con el objetivo de tener el mayor impacto y compromiso posible.
  • Drupal 8 se adapta a cualquier dispositivo. Pero en el desarrollo hemos ido más allá, trabajando estrechamente con KPMG, incluyendo herramientas en la propia gestión de contenidos que permiten definir diferentes puntos de ruptura dependiendo del dispositivo.
  • Hemos descubierto las posibilidades de CMI, el mecanismo que Drupal 8 incorpora para la gestión de despliegues. Con stbio.io y las herramientas utilizadas (Gitlab, Jenkis, Ansistrano) podemos hablar de que el devops en Drupal 8 es una realidad. En serio, que no os engañen, en PHP se puede hacer código de calidad con herramientas de calidad.
  • Uno de los objetivos en Unicef.es era conectar la gestión de contenidos con su unidad de negocio gestionada por su propio CRM. El equipo de 540, en su mejor estilo craftsmanship ha desarrollado una librería PHP independiente, que permite conectar Drupal con el CRM. Hemos comprobado que la potencia de esta parte del desarrollo es increíble.

En definitiva, la nueva Unicef.es está dando sus primeros pasos y nos alegra haber ayudado en ello. Es un gran proyecto con un gran propósito y de alguna manera esperamos que también pueda servir de inspiración.

Thema Bootstrap actualización de seguridad

Posted by Drupal Mexico on November 2, 2016 at 10:12pm

Es bueno estar al tanto de los anuncios de seguridad de drupal.org. Por ejemplo acaba de anunciar de este posible problema de seguridad en un thema muy popular: Bootstrap. Se sugiere actualizar a la ultima version.

Por aca la liga completa:

https://www.drupal.org/node/2824413

Versión: Drupal 7Categorias: Seguridad

Como crear un servicio en Drupal 8 (parte 2)

Posted by drupaleros.es on October 31, 2016 at 9:24pm
Vamos a continuar con la creación del servicio para Drupal 8. En la primera parte, explicamos que es un servicio y creamos una clase la cual unicamente instanciamos y usamos, lo que nos falta es definir la clase creada como un servicio, he integrarla en el controlador que tenemos. Manos a la obra! Definir el servicio Para definir un servicio dentro de un modulo, lo que debemos hacer es crear el archivo yml que define los servicios dentro del modulo, este archivo lo llamaremos drupaleros.services.yml y dentro escribiremos lo siguiente... Leer mas

Pages

Subscribe with RSS Subscribe to Drupal.org aggregator - Planeta Latinoamericano