bases de datos https://drupaladicto.com/ es Can't install module because configuration already exists in active configuration https://drupaladicto.com/actualidad/cant-install-module-because-configuration-already-exists-active-configuration <span class="field field--name-title field--type-string field--label-hidden">Can&#039;t install module because configuration already exists in active configuration</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 12/10/2023 - 20:11</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Es posible, que al trabajar con módulos personalizados en Drupal, hayas querido desinstalarlo y reinstalarlo para aplicar algún cambio, pero Drupal no te permite la reinstalación y, en su lugar, te presenta un error en pantalla indicando que "El módulo no puede instalarse, porque ya existe una configuración previa."</p> <pre id="page-subtitle"> Can't install module because configuration already exists in active configuration</pre> <h2>   Explicación</h2> <p>     Cuando instalamos un módulo en Drupal, se añaden varias tablas en base de datos que incluyen, el equivalente a los archivos de configuración <strong>.yml</strong>, como "<strong><em>core.entity_form_display.paragraph.footer_landing.default</em></strong>" o, como en de los campos relacionados con el contenido, ej.: "<strong><em>field.field.paragraph.footer_landing.fl_contents</em></strong>". </p> <p>     Toda la información relacionada con la configuración de los módulos, se añade dentro de la tabla <strong>config</strong>; normalmente, si desistalamos un módulo contribuido, todos los datos son elmininados en el momento de la desinstalación y podremos reinstalarlo, sin sorpresas, siempre que no tenga alguna dependencia con otros módulos o con contenidos creados previamente, utilizando dicho módulo.</p> <p>     En el caso de los módulos personalizados, en la mayoría de los casos, este proceso no se ejecuta correctamente, dejando presentes los restos del módulo, dentro de la tabla config; por esta razón, al intentar reinstalarlo, Drupal no nos permite hacerlo y lanza esta alerta.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.07%;" data-ratio="48.07" data-b-token="b-1d85b7d88ac" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e78af902-d1cb-4f82-946a-ae4720aa93dc" class="img-fluid media__element b-lazy b-filter" alt="Borrar modulo en base de datos | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/tabla-config.png?itok=ceN_A468" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="905" height="435" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Como eliminar restos de un módulo custom en Base de datos</h2> <p>     Según la página oficial de Drupal, podremos eliminar un módulo de varias maneras, ya sea mediante comandos de Drush o directamente ejecutando un par de comandos en la base de datos, de nuestra instalación; si quieres explorar y comprobar, algunas de estas opciones. <a href="https://www.drupal.org/node/157632">HAZ CLIC AQUI</a></p> <p>     En mi caso, tengo instalado un proyecto con Drupal 10, y el error me saltó con uno de mis módulos personalizados; ya me había sucedido anteriormente con versiones de Drupal 9, pero no lo documenté en su momento y por esta razón, he aprovechado para hacerlo.</p> <h2>   Pasos para eliminar un módulo custom desde base de datos en Drupal.</h2> <p>     Básicamente, lo que tenemos que hacer para desinstalar el módulo y todos los campos relacionados, es lo siguiente:</p> <ol><li>Accederemos a nuestra base de datos, preferiblemente, utilizando algún programa con interfaz gráfica de administración. Ej: (PhpMyAdmin o Adminer).</li> <li>Abriremos la ventana que nos permite ejecutar consultas sobre la base de datos y añadiremos el siguiente comando, modificando los nombres. <p> </p> <pre> SELECT * FROM config where name='field.field.paragraph.footer_landing.fl_contents'</pre> </li> <li>Una vez nos aparezca el nombre del módulo o campo, podremos eliminarlo utilizando la misma interfaz de administrado de base de datos.</li> </ol><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 38.99%;" data-ratio="38.99" data-b-token="b-9fdd6551b05" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="46c324ea-b4fd-40ad-b272-05dc2aadab07" alt="Borrar modulo en base de datos | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/borrar-adminer.png?itok=asac8pzB" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="990" height="386" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-post field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/mysql" hreflang="es">mysql</a></div> <div class="field__item"><a href="/categoria/custom-module" hreflang="es">custom module</a></div> <div class="field__item"><a href="/categoria/base-de-datos" hreflang="es">base de datos</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/module" hreflang="es">module</a></div> <div class="field__item"><a href="/categoria/modulos" hreflang="es">módulos</a></div> <div class="field__item"><a href="/categoria/modulo" hreflang="es">modulo</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/tablas" hreflang="es">tablas</a></div> </div> </div> Thu, 12 Oct 2023 18:11:14 +0000 webmaster 473 at https://drupaladicto.com Database backup | 4 opciones para crear copias de seguridad https://drupaladicto.com/curso/database-backups/database-backup-4-opciones-para-crear-copias-de-seguridad <span class="field field--name-title field--type-string field--label-hidden">Database backup | 4 opciones para crear copias de seguridad</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1108" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2>Cuatro maneras para realizar una copia de tu base de datos Drupal</h2> <p>        Antes de realizar cualquier tipo de actualización en tu proyecto de Drupal, es altamente recomendable, sacar una copia de tu base de datos actual, para evitar posibles pérdidas de información durante el proceso. Tienes varias opciones para extraer esta copia de la base de datos.</p> <ul><li> <h3>Copia de la base de datos utilizando Drush.</h3> <p>   Para exportar la base de datos de tu proyecto Drupal, utilizando Drush, colócate en la carpeta raiz de tu proyecto, usando tu consola de comandos y a continuación, ejecuta el siguiente comando, sustituyendo el final, por el nombre que quieres para identificar tu copia de seguridad:</p> <pre> drush sql:dump --result-file=../mi_backup.sql </pre> </li> </ul><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 38.88%;" data-ratio="38.88" data-b-token="b-64057cd75ce" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6330571b360f7.jpg?itok=w0eyy0rT" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="311" typeof="foaf:Image" /></div></div> <ul><li> <h3><strong>Copia de la base de datos desde la interfaz PhpMyAdmin.</strong></h3> <p>Si tienes activado el administrador de Base de datos PhpMyAdmin, puedes exportar tu base de datos, a través de su interfaz. Para ello, sólo tienes que acceder a PhpMyAdmin, y a continuación seleccionar la base de datos que necesitas exportar; luego seleccionas el botón exportar, desde el menú superior de PhpMyAdmin y haces clic en continuar.</p> <p>El resultado será un archivo con la extensión .sql, que se descargará automáticamente.</p> </li> </ul><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 69.63%;" data-ratio="69.63" data-b-token="b-f24a93075ea" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-633057556d42c.jpg?itok=Th3_61Zv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="557" typeof="foaf:Image" /></div></div> <ul><li> <h3><strong>Exportar la base de datos utilizando la línea de comandos MySql.</strong></h3> </li> </ul><p>     Para extraeer una copia de tu base de datos, a través de los comandos MySql, deberás ejecutar la siguiente línea, sustituyendo los datos del usuario root, y tu bases de datos y el archivo.sql resultante.</p> <pre> mysqldump -u usuario -p base_de_datos &gt; archivo.sql</pre> <p> </p> <ul><li> <h3>Exportar una copia de la base de datos, usando el módulo Backup and Migrate.</h3> </li> </ul><p>     Otra forma que nos ofrece Drupal, para exportar una copia de la base de datos, será a través del módulo Backup and Migrate, con el que podremos descargar, a través de la interfaz de Drupal, una copia completa de nuestro sitio web, en formato comprimido, que podremos importar en el entorno local o cualquier otro entorno que necesitemos.</p> <p>     Si quieres aprender a configurar y utilizar el Módulo Backup and Migrate <a href="/curso/backup-and-migrate" target="_blank">HAZ CLIC AQUI</a></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 38.88%;" data-ratio="38.88" data-b-token="b-da063e41992" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-63305b9cebfc8.jpg?itok=j1uajiJb" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="311" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Vie, 21/07/2023 - 17:44</span> Fri, 21 Jul 2023 15:44:37 +0000 webmaster 447 at https://drupaladicto.com Gutenberg | Módulo Drupal https://drupaladicto.com/curso/site-building/gutenberg-modulo-drupal <span class="field field--name-title field--type-string field--label-hidden">Gutenberg | Módulo Drupal</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-925 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-925 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-925 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-925"> <section id="video-only-925" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-645-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-645-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-645-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/xrcMsplfVog&amp;max_width=0&amp;max_height=0&amp;hash=dnHOBkesGLiFGHR0AQ0oFHzAc6TySJ9Cr_MEevNweG8" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-645-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1164" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>      Aunque en mi opinión, una de las cosas que me enamoró de Drupal en cuanto lo conocí, es la posibilidad de manipular, personalizar y saber encontrar, prácticamente dónde y cuando ocurren la mayoría de sus funcionalidades, entiendo que el objetivo principal de cualquier herramienta de desarrollo, debería ser facilitarnos la vida, además de ofrecernos grandes posibilidades a nuestro alcance.</p> <p>     Como cada proyecto requiere de diferentes requisitos para llevarse a cabo, y por lo general, uno de los más importantes, es el tiempo que tendremos que invertir hasta su puesta en producción, muchos desarrolladores web prefieren apostar por otros CMS o construir desde cero proyectos enteros, para sentir que tienen mayor control sobre sus creaciones.</p> <p>     No obstante, creo que con un pequeño conocimiento sobre <strong><a href="https://www.drupaladicto.es/curso/instalacion-de-drupal-9-usando-composer">cómo instalar Drupal 9 usando Composer</a></strong> y un breve vistazo a <strong><a href="https://www.drupaladicto.es/actualidad/gestionar-usuarios-roles-y-permisos-en-drupal">cómo gestionar usuarios y permisos</a>,</strong> complementado con la ayuda del<strong> <a href="https://www.drupal.org/project/gutenberg">Módulo Gutenberg</a></strong>, conocido mayormente por usuarios de Wordpress, podrías llegar a tener lo que haz estado buscando hace tiempo, una plataforma simple de manipular, pero potente, con posibilidad de adaptación a la mayoría de webs sencillas.</p> <p>     Es por esta razón que a continuación, te voy a mostrar cómo puedes utilizar las opciones que integra este módulo a la interfaz de usuario, facilitándote de forma notable, la creación de nuevos contenidos en Drupal 9.</p> <h3>Descarga y Activación:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong><br /><br />           1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/gutenberg</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/gutenberg" target="_blank">Módulo Gutenberg</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.<br />  </p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en gutenberg -y</pre> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 56.13%;" data-ratio="56.13" data-b-token="b-cbc2b3c85e3" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4ab6ffd1-0738-4dfb-b61d-dc79541b1202" decoding="async" loading="lazy" typeof="foaf:Image" alt="gutenberg - www.drupaladicto.com - formacion especializada en drupal y symfony" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/activar_gutenberg.png?itok=-kjwbUmt" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="449" /></div></div> <p> </p> <h2>Cómo utilizar Gutenberg</h2> <p>     Una vez activado el <a href="https://www.drupal.org/project/gutenberg" target="_blank">Módulo Gutenberg</a>, veremos que se ha añadido una nueva opción, en la parte inferior izquierda de todos los contenidos, llamada <strong>Gutenberg Experience</strong> y que al activarla podremos ver dos listados con todos los nuevos bloques, tanto del propio módulo como de el núcleo de Drupal, que podremos activar o no, para que estén disponibles como parte de las opciones del tipo de contenido en que se han activado, modificando inmediatamente la interfaz de creación de dicho contenido.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 84.74%;" data-ratio="84.74" data-b-token="b-f277838c7ac" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="705c0cff-a5dd-4f30-a422-3cec26973dc8" alt="Gutenberg Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/gutenberg_experience_0.png?itok=FRkti4I1" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="662" height="561" typeof="foaf:Image" /></div></div> <p>     La idea principal de Gutenberg, es que convierte todos los elementos que podamos añadir, en bloques individuales, con sus propias opciones, disponibles en el momento en que seleccionamos dicho bloque o elemento, haciéndolo mucho más gráfico el método para añadir, modificar o reutilizar dicho elemento.</p> <p>     Para comenzar a añadir contenidos o "Bloques" en nuestro tipo de contenido, veremos un símbolo de más dentro de un círculo y al hacer clic sobre éste, se desplegarán las diferentes opciones disponibles para agregar y una vez seleccionado el elemento que deseamos añadir y se añade, inmediatamente cambiará el panel de la derecha de la pantalla, adaptándose a las opciones disponibles para él.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 56.13%;" data-ratio="56.13" data-b-token="b-bce47a61fed" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c587a992-32ad-4585-9448-66e48c135b8e" decoding="async" loading="lazy" typeof="foaf:Image" alt="gutenberg - www.drupaladicto.com - formacion especializada en drupal y symfony" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/pantalla_inicial.jpg?itok=coMNn7Vp" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="449" /></div></div> <p>     De entre sus opciones más llamativas, está la posibilidad de arrastrar directamente los elementos hasta la posición deseada desde el escritorio de tu ordenador, la integración con módulos como Media o Imagen, insertar directamente elementos embebidos como vídeos, sonidos, etc, o la posibilidad de crear "Bloques" de contenido reutilizables en cualquier otro lugar de la web.</p> <p><em>     El objetivo de utilizar Gutenberg, es que todos tus tipos de contenido, sólo tengan el campo "Body" y dentro de este campo se podrán añadir, editar o eliminar el resto de elementos que se mostrará en tus páginas, incluyendo imágenes o incluso bloques del núcleo de Drupal.</em></p> <h2>Gutenberg Cloud</h2> <p>     Una de las opciones más novedosas de este módulo, es la posibilidad de añadir "bloques" de contenido, directamente desde su repositorio en la web <a href="https://gutenbergcloud.org/blocks">Gutenbergcloud.org</a>, mediante el sistema de CDN, por lo que dichos bloques, con características, estilos y funcionalidades prediseñados, no se guardan como el resto de contenidos en la base de datos de Drupal. Por el contrario, se añaden como etiquetas dentro del campo "BODY", que añade Drupal por defecto cada vez que creamos un nuevo tipo de contenido.</p> <p>     Para añadir esta funcionalidad, sólo habría que activarla como cualquier otro módulo y una vez hecho esto, se añadirá como una de las opciones disponibles para agregar en el listado de bloques cuando hagamos clic en el selector.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 56.13%;" data-ratio="56.13" data-b-token="b-519c4944b53" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="d8d476a3-25c1-4594-910c-36aae38de216" decoding="async" loading="lazy" typeof="foaf:Image" alt="gutenberg - www.drupaladicto.com - formacion especializada en drupal y symfony" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/cloud_gutenberg.jpg?itok=tG0epQYX" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="800" height="449" /></div></div> <p>     Por desgracia, esta funcionalidad no es compatible para todas las versiones de Drupal 9, por lo menos al momento de escribir este artículo. Pero sí podrás utilizarla en cualquier instalación de Drupal 8 o menor que la 9.1.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 16.9%;" data-ratio="16.9" data-b-token="b-82293fbcfb9" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="5fcdd712-d8ea-4bc4-812c-00de9ed7eaf9" alt="Gutenberg Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/no_compatible_0.png?itok=ihf1zaoV" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1059" height="179" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 19/04/2023 - 16:33</span> Wed, 19 Apr 2023 14:33:36 +0000 webmaster 430 at https://drupaladicto.com Contenidos de Prueba | Generados con el módulo Devel https://drupaladicto.com/curso/programacion-drupal/contenidos-de-prueba-generados-con-el-modulo-devel <span class="field field--name-title field--type-string field--label-hidden">Contenidos de Prueba | Generados con el módulo Devel</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-870 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-870 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-870 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-870"> <section id="video-only-870" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-590-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-590-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-590-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/eGXutQIDMIw&amp;max_width=0&amp;max_height=0&amp;hash=xkWV5NsCeCudS1gHm_0C5rpeAX6WhQh7VbpwqGyLRG0" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-590-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1185" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>      Cuando estamos empezando con el desarrollo o implementación de cualquier proyecto, en la mayoría de los casos nos resultará necesario la creación de contenidos con los que podamos realizar pruebas de todo tipo.</p> <p>     Para realizar esta tarea, en Drupal contamos con el módulo <strong>Devel Generate</strong>, integrado dentro de las dependencias del módulo <a href="https://www.drupal.org/project/devel" target="_blank">Devel</a>. Por lo que, una vez instalado y activado en nuestro Drupal, sólo tendremos que dirigirnos a la url "/admin/config/development/generate/content", y allí veremos el listado de todos los tipos de contenidos que tengamos creados en nuestro proyecto.</p> <h3>CÓMO INSTALAR Y CONFIGURAR EL MÓDULO:</h3> <p><strong>Paso 1 Descargar el módulo:</strong></p> <p>     Lo primero que tendrás que hacer es descargarlo, para ello, a partir de Drupal 8 se recomienda que utilices el gestor de paquetes <a data-extlink="" href="https://getcomposer.org/" rel="noreferrer" target="_blank">Composer</a>, ya que te facilitará tanto la instalación como futuras actualizaciones del tus proyectos. No obstante también podrías descargarlo desde la <a data-extlink="" href="https://www.drupal.org/project/devel" rel="noreferrer">Página oficial del módulo</a> y una vez descargado, tendrás que colocarlo en la carpeta "modules" o "modules/contrib", dependiendo de tu instalación y asegurarte de descargar todas sus dependencias o el módulo no funcionará, esta es una de las ventajas con las que cuentas al hacer la instalación usando Composer.</p> <p><strong>Paso 2 Activación del módulo</strong> :</p> <p>     Para activar el módulo Devel, al igual que todos los demás módulos contribuidos de Drupal, tendrás la posibilidad de hacerlo, mediante el uso de la herramienta Drush, con el comando <strong>"drush en devel -y"</strong>, que sirve para activar cualquier módulos y todas sus dependencias, o desde la interfaz de Drupal.    </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 25.08%;" data-ratio="25.08" data-b-token="b-bf562569176" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="bbffe9dd-d7d5-4f17-9b0a-52076bde5c34" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/modulo_devel.png?itok=DyCTE5F_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="163" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 81.38%;" data-ratio="81.38" data-b-token="b-07e736f3d56" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e63f7359-7862-4490-b2de-6abe96112e6c" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/generar_contenido.jpg?itok=dQhk5U7r" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="529" typeof="foaf:Image" /></div></div> <p>     Además de poder generar automáticamente nuestros contenidos, podremos configurar algunas opciones adicionales como, especificar su fecha de publicación, comentarios relacionados, títulos para los contenidos con un límite de caracteres específico, el idioma o incluso los usuarios que los crearon, esta última opción nos facilitará el testeo de los permisos de usuario.</p> <p>     Para generar nuestro contenidos, sólo tendremos que marcar las opciones con las que deseamos trabajar, es recomendable intentarlo la primera vez como poco contenido para estar seguros de obtener lo que pensábamos o si hará falta modificar algún campo.</p> <p>     Si no estás conforme con el contenido generado o simplemente quieres volver a generar contenidos otra vez, puedes seleccionar la opción de eliminar todos los contenidos previamente creados antes de ejecutarlo.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 74%;" data-ratio="74" data-b-token="b-4b2c2db1ff0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="f0925341-0457-435c-b020-899f5a76c3ec" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/como_generar_contenidos.jpg?itok=P7foOYOI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="481" typeof="foaf:Image" /></div></div> <p>     Una vez que hayamos revisado todos los campos que nos interesan, haremos clic en el botón que aparece en la parte inferior de la pantalla y comenzará el proceso inmediatamente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 62.62%;" data-ratio="62.62" data-b-token="b-529a6e0212d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="b59a89a7-77d6-44a7-b385-3b59d1edc906" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/idioma_y_usuarios.jpg?itok=faRslW2Z" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="407" typeof="foaf:Image" /></div></div> <p>     Cuando se haya realizado el proceso de generación de nuestros contenidos, veremos un mensaje de confirmación en la parte superior de la pantalla, con la cantidad y el tipo de contenido que decidimos utilizar.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.91%;" data-ratio="49.91" data-b-token="b-6a5876e61c1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="dac200ad-bc83-4875-81f5-e8f373ae57f9" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/generados.png?itok=lhYaSXTY" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="533" height="266" typeof="foaf:Image" /></div></div> <p>     Para comprobarlo, sólo tendremos que dirigirnos al listado de contenidos en la url "/admin/content" y veremos el listado de contenidos generados por el módulo con las configuraciones adicionales, si es que hemos seleccionado alguna.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.38%;" data-ratio="49.38" data-b-token="b-4e4a8d061ee" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="182f2e84-9c0d-473e-93c7-26d287a6072f" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/listado_generados.jpg?itok=Jtk5KaGC" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="321" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Dom, 19/03/2023 - 09:10</span> Sun, 19 Mar 2023 08:10:21 +0000 webmaster 409 at https://drupaladicto.com Drush , introducción y comandos más útiles https://drupaladicto.com/curso/programacion-drupal/drush-introduccion-y-comandos-mas-utiles <span class="field field--name-title field--type-string field--label-hidden">Drush , introducción y comandos más útiles</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-900 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-900 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-900 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-900"> <section id="video-only-900" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-620-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-620-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-620-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/H25tWYmNms0&amp;max_width=0&amp;max_height=0&amp;hash=ZhSjMApkQP-w68gHru646ZPdXzpnV8wTX6kJwo5DYec" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-620-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1178" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>     Para todos los que trabajamos, en el desarrollo de páginas web utilizando Drupal, es muy importante que nos mantengamos informados, sobre las últimas actualizaciones, tanto a nivel de las funcionalidades o parches de seguridad, del propio CMS, como de las herramientas relacionadas con éste, por ejemplo, el gestor de paquetes <a href="https://getcomposer.org/" target="_blank">Composer</a>, recomendado para todos los proyectos, a partir de Drupal 8 y que hace poco, lanzó una nueva versión ( <a href="/snippet/como-instalar-composer-2-en-ubuntu-2004" target="_blank">Cómo instalar Composer 2 en Ubuntu 20.04</a> ) o superior o la consola Drush.</p> <p>     Con el propósito de facilitar tus tareas de desarrollo, hoy quiero hablarte sobre, La interfaz de línea de comandos (en inglés, <strong>command-line interface</strong>, <strong>CLI</strong>), que se utiliza en Drupal, conocida como <strong>Drush</strong>, para que puedas sacarle el mayor provecho posible y obtener mejores resultados.</p> <h2>   INSTALACIÓN DE DRUSH CON COMPOSER</h2> <p>        Hace varios años, se recomendaba que al trabajar con Drush y Drupal, realizáramos una instalación global, con la que pudiéramos efectuar toda clase de operaciones, sin importar la versión de nuestro proyecto; pero a partir de Drupal 8, se comenzó a proponer instalaciones individuales, para evitar errores producidos por incompatibilidades, ya fuera entre versiones de php, o del núcleo de Drupal.</p> <p>        Actualmente, para instalar Drush en cualquier proyecto de Drupal 8 o superior, utilizaremos el gestor de paquetes Composer, y al igual que con otros módulos de Drupal, dejaremos en él la responsabilidad de descargar todos los archivos necesarios para su funcionamiento, para ello escribiremos desde la carpeta raíz de nuestra instlación, el siguiente comando:</p> <pre> composer require drush/drush</pre> <p>     De inmediato se iniciará el proceso de descarga de la versión más actual y estable, que esté disponible sobre esta herramienta de comandos, en el momento en que escribo este artículo, es la versión 10.5.0</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.08%;" data-ratio="27.08" data-b-token="b-e2eaf51e358" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="cc37a84f-2696-47d2-bbfe-5e454437be85" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/composer_require_drush.png?itok=yb0SkxMN" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="480" height="130" typeof="foaf:Image" /></div></div> <h2 dir="auto">     DRUSH LAUNCHER</h2> <p dir="auto">         Con el Drush Launcher podrás ejecutar comandos de Drush en todos tus proyectos, sin la necesidad de escribir la ruta completa ej: "/vendor/bin/drush cr". Exiten varias formas para descargar e instalarlo, puedes revisar la documentación en <a href="https://github.com/drush-ops/drush-launcher" target="_blank">Repositorio Drush Launcher</a></p> <h3>     5 COMANDOS DRUSH QUE DEBERÍAS CONOCER</h3> <h3>     GENERAR UN MÓDULO</h3> <p>       Drush te genera automáticamente y de manera configurable, toda la estructura de archivos necesaria para crear un módulo. (Funcionalidad de la antigua Drupal Console)</p> <pre> drush generate module</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 42.08%;" data-ratio="42.08" data-b-token="b-a50de5214d2" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="bceaf38a-1e39-4437-874e-d35afea171b8" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/drush_generate_module.png?itok=_GflOjpZ" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="480" height="202" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 78.9%;" data-ratio="78.9" data-b-token="b-b807f3e48b1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="40e3002e-9eef-4456-9c27-9529fdd391cd" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/module_test.png?itok=UILlEliG" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="507" height="400" typeof="foaf:Image" /></div></div> <h3>     RECUPERAR ACCESO ADMIN</h3> <p>     En algunos casos, es posible que perdamos el acceso del usuario admin, al realizar algún traspaso de entornos o no haber guardado los datos de acceso en un lugar fácil de encontrar. Para estos casos, el siguiente comando te da la posiblidad de acceder como administrador para que puedas cambiar la clave de acceso por una nueva.</p> <pre> drush:uli </pre> <p>     Forma de uso: Copia en el navegador el enlace generado, a partir de "/user" y pégalo en el navegador a continuación del dominio de tu página. Al presionar enter accederás directamente a la página de configuración del usuario administrador para que puedas cambiar la clave de acceso sin necesidad de acordarte de la anterior.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 46.31%;" data-ratio="46.31" data-b-token="b-d16b1d043d8" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="10450ef0-6bf3-4e20-8afc-3aaec1d675a3" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/recuperar_el_administrador.png?itok=owyYKVrN" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="301" typeof="foaf:Image" /></div></div> <h3>     VER LA TABLA DE ERRORES SIN ABRIR DRUPAL</h3> <p>     Como ya sabrás, Drupal ofrece la posibilidad de verificar, todos los errores que registra a nivel de base de datos, ya que los guarda en una tabla llamada Watchdog, con Drush podrás acceder a estos datos, sin la necesidad de entrar a la interfaz de usuario usando el siguiente comando:</p> <pre> drush wd-show</pre> <p>     Al ejecutarlo, verás inmediatamente en consola, todos los datos que haya guardado Drupal dentro de esta tabla, facilitándote el análisis de posibles errores más rápidamente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 29.54%;" data-ratio="29.54" data-b-token="b-3835add8bf4" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c341a84e-086b-4e5f-a280-b6d04e710bcf" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/drush_errores.png?itok=UH8eyMUt" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="192" typeof="foaf:Image" /></div></div> <h3>     VER LOS MÓDULOS Y/O TEMAS ACTIVADOS</h3> <p>     En algunos proyectos, sobretodo cuando se trata de instalaciones muy grandes, necesitamos tener una idea rápida de los módulos o temas que se encuentran activados en un momento determinado. Este comando nos mostrará en pantalla, un listado completo de todos los módulos y temas, con la correspodiente información acerca su versión y de si están o no activados.</p> <pre> drush pml</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.54%;" data-ratio="49.54" data-b-token="b-7880d276280" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="24534981-7e84-439a-af14-0de6f6e03ad3" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/listado_modulos.png?itok=u4PDh0fv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="322" typeof="foaf:Image" /></div></div> <h3>     EXPORTAR BASE DE DATOS COMPLETA</h3> <p>     Cuando estamos haciendo el traspaso de entornos, es posible que necesitemos exportar toda la base de datos para dicho traspaso, con este comando, podremos generar rápidamente un backup que se guardará a la altura de nuestra carpeta raíz del proyecto:</p> <pre> drush sql:dump --result-file=../mi_backup.sql</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 34.31%;" data-ratio="34.31" data-b-token="b-e5dcd1bf75f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="83d314d0-01d8-480c-9399-d8b0c6144d73" loading="lazy" alt="Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/backup_con_drush.png?itok=D5_J9S2I" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="223" typeof="foaf:Image" /></div></div> <h3>     BORRAR BASE DE DATOS EXISTENTE:</h3> <pre> drush sql-drop</pre> <h3>     IMPORTAR UNA COPIA DE LA BASE DE DATOS:</h3> <pre> drush sql-cli &lt; ~/my-sql-dump-file-name.sql</pre> <p>Volcará la base de datos y la comprimirá, colocándola en el directorio predeterminado de drush bajo una marca de tiempo</p> <pre> drush sql-dump --gzip --result-file</pre> <p>Volcará la base de datos en el archivo especificado antes de comprimirlo con gzip</p> <pre> drush sql-dump --gzip --result-file=/path/to/file.sql</pre> <p>Fijar un tema por defecto para tu instalación de Drupal, ejemplo el theme Bartik</p> <pre> drush config-set system.theme default bartik</pre> <p>     Puedes aprende más sobre el uso y los comando de drush, visitando su <a href="https://drushcommands.com/drush-9x/" target="_blank">drushcommands</a> o <a href="https://www.drush.org/latest/" target="_blank">www.drush.org/latest/</a></p> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 09/03/2023 - 09:11</span> Thu, 09 Mar 2023 08:11:23 +0000 webmaster 290 at https://drupaladicto.com Admin Toolbar https://drupaladicto.com/curso/admin-toolbar <span class="field field--name-title field--type-string field--label-hidden">Admin Toolbar</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 23:21</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1039 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1039 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1039 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1039"> <section id="video-only-1039" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-post.jpg?itok=kSR2Q5ei" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-737-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-737-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-737-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/ZEuBblFboOk&amp;max_width=0&amp;max_height=0&amp;hash=_VQw-fYdj0g_Hjlv3Ge8pExGIvTB-EzIOa7aS6teNKc" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-737-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1040" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p><span id="cke_bm_91S" style="display: none;"> </span></p> <p>Es muy importante, que al momento de comenzar un proyecto con Drupal, contemos con los módulos que nos facilitarán las tareas de desarrollo, agilizando el proceso de creación, configuración y ejecución de cambios.</p> <p>Uno de estos módulos es <a href="https://www.drupal.org/project/admin_toolbar" target="_blank">Admin Toolbar</a>, que nos aportará, entre otras cosas, la posibilidad de acceder más rápidamente a cualquiera de las opciones y páginas de nuestro proyecto, ya que amplía  notablemente la funcionalidad del menú administrador que trae Drupal por defecto. </p> <p></p> <p> </p> <p>     Aunque este módulo sustituye el menú administrador con el que nos viene toda instalación de Drupal, mantiene sus funcionalidades originales, como los enlaces directos, además de heredar la capacidad responsiva, lo que significa que podremos administrar nuestra web desde cualquier dispositivo móvil o Tablet con mayor facilidad que en versiones anteriores.</p> <h3>SUB-MÓDULOS DE ADMIN TOOLBAR</h3> <p>     Cuando descargues el módulo Admin Toolbar, te recomiendo activar todos sus sub-modulos, ya que al hacerlo tendrás otras opciones bastante interesantes.. </p> <p></p> <p><em><strong>Admin Toolbar Extra Tools<br />      </strong></em>Con este sub-modulo se añaden enlaces directos a varias funcionalidades muy necesarias en nuestro desarrollo, como el borrado de caché, ejecución del cron de Drupal o las actualizaciones, así como todas las relacionadas con otro módulo muy recomendable durante cualquier desarrollo de Drupal, como es el  <a href="https://www.drupal.org/project/devel">Módulo Devel</a>.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 137.47%;" data-ratio="137.47" data-b-token="b-2ebbbc06fb5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4656326c-1b7f-4e0a-b4c8-1d6e17ebb8ba" loading="lazy" alt="Admin Toolbar Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/admin_toolbar_extras.jpg?itok=HRwt3TK6" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="419" height="576" typeof="foaf:Image" /></div></div> <h3><strong><em>ADMIN TOOLBAR SEARCH</em></strong></h3> <p>Este interesante sub-modulo activa un potente buscador, para encontrar las diferentes formas de acceder a cualquiera de los contenidos o módulos de tus proyectos, tienes esta funcionalidad en el <a href="https://www.drupal.org/project/coffee" target="_blank">Módulo Coffe</a></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 73.08%;" data-ratio="73.08" data-b-token="b-dbe4cc43f35" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c54a522d-b67d-4b4a-a028-7c1f55407fec" loading="lazy" alt="Admin Toolbar Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/buscador_admin_toolbar.jpg?itok=AiRfZmk7" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="587" height="429" typeof="foaf:Image" /></div></div> <h3>ADMIN LINKS ACCESS FILTER</h3> <p>El módulo Admin links Access filter corrige la visualización de enlaces a los que el usuario no debería tener acceso (ver # 296693: Restringir el acceso a páginas de administración de nivel superior vacías) se incluyó como el submódulo de filtro de acceso a enlaces de la barra de herramientas de administrador.<br /> A partir de 8.x-1.21, el módulo de la barra de herramientas de administración se ha vuelto compatible con la Sección 508 de la Ley de rehabilitación, sobre todo al hacer que el teclado del módulo sea accesible y compatible con los contrastes de color para el enfoque. Para obtener más información sobre esta visita</p> <p> </p> <h3>DESCARGA Y ACTIVACIÓN:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong></p> <p>          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/admin_toolbar</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/admin_toolbar" target="_blank">Módulo Admin Toolbar</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.<br />  </p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en admin_toolbar -y</pre> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/entidades" hreflang="es">entidades</a></div> <div class="field__item"><a href="/categoria/entities" hreflang="es">entities</a></div> <div class="field__item"><a href="/categoria/interfaz-module" hreflang="es">interfaz module</a></div> <div class="field__item"><a href="/categoria/modulos" hreflang="es">módulos</a></div> <div class="field__item"><a href="/categoria/navegacion" hreflang="es">navegacion</a></div> <div class="field__item"><a href="/categoria/navigation" hreflang="es">navigation</a></div> <div class="field__item"><a href="/categoria/procedimientos" hreflang="es">procedimientos</a></div> <div class="field__item"><a href="/categoria/rol" hreflang="es">rol</a></div> <div class="field__item"><a href="/categoria/user" hreflang="es">user</a></div> <div class="field__item"><a href="/categoria/usuarios" hreflang="es">usuarios</a></div> </div> </div> Mon, 06 Mar 2023 22:21:42 +0000 webmaster 213 at https://drupaladicto.com Backup and Migrate https://drupaladicto.com/curso/backup-and-migrate <span class="field field--name-title field--type-string field--label-hidden">Backup and Migrate</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 23:18</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1041 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1041 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1041 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1041"> <section id="video-only-1041" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-738-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-738-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-738-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/95fsIISibu4&amp;max_width=0&amp;max_height=0&amp;hash=4F1D-zZuNDOyswsj0-hFzjJrK__QoEupCFLsS_Y453c" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-738-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1042" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>  Imagina que estás trabajando en un nuevo proyecto con Drupal 8 o 9 en tu ordenador, estás modificando contenidos, estructuras, taxonomías y de pronto ocurre un error que te deja sin acceso a la última versión estable de tu proyecto.</p> <p>Por esta razón es muy recomendable que el segundo módulo que instales en cualquier Drupal sea <strong>Backup and Migrate, </strong>por que podrás realizar copias de seguridad antes de instalar otros módulos o aplicar cambios importantes. Además tendrás la opción de descargar el archivo comprimido, si quieres hacer un traspaso de tu instalación hacia otro entorno para aplicar dichos cambios inmediatamente o podrás programarlas para que se hagan automáticamente en tu servidor de producción.</p> <h3>Cómo instalar y configurar el módulo:</h3> <p><strong>Paso 1 Descargar el módulo:</strong></p> <p>     Lo primero que tendrás que hacer es descargarlo, para ello, a partir de Drupal 8 se recomienda que utilices el gestor de paquetes <a href="https://getcomposer.org/" target="_blank">Composer</a>, ya que te facilitará tanto la instalación como futuras actualizaciones del tus proyectos. No obstante también podrías descargarlo desde la <a href="https://www.drupal.org/project/backup_migrate" target="_blank">Página oficial del módulo</a> y una vez descargado, tendrás que colocarlo en la carpeta "modules" o "modules/contrib", dependiendo de tu instalación.</p> <p><strong>Paso 2 Configuración del settings:</strong></p> <p>     Configuración de los archivos privados dentro de "Settings.php", este paso es muy importante, porque el módulo Backup and Migrate utiliza por defecto, los archivos privados de Drupal, ya que las copias de seguridad no deberían estar disponibles para nadie más que los administradores del sitio. </p> <p>     Si abres tu archivo "settings.php" con tu editor de texto o IDE favorito y buscas la palabra "private", encontrarás varias líneas de código que te explican cómo funciona, además de la línea específica, que deberás descomentar, borrando la almohadilla "#" para luego añadir la ubicación que tendrá tu archivo private.</p> <p>     Puedes utilizar por ejemplo: "<strong>$settings['file_private_path'] = '../private</strong>'; esto significa que tu carpeta "private" estará colocada a nivel de tu directorio Raiz y que dentro el módulo Backup and Migrate creará dentro su propia carpeta con los accesos y permisos requeridos para que funcione correctamente.</p> <p>     </p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 43.23%;" data-ratio="43.23" data-b-token="b-0ec778868c0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="70584fcb-1a11-422d-bd86-11ae7bea51d9" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/private_settings.png?itok=Xw5DOuqY" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="281" typeof="foaf:Image" /></div></div> <p><strong>Paso 3 Activación del módulo</strong> :</p> <p>     Para activar el módulo Backup and migrate, al igual que todos los demás módulos contribuidos de Drupal, tendrás la posibilidad de hacerlo, mediante el uso de la herramienta Drush, con el comando "drush en backup_migrate -y", que sirve para activar cualquier módulos y todas sus dependencias, o desde la interfaz de drupal.   </p> <p> </p> <p><strong>Paso 4 Comprobación:</strong></p> <p>     Ahora que ya tenemos activado el módulo y que hemos configurado correctamente el archivo "settings.php" y la carpeta para los archivos privados y las copias del módulo, nos toca asegurarnos de que todo funciona según el plan.</p> <p>     Para ello puedes acceder a la pantalla de configuraciones del módulo, desde el menú superior y luego crear tu primera copia de seguridad, asegurándote de que la copia se guardará en los archivos privados y después haciendo clic en el botón de "hacer copia de seguridad ahora", una vez realizada la copia:</p> <pre>  <strong>https://miproyecto_drupal/admin/config/development/backup_migrate</strong></pre> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 52.96%;" data-ratio="52.96" data-b-token="b-6f43dce3f03" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="82eea3b2-1f7b-432e-8448-a856e568a806" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/accer_al_bk_migrate.jpg?itok=d50lV-3M" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1097" height="581" typeof="foaf:Image" /></div></div> <p> </p> <p>     Si todo está correcto verás un mensaje de confirmación y luego podrás buscar la copia guardada, en la pestaña "copias de seguridad guardadas", o si lo prefieres, también podrás descargar el archivo comprimido, por si quieres trasladar tu proyecto a otro entorno.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 96.72%;" data-ratio="96.72" data-b-token="b-f5267692d68" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4d946552-4218-4dfd-a1e2-38eb436dedaa" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/copia_completada.png?itok=f6i_cSjr" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="549" height="531" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/backup" hreflang="es">backup</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/copia-seguridad" hreflang="es">copia seguridad</a></div> <div class="field__item"><a href="/categoria/drupal-7" hreflang="es">drupal 7</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/migracion" hreflang="es">migración</a></div> <div class="field__item"><a href="/categoria/modulo" hreflang="es">modulo</a></div> <div class="field__item"><a href="/categoria/module" hreflang="es">module</a></div> <div class="field__item"><a href="/categoria/mysql" hreflang="es">mysql</a></div> </div> </div> Mon, 06 Mar 2023 22:18:07 +0000 webmaster 212 at https://drupaladicto.com Importar contenidos y usuarios desde CSV en Drupal 8/9 https://drupaladicto.com/curso/importar-contenidos-y-usuarios-desde-csv-en-drupal-89 <span class="field field--name-title field--type-string field--label-hidden">Importar contenidos y usuarios desde CSV en Drupal 8/9</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 22:46</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1066 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1066 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1066 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1066"> <section id="video-only-1066" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-751-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-751-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-751-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/D-MX8gCR9vA&amp;max_width=0&amp;max_height=0&amp;hash=rbE08TJD1are8r3TWP6SqcN5kMiJzESa9fRxY_IWOVc" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-751-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1115" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>    Muchas veces, al trabajar con proyectos web, nos encontrarmos con varias actividades relacionadas al traspaso de datos y/o migraciones, entre plataformas diferentes o versiones distintas de la misma. Según el caso, para realizar dicho procedimiento, contamos con varios métodos como el consumo de información a través de los servicios web o la importación desde archivos con diferentes formatos, que podrían ser xml, uml, json, csv, entre otros.</p> <p>     Debido a que Drupal, al igual que otros CMS O gestores de contenido, utiliza bases de datos y tablas, como parte de su estructura, para guardar o gestionar todo aquello a lo que tenemos acceso, tanto si somos administradores, gestores o incluso usuarios finales, una vez instalado; es posible importar sus contenidos y usuarios desde un archivo en formato csv, ya que nos permitirá importar varias tablas y contenidos de una manera simple y visualmente gestionables, si nos apoyamos en programas para hojas de cálculo como Libre Office o Microsoft Excel.</p> <h3> DESCARGA Y ACTIVACIÓN:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong></p> <p>          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/csv_importer</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/csv_importer" target="_blank">Módulo CSV Importer</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.</p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en csv_importer -y</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 51.79%;" data-ratio="51.79" data-b-token="b-542cad4475d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="74afb1eb-75d1-479e-840c-1e4ec99e6417" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/csv_importer_drush.png?itok=XZSG2tqK" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="390" height="202" typeof="foaf:Image" /></div></div> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 74.1%;" data-ratio="74.1" data-b-token="b-c162b463724" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="94882a4d-d943-4036-8526-c290a61ae312" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/importer_por_interfaz.png?itok=HKmj3lst" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="390" height="289" typeof="foaf:Image" /></div></div> <h2>    PÁGINA DE CONFIGURACIÓN DE CSV IMPORTER</h2> <p>        Una vez activado el módulo, podremos dirigirnos a su página de configuración, en la url "<strong>/admin/config/development/csv-importer"</strong>, donde veremos un selector, que nos mostrará las diferentes opciones de importación y cambiará de acuerdo con lo que hayamos elegido. </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-ddb2e69a542" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="cd0fb8d6-8b57-4b4b-ba6f-f0d6df1c55a1" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/csvimporter.png?itok=6LCspb7y" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h2>     CÓMO IMPORTAR CONTENIDOS CON CSV IMPORTER</h2> <p>          Para importar contenidos, tendremos que seleccionar la opción tipo de contenido y a continuación, veremos el listado de los tipos de contenidos que hayamos configurado en nuestro drupal.</p> <p>          <strong>Select entity type</strong>: Permite seleccionar el tipo de entidad con el que vamos a trabajar en la importación. Por defecto, en una instalación nueva de Drupal, tendremos las siguientes entidades disponibles: Usustio, Enlace de menú personalizado, Contenido, Comentario y Término de taxonomía.</p> <p>          <strong>Select entity bundle</strong>: Permite seleccionar el tipo de contenido que deseamos importar, dependiendo de los tipos que tengamos en el drupal instalados, este listado podría variar. Por defecto, en una instalación nueva de Drupal, tendremos Artículo y Página básica.</p> <p>         <em> ¿Qué es un Bundle?</em>; según la página oficial de Drupal "En Drupal 8, los paquetes son un tipo de contenedor de información que contiene el campo o las definiciones de configuración. A veces se les llama "subtipos". Los paquetes son opcionales y en la jerarquía de tipos de contenedores de información se ajustan debajo de los tipos de entidad."</p> <p>         <strong>Select delimiter</strong>: Permite seleccionar el separador que utilizaremos en el archivo de importación. Lo más frecuente es utilizar comas ( , ) o punto y como ( ; ), para separar los contendios dentro del archivo para importar.</p> <p>         <strong>Select CSV file:</strong> Permite cargar el archivo con el que finalmente, importaremos los contenidos, usuarios, términos, etc.</p> <h2>     CÓMO PREPARAR EL ARCHIVO DE IMPORTACIÓN USANDO OPEN OFFICE</h2> <p>          Ya mencioné al principio, que podremos crear archivos de importación en formato CSV utilizando programas gratuitos como Open Office o Microsoft Excel. El objetivo principal es que podamos controlar visualmente los contenidos que vayamos a utilizar, ya que el formato original del csv es un conjunto de datos y comas. Algo parecido al siguiente ejemplo:</p> <pre> <code>title,body,body,body CSV importer 1,body 1,body 2,body 3 CSV importer 2,body 4,body 5,body 6</code></pre> <p>     Para que podamos configurar un archivo de importación, lo importante es tener claro que la primera línea del archivo es la que define las cabeceras de las columnas y en las siguientes, los contenidos que se colocarán dentro de cada columna respectivamente. </p> <h3>     <strong>PASO 1- CREAR ARCHIVO </strong></h3> <p>        Abrir el programa Open Office y crear una hoja de cálculo nueva.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-d5d7d61f63e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c7e72f26-532c-4482-a0c5-1fc130e181f7" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/abir_openoffice.png?itok=eRZTViTI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h3>     PASO 2 - ELIMINAR HOJAS SOBRANTES ANTES DE IMPOTAR</h3> <p>        Es muy importante que antes de comenzar a rellenar el archivo con nuestros datos, eleminemos las hojas adicionales que generan por defecto al crear una hoja de cálculo, o de lo contrario, no se realizará la importación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-4284e8a1f39" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="7f709e34-82d7-4bb8-8fcf-c792e594b0e6" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/eliminar_hojas_sobrantes.png?itok=io3BO1AF" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h3>     PASO 3 - GUARDAR EL ARCHIVO EN FORMATO CSV</h3> <p>        Una vez hayamos rellenado el documento con todos los datos que vamos a importar, asegurándonos de que cada columna corresponda con el contenido o usuario esperado, procederemos a guardar nuestro archivo en el formato csv. </p> <p>       Para ello, iremos al menú <strong>Archivo/Guardar como</strong></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-989d187e396" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0d5f97c3-389e-4f9a-8847-0a46613efb4e" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/guardar_como_csv.png?itok=Z6MDaP5D" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <p>     A continuación, seleccionaremos el formato <strong>CSV</strong> y el programa nos preguntará, si deseamos mantener el mismo formato para continuar editando, seleccionaremos que sí, y de esta forma, aunque exportemos el archivo, también podremos realizar más cambios o correcciones usando el programa Open Office más adelante.</p> <p>     <strong>Muy importante para los contenidos en español Formato Unicode UTF-8</strong>, en el caso de los contenidos en español, en la siguiente ventana que se abrirá deberíamos asegurarnos del formato correcto, para evitar errores con los signos de puntuación específicos de nuestro idioma como el uso de Ñ, acentos, etc.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 154.03%;" data-ratio="154.03" data-b-token="b-29af18d013a" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="cb0f9210-7eee-41f7-9d89-ae908a54d156" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/guardar_csv_2.png?itok=vwiYBcph" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="422" height="650" typeof="foaf:Image" /></div></div> <h3>     PASO 4 - IMPORTANDO LOS CONTENIDOS DESDE EL CSV CREADO</h3> <p>        Cuando hayamos terminado de configurar y guardar nuestro archivo csv, volveremos a la página de configuración del módulo CSV Importer, en la url "<strong>/admin/config/development/csv-importer" </strong>y procedermos a cargar nuestro archivo para comenzar con la importación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 192.31%;" data-ratio="192.31" data-b-token="b-eb0664b8aa5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="9a919970-4bc1-474a-a4e3-323b7b14fe13" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/importacion_realizada.png?itok=Qx4E6uZI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="338" height="650" typeof="foaf:Image" /></div></div> <h2>     PROBLEMAS CON LA IMPORTACIÓN</h2> <p>          Es posible, que al hacer clic en el botón de importar, veas en la pantalla un error muy frecuente relacionado conel campo título, esto ocurre porque, si haz utilizado un programa de hojas de cáculo como Open Office o Microsoft Excel, al guardar el archivo, se ha añadido un espacio entre los campos título y el siguiente campo, que por defecto es el body. El campo título es el identificador por defecto en Drupal, por lo tanto, no debería existir ningún espacio relacionado con él.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 97.31%;" data-ratio="97.31" data-b-token="b-18e619c7730" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0b1db784-4905-4974-91f8-d42369cb733b" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/error_importacion.png?itok=v6jMvY7k" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="521" height="507" typeof="foaf:Image" /></div></div> <p>     Para solucionarlo, abre el archivo csv utilizando el block de notas de windows o cualquier otro programa que te permita ver el contenido original, una vez abierto, borra el espacio que existe y una vez guardado el cambio, intenta realizar la importación nuevamente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 64.56%;" data-ratio="64.56" data-b-token="b-1638397fcc2" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e9e3eada-14dd-4869-be3c-66e67e508225" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/espacio_titulo.png?itok=WNK48Wsv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="412" height="266" typeof="foaf:Image" /></div></div> <h2>     EJEMPLOS DE IMPORTACIÓN CON CSV IMPORTER</h2> <p>          Si quieres conocer más sobre las estructuras de los archivos para importar, puedes visitar su <a href="https://www.drupal.org/docs/8/modules/csv-importer/examples" target="_blank">Página de Ejemplos de Importación con CSV Importer</a></p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/code" hreflang="es">code</a></div> <div class="field__item"><a href="/categoria/codigo" hreflang="es">código</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/consola" hreflang="es">consola</a></div> <div class="field__item"><a href="/categoria/console" hreflang="es">console</a></div> <div class="field__item"><a href="/categoria/contenidos" hreflang="es">contenidos</a></div> <div class="field__item"><a href="/categoria/csv" hreflang="es">csv</a></div> <div class="field__item"><a href="/categoria/desarrollo" hreflang="es">desarrollo</a></div> <div class="field__item"><a href="/categoria/development" hreflang="es">development</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/importacion" hreflang="es">importación</a></div> <div class="field__item"><a href="/categoria/instalacion" hreflang="es">instalacion</a></div> <div class="field__item"><a href="/categoria/interfaz" hreflang="es">interfaz</a></div> <div class="field__item"><a href="/categoria/modulos" hreflang="es">módulos</a></div> <div class="field__item"><a href="/categoria/module" hreflang="es">module</a></div> <div class="field__item"><a href="/categoria/procedimientos" hreflang="es">procedimientos</a></div> <div class="field__item"><a href="/categoria/script" hreflang="es">script</a></div> <div class="field__item"><a href="/categoria/sitebuilder" hreflang="es">sitebuilder</a></div> <div class="field__item"><a href="/categoria/tipos-de-contenido" hreflang="es">tipos de contenido</a></div> </div> </div> Mon, 06 Mar 2023 21:46:00 +0000 webmaster 204 at https://drupaladicto.com