<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Drupal Plugins on The Russian Lullaby</title><link>https://www.therussianlullaby.dev/es/tags/drupal-plugins/</link><description>Recent content in Drupal Plugins on The Russian Lullaby</description><generator>Hugo -- gohugo.io</generator><language>es-ES</language><lastBuildDate>Tue, 25 Feb 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://www.therussianlullaby.dev/es/tags/drupal-plugins/index.xml" rel="self" type="application/rss+xml"/><item><title>Migraciones en Drupal (I): recursos básicos</title><link>https://www.therussianlullaby.dev/es/blog/drupal-migrations-one-basic-resources/</link><pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.therussianlullaby.dev/es/blog/drupal-migrations-one-basic-resources/</guid><enclosure url="https://www.therussianlullaby.dev/images/featured-post/davidjguru_drupal_8_thinking_about_drupal_migrations_main.jpg" type="image/jpeg"/><media:content url="https://www.therussianlullaby.dev/images/featured-post/davidjguru_drupal_8_thinking_about_drupal_migrations_main.jpg" medium="image" type="image/jpeg"/><media:thumbnail url="https://www.therussianlullaby.dev/images/featured-post/davidjguru_drupal_8_thinking_about_drupal_migrations_main.jpg"/><description>Recursos básicos para las migraciones en Drupal: módulos del núcleo, módulos contribuidos, plugins, herramientas Drush y autores recomendados.</description><content:encoded><![CDATA[<p>Estoy trabajando en unas notas para un borrador que debería convertirse en un libro sobre procesos de migración construidos con Drupal y su API Migrate. La publicación está prevista para junio de 2020, y recopilar, probar y dar forma al contenido se ha convertido en un trabajo considerable.</p>
<p>Todavía quedan unos meses para el lanzamiento. Así que, para conservar un poco de salud mental y dar un sentido parcial a estas tareas, he pensado publicar aquí algunos artículos breves a partir de esas notas de trabajo.</p>
<p>De esa manera puedo compartir algo útil junto a las notas complementarias y, si la COVID-19 me alcanza antes de que salga el libro, al menos habré compartido algo antes. Supongo.</p>
<p><strong>Bueno, ¿de qué quiero hablar en este artículo?</strong> Me gustaría elaborar una lista de módulos de Drupal relacionados con los procesos de migración: módulos contribuidos que añaden funcionalidades a una migración. Este artículo es solo una recopilación ligera de recursos básicos. Lo juro.</p>
<hr>
<p><strong>Este artículo se publicó originalmente en una versión anterior de mi cuaderno técnico personal y ahora forma parte de The Russian Lullaby.</strong></p>
<p><strong>Fotografía de Unsplash, del usuario <a href="https://unsplash.com/@nilsnedel">Nils Nedel, @nilsnedel</a></strong></p>
<hr>
<p><strong>Índice de contenidos</strong></p>
<span class="post-toc" aria-hidden="true"></span>

