Volver

Slider Main (HIDROTECNO)

Nuestro componente de Slider Principal es una herramienta dinámica y atractiva diseñada para resaltar contenido de manera efectiva en tu sitio web de WordPress. Este componente te permite mostrar una serie de slides, cada uno con su propio contenido, de una manera elegante y moderna.

Características destacadas:

  1. Slide de Un Solo Elemento por Vista: Cada slide se presenta individualmente, maximizando la atención del usuario en el contenido presente en pantalla.
  2. Desplazamiento Automático: El slider se mueve automáticamente a través de los slides a intervalos regulares, ofreciendo una experiencia fluida y sin esfuerzo para los visitantes.
  3. Navegación Infinita: Una vez que se alcanza el último slide, el slider regresa automáticamente al primero, permitiendo una experiencia de navegación continua e ininterrumpida.

Nuestro Slider Principal es altamente personalizable y fácil de integrar en tu sitio web de WordPress. Ya sea que desees destacar productos, promociones, o contenido destacado, este componente proporciona una solución efectiva para captar la atención de tus usuarios de manera impactante.

Campos Personalizados

Slider Main

slider-main

Layout/Repeater

Image

slider-main__image

Content/Image

Text

slider-main__text

Basic/Text Area

CTA

slider-main__cta

Relational/Link

Archivos Usados

1.

slider-main.php

PHP

loops/

Loop

<?php
/*
/https://ddep6.cadintek.io/post_component/slider-main-variant-hidrotecno/
 */
$class_name = 'slider-main';
$class_card =  $class_name . '-card';
$main_slider = get_field($class_name);
if ($main_slider): ?>
    <section class="slider-main fade-in">
      <div class="js-slider">
        <?php
        while(have_rows($class_name)):the_row();
          get_template_part('cards/'.$class_card,NULL,[
            'class_card'=>$class_card,
            'class_name'=>$class_name,
          ]);
        endwhile;?>
      </div>
      <div class="carousel-arrows">
        <span class="js_gn_carousel__prev_arrow carousel-arrows__prev">
          <i class="carousel-arrows__arrow  arrow-left">←</i>
        </span>
        <span class="js_gn_carousel__next_arrow carousel-arrows__next">
          <i class="carousel-arrows__arrow arrow-right">→</i>
        </span>
      </div>
    </section>
  <?php endif ?>

 

2.

slider-main-card.php

PHP

cards/

Card

<?php
extract($args);
$image = get_sub_field($class_name.'__image');
$title = get_sub_field($class_name.'__title');
$text = get_sub_field($class_name.'__text');
$cta = get_sub_field($class_name.'__cta');
?>
<div class="<?php echo $class_card; ?> co-white">
    <div class="<?php echo $class_card ?>__imagen m-0">
        <figure>
            <img src="<?php echo esc_url($image['url']); ?>"
            alt="<?php echo esc_attr($image['alt']) ?>">
        </figure>
    </div>
    <div class="<?php echo $class_card ?>__text-wrapper">
        <div class="<?php echo $class_card ?>__text-content d-flex flex-column justify-content-center justify-content-lg-end align-items-start">
            <?php if ($title) : ?>
                <h2 class="<?php echo $class_card ?>__title mb-5">
                    <?php echo $title; ?>
                </h2>
            <?php endif;
                if($text):?>
                <p class="<?php echo $class_card ?>__paragraph title-2 mb-5">
                <?php echo $text; ?>
                </p>
            <?php endif ?>
            <div class="<?php echo $class_card ?>__cta d-flex flex-wrap">
                <?php if($cta):?>
                    <a class="<?php echo $class_card ?>__cta button-primary me-3" href="<?php echo esc_url($cta['url']);?>" target="<?php echo esc_attr($cta['target']);?>">
                        <?php echo esc_html($cta['title']); ?>
                    </a>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

 

3.

_slider-main.scss

SCSS

frontend/scss/theme/components/

Styles

.slider-main {
  height: auto;
  object-fit: cover;
  overflow: hidden;
  padding: 0;
  position: relative;

  .carousel-arrows {
    padding: 0 space(0.3);

    @include from(l){
      @include center('reset');
      padding:0 space(3.5);
      right: space(2.5);
      top: 80%;
      width: max-content;
    }

    @include from(xl){
      @include center('reset');
      right: space(2.5);
      top: 80%;
    }

    &__arrow {
      @include square(rem(35px));

      @include from(l){
        @include square(rem(50px));
        margin-left:space(1);
      }

      @include from(xl){
        @include center('reset');
        position: initial
      }
    }

    .arrow-left {
      @include imageBg("../img/icons/arrow_left.png");
    }

    .arrow-right {
      @include imageBg("../img/icons/arrow_right.png");
    }
  }
}

 

4.

_slider-main-card.scss

SCSS

frontend/scss/theme/card/

Styles

.slider-main-card {
  position: relative;

  &__imagen {
    padding-bottom: 0;
    figure {
      @include fluid-aspect(25 35, "img");
      @include from(s) {
        @include fluid-aspect(1 1, "img");
      }
      @include from(m) {
        @include fluid-aspect(10 6, "img");
      }
      @include from(l) {
        @include fluid-aspect(20 8, "img");
      }
      @include from(xl) {
        width: 100%;
        max-height: 600px;
      }
    }
  }

  &__text-wrapper {
    height: 100%;
    position: absolute;
    top: 0;
    width: 100%;
  }
  &__text-content {
    @include center("vertical");
    height: 100%;
    padding: space(2);
    width: 100%;
    @include from(m){
      margin: 0 0 0 space(2);
      max-width: 65%;
      width: initial;
    }
    @include from(l) {
      max-width: 45%;
      bottom: space(1.5);
      padding-bottom: space(3);
    }
  }
  &__paragraph {
    font-weight: 400;
  }

}

 

5.

slider-main.js

JavaScript

frontend/js/components/

Logic Frontend

import { GnCarousel } from "../libraries/slick";

const SELECTORS = {
  component: ".js-slider",
};

const sliderInstance = [...document.querySelectorAll(SELECTORS.component)];

if (sliderInstance) {
  const OPTIONS = {
    arrows: true,
    autoplay: true,
    autoplaySpeed: 5000,
    dots: false,
    infinite: true,
    slidesToShow: 1,
    slidesToScroll: 1,
  };

  sliderInstance.forEach((slider) => {
    const parent = slider.parentElement;
    const slickInstance = new GnCarousel(slider, OPTIONS, parent);

    slickInstance.initCarousel();
  });
}

 

Anexos

Avatar

Autor

Elan Francisco P. Asprilla
Desarrollador Frontend

Artículos relacionados

Class Name en WordPress.

Con el fin de darle orden y tener más facilidad...

Bloque básico (Sanitex)

Un bloque básico contiene un título y un...

Banner Main (Hidrotecno)

El componente “Banner Principal” es...

Alias de git

Hay forma de acortar los comandos de git, para...