carrusel https://drupaladicto.com/ es Slideshow responsive mulitversiones en Drupal https://drupaladicto.com/curso/drupal-frontend/slideshow-responsive-mulitversiones-en-drupal <span class="field field--name-title field--type-string field--label-hidden">Slideshow responsive mulitversiones en 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-970 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-970 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-970 .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-970"> <section id="video-only-970" 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-691-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-691-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-691-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/z4fTQahunC0&amp;max_width=0&amp;max_height=0&amp;hash=zzabKo47PsAlVBEU7gngTUnRPPdpuQr2lcgWCz-cT_Q" 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-691-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--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>     Aunque en la mayoría de las ocasiones, los módulos contribuidos de Drupal podrán resolver el 85% de las necesidades; en algunos casos nos toca realizar desarrollos a medida o añadir ciertos ajustes, para que el resultado cumpla totalmente con nuestro propósito. </p> <p>     Otra de las razones por las que nos podemos ver obligados a realizar esta clase de personalizaciones, es para prevenir fallos por incompatibilidad entre versiones de Drupal, una vez actualizados nuestros proyectos.</p> <p>     Una de las funcionalidades más reclamadas es el uso de un carrusel o slideshow, donde el usuario administrador del sitio pueda promover algunso contenidos de su web, informar sobre promociones concretas o simplemente avisar a los recién llegados, acerca de las ventajas con las que contarán si se suscriben al sitio.</p> <p>     Por todo lo anterior, hoy te voy a contar los pasos para crear un Carrusel Responsivo, sin la necesidad de utilizar ningún módulo contribuido y con la capacidad añadida de que podrás utilizarlo en cualquier proyecto Drupal, independientemente de la versión.</p> <h2>   Requerimientos</h2> <ul><li>Tener instalado un Subtheme o theme personalizado (Para realizar cambios en plantillas)<br />  </li> <li>Conocimientos básicos sobre Drupal Behaviors <a href="/actualidad/como-trabajar-con-javascript-y-librerias-jquery-en-drupal-9" target="_blank">HAZ CLIC AQUÍ</a><br />  </li> <li>Tener instalado los módulos Media y Media Libraries (Para cargar las imágenes)<br />  </li> <li>Tener instalado el módulo Paragraphs (Para que el Slideshow sea más flexible) <a href="/curso/creacion-de-contenidos-con-paragraphs" target="_blank">HAZ CLIC AQUI</a><br />  </li> <li>Tener habilitado el Modo debug de Drupal <a href="/snippet/configuracion-desarrollo-local-drupal-8" target="_blank">HAZ CLIC AQUÍ</a><br />  </li> </ul><h2>   Cómo crear un Slideshow Responsivo transversal en Drupal</h2> <h3>     Paso 1 - Crear el Subtheme o tema personalizado</h3> <p>       Vamos a comenzar por generar nuestro tema personalizado, para ello utilizaremos el Theme Olivero, que viene instalado en Drupal, a partir de Drupal 9, sustituyendo a Bartik.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/bartik_inicial.svg" alt="Subtheme Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Subtheme Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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"><h3>   Arhivos y configuraciones del Subtheme basado en Olivero</h3> <p>     Para poder implementar un tema personalizado en Drupal, serán necesarios varios archivos y carpetas, que nos permitirán conectarlo con Drupal; una vez instalado el subtheme, podremos añadir ciertas modificaciones posteriores, como haremos con los estilos CSS y el código javascript necesario para que funcione nuestro carrusel de imágenes.</p> <p>     Los archivos y carpetas, que deberás crear antes de poder instalar el Subtheme son:</p> <p>     <strong>Carpetas:</strong> olivero_subtheme, css, js, templates</p> <p>     <strong>Archivos:</strong> olivero_subtheme.info.yml, global_styling, olivero_subtheme.libraries.yml, style.css, global.js</p> <p><em><strong>olivero_subtheme/ </strong></em>olivero_subtheme.info.yml</p> <pre> name: 'Olivero Subtheme' type: theme description: 'Subhteme based on Olivero' core: 8.x core_version_requirement: ^8 || ^9 || ^10 base theme: olivero libraries: - olivero_subtheme/global-styling</pre> <p><em><strong>olivero_subtheme/ </strong></em>olivero_subtheme.libraries.yml</p> <pre> global-styling: version: 1.x css: theme: css/style.css: {} js: js/global.js: {} dependencies: - core/jquery </pre> <p><em><strong>olivero_subtheme/ </strong></em>style.css</p> <pre> /** * @file * Subtheme specific CSS. */</pre> <p>   Una vez creados todos los archivos necesarios para nuestro subtheme, podremos activarlo como theme por defecto, por medio de la interfaz de usuario de Drupal, desde la url '/admin/appearance', no hemos definido ninguna zona en el archivo <em><strong>olivero_subtheme.info.yml</strong></em>, porque utiliaremos las mismas que trae el theme base Olivero.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/activando_subtheme.svg" alt="Subtheme Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Subtheme Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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>   Paso 2 - Creación de los Paragraphs Carrusel y Diapositiva</h2> <p>     Al igual que explicamos en el <a href="/curso/landing-page-creacion-y-configuracion-con-drupal-9">curso Landing Page para Drupal 8/9/10</a>, nuestra idea será crear un componente del tipo Paragraphs al que llamaremos <strong>Carrusel</strong>, que nos permitirá añadirlo y reutilizarlo, en cualquiera de las páginas de nuestro proyecto, por eso lo combinaremos con los módulos Media y Media libraries, y así podremos aprovechar la máximo todo nuestro contenido.</p> <p>     Primero crearemos un tipo de paragraphs, al que llamaremos "Diapositiva" y le añadiremos cuatro campos:</p> <p>     - Imagen de fondo: Tipo multimedia, para reutilizar las imágenes.</p> <p>     - Títular princpal</p> <p>     - Subtítulo</p> <p>     - Botón: tipo enlace, para que podamos añadir un botón que lleve al usuario a otros contenidos.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/campos-diapositiva.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/Formulario.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/presentacion.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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"><p>     Una vez creado el páragraph para las diapositivas, crearemos el segundo paragraphs, con el nombre "Carrusel Promocional", con un único campo del tipo Paragraphs, al que llamaremos "Diapositivas" y dejaremos como ilimitado, permitiéndonos añadir tantas diapositivas como hagan falta.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/carrusel-campos.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/formulario-carrusel_0.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/presentacion-carrusel.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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>     Paso 3 - Añadir el campo Contenidos en Basic Page</h2> <p>     Ahora que ya tenemos creados y configurados los paragraphs, correspodientes a las diapositivas y al mismo carrsuel, es el momento de añadirlo, dentro del contenido "Página básica" o el que prefieras tú, lo llamaremos "Contenidos", y por el momento, sólo añadiremos la referencia hacia nuestro "Carrusel Promocional"</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/campos_basic_page.svg" alt="Creacion de campos | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Creacion de campos | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/pb_campos.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/pb_formulario.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/pb_presentacion.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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">     El resultado final, será un carrusel al que podremos añadir varias diapositivas, con los elementos necesarios para que nuestros usuarios puedan ver la información principal y hacer clic en el botón, para saber los detalles.</div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/slider-transversal_0.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> </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>   Paso 4 - Configurar las plantillas Twig</h2> <p>     Este paso ya lo hemos explicado ampliamente en varias ocaciones, se trata de facilitar la identificación de las plantillas que necesistaremos, para adapatarlas a los cambios requeridos.</p> <p>     Si todavía no haz utilizado el Modo Debug de Drupal <a href="/snippet/configuracion-desarrollo-local-drupal-8" target="_blank">HAZ CLIC AQUÍ</a></p> <p>     Con el modo Debug activado, nos tocará averiguar y elegir el nombre para nuestras plantillas y aplicarles la estructura correspondiente en cada caso.</p> <p>     Así que, para poder probar nuestro carrusel, primero crearemos una página básica y le añadiremos todos los datos necesarios, que hemos configurado previamente. Como se trata de un carrusel, añadiremos dos diapositivas, para verificar que todo es correcto y se muestra según lo que esperábamos.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/diapo1.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/agregando-elementos.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/debugando.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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>   Cambiando la plantilla de las diapositivas</h2> <p>     Basándonos en el nombre sugerido para la plantilla que afectará a nuestras diapositivas, copiaremos la plantilla modelo desde el módulo Paragraphs y a continuación copiaremos el siguiente código, cambiando los valores por los que hemos puesto.</p> <pre> {% block paragraph %}   &lt;div{{ attributes.addClass(classes) }}     {% block content %}       {% if content.field_imagen_de_fondo|render is not empty %}         style=" background-image: url('{{ file_url(content.field_imagen_de_fondo[0]['#media'].field_media_image.entity.uri.value) }}')";       {% endif %}       &gt;       &lt;div id="home-content-box" {{ content_attributes.addClass('node__content', 'clearfix') }}&gt;         &lt;div id="home-content-box-inner" class="text-center"&gt;           &lt;div id="home-heading"&gt;             {% if content.field_titular_princpal|render is not empty %}               &lt;h1 class="label-slide"&gt;{{ content.field_titular_princpal.0 }}&lt;/h1&gt;             {% endif %}             {% if content.field_subtitulo|render is not empty %}               &lt;div id="env-explicacion"&gt;                 &lt;p class="explicacion"&gt;                   {{ content.field_subtitulo.0 }}                 &lt;/p&gt;               &lt;/div&gt;             {% endif %}             {% if content.field_boton_diapositiva|render is not empty %}               &lt;div id="home-btn" class="animated zoomIn"&gt;                 &lt;a class="btn btn-light"                    href="{{ content.field_boton_diapositiva[0]['#url'] }}" role="button"                    title="{{ content.field_boton_diapositiva|render|striptags|trim }}"&gt;                   {{ content.field_boton_diapositiva[0]['#title'] }}                 &lt;/a&gt;               &lt;/div&gt;             {% endif %}           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     {% endblock %}   &lt;/div&gt; {% endblock paragraph %}<div attributes.addclass=""></div></pre> </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"><p>     Guaradaremos los cambios y deberíamos ver algo parecido a la siguiente pantalla, en caso contrario, puede que necesites borrar la caché de Drupal, o corregir el nombre de alguno de tus campos en la plantilla.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/primer-cambio-diapositiva.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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>   Aplicando CSS a la plantilla para las Diapositivas</h2> <p>     En esta parte, aplicaremos los primeros cambios para modificar el aspecto de nuestras diapositivas, será desición tuya si colocas los estilos dentro de la misma plantilla, entre las etiquetas &lt;style&gt;&lt;/style&gt;, lo cual haría de esta plantilla una especie de Compente, como si trabajaras con un proyecto Headless o si lo prefieres, puedes añadirlo a tu hoja de estilos global.</p> <pre> &lt;style&gt; /* Telefonos en vertical (portrait phones, less than 576px) */ @media (max-width: 575.98px) { #home-heading { margin-top: -166px; } header#header { position: absolute; z-index: 99; width: 100%; } #navbar-main { background: none; } #navbar-main .container { max-width: 90%; } .navbar-brand img, span.navbar-toggler-icon { filter: invert(1); } button.navbar-toggler.collapsed { border: none; } .paragraph--type--diapositiva { height: 800px; margin-bottom: 40px; } h1.label-slide { font-size: 40px; color: #fff; line-height: 47px; max-width: 243px; margin: auto; } #env-explicacion { font-size: 18px; max-width: 314px; } } /* Ordenadores y Laptops (desktops, 992px and up) */ @media (min-width: 992px) { .paragraph--type--diapositiva { height: 800px; } h1.label-slide { font-size: 50px; color: #fff; line-height: 47px; margin-bottom: 25px; } #env-explicacion { font-size: 14px; } .paragraph--type--diapositiva a.btn.btn-light { margin-top: 54px; } .owl-dots { position: relative; top: -254px; } } .paragraph--type--diapositiva { background-size: cover; background-repeat: no-repeat; } #home-content-box { width: 100%; height: 100%; display: table; background: rgba(0,0,0,0.6); } #home-content-box-inner { display: table-cell; vertical-align: middle; text-align: center; } #env-explicacion { font-size: 21px; margin: auto; color: #ccc; line-height: 29px; max-width: 90%; } #env-explicacion p { max-width: 806px; margin: 20px auto; } .paragraph--type--diapositiva a.btn.btn-light { border-radius: 25px; padding: 10px 30px; text-decoration: none; background: #ededed; color: #000; } &lt;/style&gt;</pre> <pre>  </pre> </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>   Pado 5 - Añadiendo las librerías de OWL Carousel</h2> <p>     Como hemos prometido, nuestro carrusel no necesitará ningún módulo contribuido de Drupal para su funcionamiento, esto permitirá que podamos emplearlo en mútiples proyectos, sin correr riesgos de compatiblidad.</p> <p>     Así que utilizaremos los archivos descargados desde la página oficial de <a href="https://owlcarousel2.github.io/OwlCarousel2/">Owl Carousel 2</a>, que nos permitirán obtener un carrusel, muy fácil de configurar y personalizar, gracias a varias de las opciones con las que cuenta.</p> <p>     Tienes la demostración y el código necesario en el apartado Demos, dentro de su misma web.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/owl2.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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"><p>     Por ahora, necesitaremos descarar el archivo ubicado en la página oficial, en el botón <a href="https://github.com/OwlCarousel2/OwlCarousel2/archive/2.3.4.zip">Download</a> y a continuación, añadiremos, dentro de las carpetas js y css, de nuestro tema personalizado, los siguientes archivos:</p> <p>- <strong>css /</strong> owl.carousel.min.css</p> <p>- <strong>css /</strong> owl.theme.default.min.css</p> <p>-<strong> js/ </strong>owl.carousel.min.js</p> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/librerias.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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"><p>     Cuando hayamos colocado cada uno de los archivos, dentro de sus correspondientes carpetas css y js, en nuestro tema personalizado, añadiremos la ruta, dentro de nuestro archivo libraries, para poder ejecutar el código sobre los elementos de nuestro carrusel.</p> <p><strong>olivero_subtheme.libraries.yml</strong></p> <pre> global-styling:   version: 1.x   css:     theme:       css/style.css: {}       css/owl-carousel/owl.carousel.min.css: { }       css/owl-carousel/owl.theme.default.min.css: { }   js:     js/global.js: {}     js/owl-carousel/owl.carousel.min.js: { }   dependencies:     - core/jquery </pre> <p> </p> </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>   Añadiendo el identificador para nuestro carrusel</h2> <p>     Para que nuestro carrusel funcione con OWL Carousel 2, tendremos que añadir dos elementos fundamentales, el identificador, con el cual podremos aplicar todas las funcionalidades javascript y la clase <em><strong>owl-carousel owl-theme</strong></em>, que permitirá conectar el contenido con el carrusel.</p> <p>     En este caso, añadiremos una plantilla más, del tipo campo, porque así nos aseguraremos de que esté justo encima de las diapositivas.</p> <p>     Como estamos utilizando Olivero, copiaremos la plantilla <strong>field.html.twig</strong>, ubicada en su carpeta Templates y la renombraremos, colocándola dentro de nuestro tema personalizado.</p> <p>     Luego añadiremos el identificador y la clase, en la primera línea, tal y como te muestro en la siguiente imagen.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/clase%20e%20identificador.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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>   Paso 6 - Añadiendo el código javascript</h2> <p>     Ya casi hemos terminado todo el trabajo, el último paso será llamar a nuestros elementos, utilizando el identificador que acabamos de agregar y aplicándole los ajustes necesarios de Javascript, que harán funcionar nuestro carrusel.</p> <p>     En esta parte, añadiremos el código que falta, dentro del archivo <strong>global.js.</strong></p> <pre> /**  * @file  * Global utilities.  *  */ (function (Drupal) {   Drupal.behaviors.drupalAdicto = {     attach: function (context, settings) {       $("#slider-home").owlCarousel({         autoplay: true,         loop: true,         autoplayHoverPause: true,         nav: false,         center: true,         margin: 0,         responsive: {           0:{             items: 1,             dots: true,           },           600:{             items: 1,             dots: true,           },           1000:{             items: 1,             dots: true,           }         }       });     }   }; })(Drupal); </pre> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-imagen paragraph--view-mode--default"> <div class="field field--name-field-imagen-contenido field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-full-width-column"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img width="850" src="/sites/default/files/imagenes/ambos.svg" alt="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Slider multiversion Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> </article> </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, 13/04/2023 - 11:14</span> Thu, 13 Apr 2023 09:14:03 +0000 webmaster 418 at https://drupaladicto.com Slick paragraphs https://drupaladicto.com/curso/slick-paragraphs <span class="field field--name-title field--type-string field--label-hidden">Slick paragraphs</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">Sáb, 04/03/2023 - 10:36</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-1056 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1056 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1056 .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-1056"> <section id="video-only-1056" 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-746-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-746-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-746-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/C_Ck_k01U64&amp;max_width=0&amp;max_height=0&amp;hash=WF3Q_eaXHmQG_aINWa7BYpTVluDmINjUBuNldMhDaSk" 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-746-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-1123" 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>  En Drupal siempre contarás con varias opciones para crear tus contenidos o ampliar las funcionalidades de tu proyecto, a partir de la versión 8, con la aparición de Paragraphs, se crearon una gran cantidad de nuevas posibilidades para que esto fuera posible.</p> <p>Una de estas es la oportunidad de crear un Carrusel con más opciones de personalización que en el pasado, por esta razón te voy a contar cómo configurarlo para que puedas añadirlo a tu 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 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/slick_paragraphs">Página oficial</a> del módulo 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 Slick Paragraphs, 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 slick_paragraphs -y"</strong>, que sirve para activar cualquier módulos y todas sus dependencias, o desde la interfaz de Drupal.    </p> <p> </p> <h3><strong>Cómo crear un carrusel de imágenes:</strong></h3> <p><strong>1.- Crear un contenido Tipo Paragrphs:</strong></p> <p><strong>     </strong>Cómo una de las dependencias del <a href="https://www.drupal.org/project/slick_paragraphs" target="_blank">Slick Paragraphs</a> es el módulo que revolucionó Drupal, llamado "<a href="https://www.drupal.org/project/paragraphs" target="_blank">Paragraphs</a>" y ya lo tenemos activado, ahora podremos crear una la estructura correspondiente a una diapositiva con todos los elementos que deseamos mostrar en el carrusel, para ello accederemos a la siguiente url y  añadiremos el tipo "diapositiva".</p> <p>     <strong>/admin/structure/paragraphs_type/add</strong></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-fd394281348" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="73ec69bf-02ef-41e5-91bf-17ef5e6b7917" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/crear_paragraphs_diapositiva.png?itok=tlJSH0IF" 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> <p><strong>2.- Añadir los campos de la diapositiva:</strong></p> <p>Si lo que tenemos pensado es un carrusel donde mostrar por ejemplo las ofertas de temporada, lo lógico sería que cada Diapositiva tenga al menos tres campos: Imagen de la campaña, el nombre de la campaña y algún texto adicional para describir o tal ves un enlace que nos lleve a la página de productos o al detalle de la campaña; por lo tanto, lo que necesitaremos en este momento es añadir tantos campos como vayamos a necesitar.</p> <p><strong>/admin/structure/paragraphs_type/slide/fields</strong></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-4ae442433a5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="faa55fa8-5f6e-44ba-9012-40ee7f5de480" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/campos_diapositiva.png?itok=hnXHSxN1" 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> <p>3.- Creando el Carrusel:</p> <p>     Ya tenemos preparada nuestra diapositiva con todos los elementos que vamos a mostrar cada vez que se mueva el carrusel, por lo tanto, el siguiente paso que nos queda es crear nuestro "Carrusel", como la idea es que nuestro carrusel se muestre en la página principal, crearemos un Bloque personalizado</p> <p><strong>/admin/structure/block/block-content/types</strong></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-639c4e8382f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="a0c3aaf1-4e6a-4d5f-a981-5c4a44f5ed89" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/bloque_carrusel_home.png?itok=aDBi-vSF" 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> <p>Con un campo tipo "Paragraphs" al que llamaremos "carrusel_home", y dentro de este campos, vamos a permitir que se añadan tantas diapositivas como haga falta.</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-c95f6db6b16" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="5a230bb5-6be6-437d-ab9d-5cd7e7e70832" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/campo_paragraphs_ilimitado.png?itok=OafslGeB" 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>Lo siguiente será seleccionar el otro tipo paragraphs al que llamamos "diapositiva" para completar el proceso de nuestro carrusel.</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-1892a4d0025" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e9e1426a-ea6f-46a3-9807-dbbe049d7212" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/seleccion_diapositivas.png?itok=tFqfTdVz" 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>Ahora ya podrás crear tu carrusel con todas las diapositivas que necesites, también podrás realizar otras configuraciones del carrusel, desde la pestaña de visualización del campo:</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-74c31d6dd1f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="55634a4d-ffa2-4392-b8b9-d4d220622181" decoding="async" loading="lazy" typeof="foaf:Image" alt="slick carousel drupal - www.drupaladicto.org Formacion especializada en drupal y symfony - roles permisos y usuarios" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/configuraciones_extras_blazy.png?itok=m-EUKHEx" 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> </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/carrusel" hreflang="es">carrusel</a></div> <div class="field__item"><a href="/categoria/carousel" hreflang="es">carousel</a></div> <div class="field__item"><a href="/categoria/paragraphs" hreflang="es">paragraphs</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/slideshow" hreflang="es">slideshow</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/imagen" hreflang="es">imagen</a></div> <div class="field__item"><a href="/categoria/imagenes" hreflang="es">imágenes</a></div> <div class="field__item"><a href="/categoria/media" hreflang="es">media</a></div> <div class="field__item"><a href="/categoria/sitebuilder" hreflang="es">sitebuilder</a></div> </div> </div> Sat, 04 Mar 2023 09:36:21 +0000 webmaster 145 at https://drupaladicto.com Crear Bootstrap Slideshow en Twig con Paragraphs https://drupaladicto.com/snippet/crear-bootstrap-slideshow-en-twig-con-paragraphs <span class="field field--name-title field--type-string field--label-hidden">Crear Bootstrap Slideshow en Twig con Paragraphs</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>En algunos casos, nuestro cliente puede querer controlar las proporciones de la imagen que se verán en un carrusel, aqui te dejo el código con el que podrías solucionarlo.</p> </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é, 01/03/2023 - 08:54</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><ol><li>Instalamos el módulo <a href="https://www.drupal.org/project/image_widget_crop">ImageWidgetCrop</a> que nos permitirá crear varios estilos para una misma imagen<br />  </li> <li>Creamos un campo imagen que permita añadir múltiples elementos<br />  </li> <li>Creamos los estilos y los Crop Styles para cada caso y los configuramos.<br />  </li> <li>Asignamos en el formulario del tipo de contenido, en el campo de las imágenes los estilos para que estén disponibles<br />  </li> <li>Ya tendremos bootstrap theme instalado y nuestro subtema creado<br />  </li> <li>En la plantilla correspondiente a nuestro tipo de contenido añadimos el código que está debajo</li> </ol></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> {# Slider#} &lt;div class="contenedor-slider"&gt; {% if content.field_slideshow_de_fondo|render %} &lt;div id="myCarousel" class="carousel slide" data-ride="carousel"&gt; &lt;!-- Indicators --&gt; &lt;ol class="carousel-indicators"&gt; {% for key, item in content.field_slideshow_de_fondo if key|first != '#' %} &lt;li class="{% if loop.first %}active{% endif %}" data-slide-to="{{ key }}" data-target="#myCarousel"&gt;&lt;/li&gt; //Agrega el ACTIVE al primer elemento {% endfor %} &lt;/ol&gt; &lt;!-- Wrapper for slides --&gt; &lt;div class="carousel-inner"&gt; {% for key, item in content.field_slideshow_de_fondo['#items'] if key|first != '#' %} &lt;div id="{{ key + 1 }}" class="paragraph--layout-slideshow__slide-{{ key + 1 }} item carousel-item{% if loop.first %} active{% endif %}"&gt; &lt;picture&gt; &lt;source media="(max-width: 414px)" srcset="{{ file_url(item.entity.uri.value|image_style('estilo_movil')) }}"&gt; // Nos permite acceder a la url de la imagen con el estilo aplicado &lt;source media="(max-width: 768px)" srcset="{{ file_url(item.entity.uri.value|image_style('estilo_tablet')) }}"&gt; &lt;source media="(max-width: 1023px)" srcset="{{ file_url(item.entity.uri.value|image_style('estilo_escritorio')) }}"&gt; &lt;source srcset="{{ file_url(item.entity.uri.value|image_style('estilo_escritorio')) }}"&gt; &lt;img src="{{ file_url(item.entity.uri.value|image_style('estilo_escritorio')) }}" alt=""&gt; //Selecciona la imagen correcta según el dispositivo &lt;/picture&gt; &lt;/div&gt; {% endfor %} &lt;/div&gt; &lt;/div&gt; {% endif %} &lt;/div&gt;</pre> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/imagenes/snippets/snippet-pager_62.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet 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/image" hreflang="es">image</a></div> <div class="field__item"><a href="/categoria/imagen" hreflang="es">imagen</a></div> <div class="field__item"><a href="/categoria/carousel" hreflang="es">carousel</a></div> <div class="field__item"><a href="/categoria/carrusel" hreflang="es">carrusel</a></div> <div class="field__item"><a href="/categoria/crop" hreflang="es">crop</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> </article> </div> </div> Wed, 01 Mar 2023 07:54:05 +0000 webmaster 87 at https://drupaladicto.com