<!-- raw HTML omitted -->
<p><a href="#1--introducci%C3%B3n">1- Introducción</a><br>
<a href="#2--recursos-b%C3%A1sicos-m%C3%B3dulos-del-n%C3%BAcleo">2- Recursos básicos: módulos del núcleo</a><br>
<a href="#3--otros-recursos-b%C3%A1sicos-m%C3%B3dulos-contribuidos">3- Otros recursos básicos: módulos contribuidos</a><br>
<a href="#4--recursos-adicionales-m%C3%B3dulos-contribuidos-para-plugins">4- Recursos adicionales: módulos contribuidos para plugins</a><br>
<a href="#5--ejecutar-migraciones-m%C3%B3dulos-relacionados-con-drush">5- Ejecutar migraciones: módulos relacionados con Drush</a><br>
<a href="#6--autores-que-deber%C3%ADas-conocer">6- Autores que deberías conocer</a><br>
<a href="#7--wq">7- :wq!</a></p>
<!-- raw HTML omitted -->
<h2 id="1--introducción">1- Introducción</h2>
<p>No es fácil hablar de migraciones en general y, por supuesto, tampoco lo es en el contexto de Drupal. Para ejecutarlas necesitas conocer bien la tecnología, los modelos de datos de origen y destino, tener cierta experiencia con <a href="https://en.wikipedia.org/wiki/Extract,_transform,_load">procesos ETL</a> y manejarte con los plugins de Drupal. Las migraciones hacen un uso intensivo de estos plugins.</p>
<p>En cualquier caso, como el tema es amplio y ahora tengo poco tiempo, he planteado este artículo como un catálogo resumido, de consulta rápida, de herramientas y recursos básicos para trabajar con migraciones.</p>
<h2 id="2--recursos-básicos-módulos-del-núcleo">2- Recursos básicos: módulos del núcleo</h2>
<ul>
<li>
<p><strong>Migrate:</strong> la base de las migraciones. El módulo <a href="https://git.drupalcode.org/project/drupal/tree/8.7.x/core/modules/migrate">migrate</a> proporciona la API fundamental para migrar en Drupal.</p>
</li>
<li>
<p><strong>Migrate Drupal:</strong> <a href="https://git.drupalcode.org/project/drupal/tree/8.7.x/core/modules/migrate_drupal">migrate_drupal</a> se centra en las actualizaciones desde Drupal 6 o Drupal 7. Permite leer entidades de configuración en Drupal 8.</p>
</li>
<li>
<p><strong>Migrate Drupal Multilingual:</strong> <a href="https://git.drupalcode.org/project/drupal/tree/8.7.x/core/modules/migrate_drupal_multilingual">migrate_drupal_multilingual</a>. ¿Un módulo experimental del núcleo? Véase <a href="https://www.drupal.org/node/2959712">esta referencia</a>.</p>
</li>
<li>
<p><strong>Migrate Drupal UI:</strong> <a href="https://git.drupalcode.org/project/drupal/tree/8.7.x/core/modules/migrate_drupal_ui">migrate_drupal_ui</a> ofrece una interfaz para realizar la actualización.</p>
</li>
</ul>
<h2 id="3--otros-recursos-básicos-módulos-contribuidos">3- Otros recursos básicos: módulos contribuidos</h2>
<ul>
<li>
<p><strong>Migrate Plus:</strong> <a href="https://www.drupal.org/project/migrate_plus">migrate_plus</a> es un módulo contribuido esencial que amplía las funcionalidades y capacidades de Migrate con numerosos plugins y extensiones.</p>
</li>
<li>
<p><strong>Migrate Tools:</strong> <a href="https://www.drupal.org/project/migrate_tools">migrate_tools</a> es otro recurso imprescindible: proporciona numerosos comandos Drush para ejecutar y gestionar migraciones.</p>
</li>
<li>
<p><strong>Migrate Status:</strong> <a href="https://www.drupal.org/project/migrate_status">migrate_status</a>. Este pequeño módulo permite obtener información sobre un proceso de migración. ¿Necesitas saber si una migración está ejecutándose? Ofrece un servicio al que puedes llamar para comprobarlo.</p>
</li>
<li>
<p><strong>Migrate Files:</strong> <a href="https://www.drupal.org/project/migrate_file">migrate_files</a>. Una colección de plugins de proceso tan interesante que te entrarán ganas de mover archivos e imágenes con ella.</p>
</li>
<li>
<p><strong>Migrate Commerce:</strong> <a href="https://www.drupal.org/project/commerce_migrate">commerce_migrate</a>. Un marco de propósito general que amplía el módulo Migrate del núcleo para trasladar datos en un escenario de Drupal Commerce.</p>
</li>
</ul>
<h2 id="4--recursos-adicionales-módulos-contribuidos-para-plugins">4- Recursos adicionales: módulos contribuidos para plugins</h2>
<p>En las migraciones de Drupal utilizamos distintos recursos para ejecutar el plan <a href="https://en.wikipedia.org/wiki/Extract,_transform,_load">ETL</a>. Uno de los fundamentales, como adelantaba en la introducción, son los <a href="https://www.drupal.org/docs/8/api/plugin-api">plugins de Drupal</a>, que requieren cierto conocimiento y práctica.</p>
<p>En una migración, los plugins ayudan a leer la información en la fase E, extracción desde el origen (<a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-source-plugins">plugins de origen</a>); realizar la T, transformación o procesamiento (<a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-process-plugins">plugins de proceso</a>); y guardar los datos en la L, carga en el destino (<a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-destination-plugins-examples">plugins de destino</a>). Al combinar estas tres partes solemos obtener un proceso de migración funcional.</p>
<p>Muchos módulos del núcleo, como el de usuarios, ya incluyen sus propios plugins para facilitar las migraciones. Veamos algunos plugins distribuidos en módulos contribuidos.</p>
<h3 id="plugins-de-origen-migrate-source-pluginshttpswwwdrupalorgdocs8apimigrate-apimigrate-source-plugins">Plugins de origen: <a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-source-plugins">Migrate Source Plugins</a></h3>
<ul>
<li>
<p><strong>Migrate Source CSV:</strong> <a href="https://www.drupal.org/project/migrate_source_csv">migrate_source_csv</a>. Módulo contribuido para migrar datos a Drupal 8 desde un sencillo archivo CSV de los de toda la vida.</p>
</li>
<li>
<p><strong>Migrate Source SQL:</strong> <a href="https://www.drupal.org/project/custom_sql_migrate_source_plugin">custom_sql_migrate_source_plugin</a>. Como particularidad entre los plugins de base de datos, permite incluir consultas SQL directamente en el archivo <code>.yml</code> que describe la migración. Las consultas se ejecutan contra la base de datos de origen.</p>
</li>
<li>
<p><strong>Migrate Source YAML:</strong> <a href="https://www.drupal.org/project/migrate_source_yaml">migrate_source_yaml</a>. Una herramienta sencilla para migrar contenido desde archivos YAML.</p>
</li>
</ul>
<h3 id="plugins-de-proceso-migrate-process-pluginshttpswwwdrupalorgdocs8apimigrate-apimigrate-process-plugins">Plugins de proceso: <a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-process-plugins">Migrate Process Plugins</a></h3>
<ul>
<li>
<p><strong>Migrate Process Geofield:</strong> <a href="https://www.drupal.org/project/geofield">geofield</a>. El módulo contribuido Geofield incluye un plugin de proceso personalizado para migraciones. Consulta <a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-process-plugins/contrib-process-plugin-geofield_latlon">su plugin de proceso</a>.</p>
</li>
<li>
<p><strong>Migrate Process XML:</strong> <a href="https://www.drupal.org/project/migrate_process_xml">migrate_process_xml</a>. Proporciona plugins de proceso para <code>xpath</code> y <code>xvalue</code>.</p>
</li>
<li>
<p><strong>Migrate HTML to Paragraphs:</strong> <a href="https://www.drupal.org/project/migrate_html_to_paragraphs">migrate_html_to_paragraphs</a>. Ayuda a transformar el HTML del origen en un elemento Paragraph, gestionado mediante un plugin de destino.</p>
</li>
</ul>
<h3 id="plugins-de-destino-migrate-destination-plugins--exampleshttpswwwdrupalorgdocs8apimigrate-apimigrate-destination-plugins-examples">Plugins de destino: <a href="https://www.drupal.org/docs/8/api/migrate-api/migrate-destination-plugins-examples">Migrate Destination Plugins &amp; Examples</a></h3>
<p>¿Qué clase de entidades de Drupal se crearán durante la migración? ¿Entidades de contenido? ¿Entidades de configuración? Echa un vistazo.</p>
<ul>
<li>
<p><strong>Migrate Destination CSV:</strong> <a href="https://github.com/jonathanfranks/d8migrate/tree/master/web/modules/custom/migrate_destination_csv">d8migrate</a>. Un pequeño módulo personalizado creado por @jonathanfranks.</p>
</li>
<li>
<p><strong>Migrate Destination Config:</strong> <a href="https://api.drupal.org/api/drupal/core%21modules%21migrate%21src%21Plugin%21migrate%21destination%21Config.php/class/Config/8.5.x">clase Config.php</a>. Ofrece un plugin para migrar configuración.</p>
</li>
<li>
<p><strong>Migrate Destination Block:</strong> <a href="https://api.drupal.org/api/drupal/core%21modules%21block%21src%21Plugin%21migrate%21destination%21EntityBlock.php/class/EntityBlock/8.7.x">clase EntityBlock.php</a>. Como ejemplo de los recursos que puede ofrecer cada componente en una migración, al trasladar entidades de bloque —que son entidades de configuración— conviene consultar las clases PHP de origen, proceso y destino incluidas en su propio módulo.</p>
</li>
</ul>
<p>
<img src="/images/post/davidjguru_drupal_8_migrate_entity_block.png" alt="Migración de entidades de bloque en Drupal 8." loading="lazy" decoding="async">

</p>
<h2 id="5--ejecutar-migraciones-módulos-relacionados-con-drush">5- Ejecutar migraciones: módulos relacionados con Drush</h2>
<ul>
<li>
<p><strong>Migrate Scheduler:</strong> <a href="https://www.drupal.org/project/migrate_scheduler">migrate_scheduler</a>. Ofrece integración con la API de cron de Drupal para ejecutar migraciones según una programación predefinida.</p>
</li>
<li>
<p><strong>Migrate Run:</strong> <a href="https://www.drupal.org/project/migrate_run">migrate_run</a>. Comandos Drush para ejecutar migraciones de forma ligera. Es más sencillo que Migrate Tools, pero no ofrece soporte para grupos de migraciones. Tampoco depende de Migrate Plus. Va un poco por libre.</p>
</li>
<li>
<p><strong>Migrate Devel:</strong> <a href="https://www.drupal.org/project/migrate_devel">migrate_devel</a>. Proporciona opciones Drush para mostrar información de depuración durante la ejecución. También incorpora el plugin de proceso <a href="https://git.drupalcode.org/project/migrate_devel/blob/8.x-1.x/src/Plugin/migrate/process/Debug.php">debug</a>. <a href="https://agaric.coop/blog/how-debug-drupal-migrations-part-2">Aquí puedes leer un artículo sobre él</a>. Por cierto, en el contexto original del artículo, <a href="https://www.drupal.org/project/migrate_devel/issues/2938677">la compatibilidad con Drush 9 seguía sin resolverse</a>, aunque <a href="https://www.drupal.org/files/issues/2018-10-08/migrate_devel-drush9-2938677-6.patch">parecía haber un parche disponible</a>.</p>
</li>
</ul>
<h2 id="6--autores-que-deberías-conocer">6- Autores que deberías conocer</h2>
<ul>
<li><strong><a href="https://twitter.com/dinarcon">Mauricio Dinarte</a>:</strong> desarrollador, consultor, formador y propietario de su propio negocio, <a href="https://agaric.coop">Agaric</a>. Escribió lo que probablemente sea una lectura obligatoria para cualquiera que quiera aprender a migrar con Drupal: <em>31 Days of Drupal Migrations</em>, una colección de 31 artículos publicados en <a href="https://understanddrupal.com/migrations">Understand Drupal</a>, con los aspectos más importantes, ejemplos, ejercicios y descripciones para entender el mundo interno de las migraciones.</li>
</ul>
<p>Un material formativo imprescindible. Además, el sitio de su empresa reúne muchos artículos muy buenos sobre el tema bajo la etiqueta <a href="https://agaric.coop/tags/migrate">migrate</a>.</p>
<p><strong>Algunos ejemplos de Mauricio Dinarte:</strong></p>
<ol>
<li><a href="https://agaric.coop/blog/introduction-paragraphs-migrations-drupal">Introducción a las migraciones de Paragraphs en Drupal</a>.</li>
<li><a href="https://agaric.coop/blog/using-migration-groups-share-configuration-among-drupal-migrations">Utilizar grupos de migración para compartir configuración entre migraciones de Drupal</a>.</li>
<li><a href="https://agaric.coop/blog/what-difference-between-migration-tags-and-migration-groups-drupal">¿Cuál es la diferencia entre etiquetas y grupos de migración en Drupal?</a>.</li>
</ol>
<p>Su perfil en Drupal.org: <a href="https://www.drupal.org/u/dinarcon">dinarcon</a>.</p>
<hr>
<ul>
<li><strong><a href="https://twitter.com/socketwench">Tess Flynn</a>:</strong> oí hablar de ella leyendo artículos de Mauricio Dinarte. Así conocí a esta desarrolladora experta, ponente y divulgadora de la comunidad Drupal. En su sitio, <a href="https://deninet.com">deninet.com</a>, encontré contenido variado y, sobre todo, una serie muy interesante sobre migraciones bajo la etiqueta <a href="https://deninet.com/tag/drupal-migration">drupal-migration</a>.</li>
</ul>
<p>Por el camino descubrí también que tiene varios módulos contribuidos relacionados con las migraciones y los plugins de proceso.</p>
<p><strong>Algunos ejemplos de Tess Flynn:</strong></p>
<ol>
<li><a href="https://www.drupal.org/project/migrate_process_url">Migrate Process URL</a>: proporciona un plugin de proceso para migrar campos de enlace.</li>
<li><a href="https://www.drupal.org/project/migrate_process_vardump">Migrate Process Vardump</a>: ayuda a depurar migraciones.</li>
<li>Otros plugins de proceso: <a href="https://www.drupal.org/project/migrate_process_array">Migrate Process Array</a>, <a href="https://www.drupal.org/project/migrate_process_skip">Migrate Process Skip</a> y <a href="https://www.drupal.org/project/migrate_process_trim">Migrate Process Trim</a>.</li>
</ol>
<p>Su perfil en Drupal.org: <a href="https://www.drupal.org/u/socketwench">socketwench</a>.</p>
<hr>
<ul>
<li><strong><a href="https://twitter.com/drupalexp">Danny Sipos</a>:</strong> autor de una reconocida «biblia» de Drupal, <a href="https://www.amazon.com/Drupal-Module-Development-modules-version/dp/1789612365/">Drupal 8 Module Development, por entonces en su segunda edición</a>, y del sitio <a href="https://www.webomelette.com/">webomelette.com</a>. Ponente, formador y asistente habitual a distintos encuentros internacionales de Drupal, también ha escrito artículos interesantes sobre migraciones que deberías leer.</li>
</ul>
<p><strong>Algunos ejemplos de Danny Sipos:</strong></p>
<ol>
<li><a href="https://www.sitepoint.com/your-first-drupal-8-migration/">Tu primera migración en Drupal 8</a>.</li>
<li><a href="https://www.webomelette.com/dynamic-migrations-using-templates-drupal-8">Migraciones dinámicas mediante «plantillas» en Drupal 8</a>.</li>
<li><a href="https://www.webomelette.com/quickly-generate-headers-csv-migrate-source-plugin-using-drush">Generar rápidamente las cabeceras del plugin de origen CSV mediante Drush</a>.</li>
</ol>
<p>Su perfil en Drupal.org: <a href="https://www.drupal.org/u/upchuk">upchuk</a>.</p>
<hr>
<h2 id="7--wq">7- :wq!</h2>
<h5 id="canción-recomendada">Canción recomendada</h5>


<div class="embed-responsive embed-responsive-16by9">
  <iframe
    class="embed-responsive-item"
    src="https://www.youtube-nocookie.com/embed/ADwfyxpriAM"
    title="YouTube video"
    loading="lazy"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    allowfullscreen></iframe>
</div>

]]></content:encoded></item></channel></rss>