templates/front/home.html.twig line 1

Open in your IDE?
  1. {% extends 'front/base.html.twig' %}
  2. {% block meta %}
  3.     {{ parent() }}
  4. {% endblock %}
  5. {% block stylesheets %}
  6.     {{ parent() }}
  7.     <style>
  8.         .see-more-link {
  9.             font-size: 0.875rem;
  10.             color: #222121;
  11.             border: 1px solid #222121;
  12.             border-radius: 20px;
  13.             padding: 6px 12px;
  14.             transition: all 0.3s ease-in-out;
  15.         }
  16.         .see-more-link:hover {
  17.             background-color: #222121;
  18.             color: #fff;
  19.         }
  20.     </style>
  21. {% endblock %}
  22. {% block body %}
  23. <main class="main pt-4 pb-5" style="background-color: #ffffff; color: #222121;">
  24.     {% if sliders %}
  25.         <div class="container">
  26.             <section class="custom-slider-section">
  27.                 
  28.                 <div class="custom-slider-wrapper">
  29.                     {% for slider in sliders %}
  30.                     <div class="custom-slide" style="background-image: url('{{ asset(slider.image) }}');">
  31.                        
  32.                             <div class="slide-content">
  33.                                 {% if slider.title %}
  34.                                     <h2 class="slide-title">{{ slider.title }}</h2>
  35.                                 {% endif %}
  36.                                 {% if slider.description %}
  37.                                     <div class="slide-description">{{ slider.description|raw }}</div>
  38.                                 {% endif %}    
  39.                             </div>
  40.                             {% if slider.description %}
  41.                                 <a href="{{ slider.url }}" ></a>
  42.                             {% endif %}
  43.                        
  44.                     </div>
  45.                     {% endfor %}
  46.                 </div>
  47.                 <button class="slider-arrow left">&#10094;</button>
  48.                 <button class="slider-arrow right">&#10095;</button>
  49.             </section>
  50.         </div>
  51.     {% endif %}
  52.     
  53.     
  54.         
  55.     <div id="app">
  56.         <section v-if="categories.length" v-for="(entry, index) in categories" class="pt-5 mb-5 border-top">
  57.             <div class="container">
  58.                 <div class="d-flex justify-content-between align-items-end mb-4 mt-3 flex-wrap gap-3">
  59.                     <h2 class="section-title d-flex align-items-center mb-0">
  60.                         <i v-if="entry.category.name.includes('Robe')" class="me-2 bi bi-person-lines-fill"></i>
  61.                         <i v-else-if="entry.category.name.includes('Jean')" class="me-2 bi bi-pants"></i>
  62.                         <i v-else-if="entry.category.name.includes('Veste')" class="me-2 bi bi-journal"></i>
  63.                         <i v-else class="me-2 bi bi-bag"></i>
  64.                         ${ entry.category.name }
  65.                     </h2>
  66.                     <a href="#&" class="see-more-link text-decoration-none d-flex align-items-center fw-medium px-3 py-1 rounded-pill" @click="openCategory(entry.category.id, entry.category.name)">
  67.                         Voir plus <i class="fi-rs-angle-double-small-right ms-1"></i>
  68.                     </a>
  69.                 </div>
  70.                 <div class="row g-4">
  71.                     <div class="col-6 col-md-6 col-lg-6" v-for="prod in entry.products.slice(0, 6)" :key="prod.id">
  72.                         
  73.                         <div class="card h-100 border-0">
  74.                             <div class="product-img-container" @click="openProduct(prod.id, prod.name)">
  75.                                 <div class="badges-wrapper">
  76.                                     <span v-if="!prod.stock" class="badge badge-stockout">Rupture</span>
  77.                                     <span v-if="prod.isNew" class="badge badge-new">Nouveau</span>
  78.                                     <span v-if="prod.promo && prod.promo.isValid" class="badge badge-promo">
  79.                                         ${ prod.promo.discountType === 'amount' 
  80.                                             ? '-' + prod.promo.discountValue.toFixed(3) + ' TND' 
  81.                                             : '-' + prod.promo.discountValue + '%' }
  82.                                     </span>
  83.                                 </div>
  84.                                 <img :src="'images/300-400/' + prod.image" :alt="prod.name" class="img-fluid product-img-fixed">
  85.                             </div>
  86.                             <div class="card-body p-2 d-flex flex-column">
  87.                                 <h6 class="card-title">
  88.                                     <a href="#&" class="text-decoration-none" @click="openProduct(prod.id, prod.name)">
  89.                                         ${ prod.name }
  90.                                     </a>
  91.                                 </h6>
  92.                                 <div class="product-price mb-2">
  93.                                     <span v-if="!prod.promo || (prod.promo && !prod.promo.isValid)">
  94.                                         ${ prod.priceTTC.toFixed(3) } TND
  95.                                     </span>
  96.                                     <span v-else>
  97.                                         <strong class="old-price">
  98.                                             ${ prod.promo.discountType === 'amount' 
  99.                                                 ? (prod.priceTTC - prod.promo.discountValue).toFixed(3) 
  100.                                                 : (prod.priceTTC - (prod.priceTTC * prod.promo.discountValue / 100)).toFixed(3) } TND
  101.                                         </strong>
  102.                                         <del class="ms-1">${ prod.priceTTC.toFixed(3) } TND</del>
  103.                                     </span>
  104.                                 </div>
  105.                                 <button class="btn btn-sm mt-auto" @click="getProduit(prod.id)" :disabled="!prod.stock">
  106.                                     <i class="fi-rs-shopping-bag-add me-1"></i> Ajouter
  107.                                 </button>
  108.                             </div>
  109.                         </div>
  110.                     </div>
  111.                 </div>
  112.             </div>
  113.         </section>
  114.     </div>
  115.         
  116.     
  117.         
  118.           
  119. </main>
  120. {% endblock %}
  121. {% block javascripts %}
  122.     {{ parent() }}
  123.     
  124.       
  125.     <script src="{{ asset('front/assets/scripts/home/home.js') }}"></script>
  126.     <script>
  127.         
  128.         $(document).ready(function () {
  129.             $("#preloader-active-loading").hide();
  130.         });
  131.        
  132.         document.addEventListener('DOMContentLoaded', function () {
  133.             const wrapper = document.querySelector('.custom-slider-wrapper');
  134.             const slides = document.querySelectorAll('.custom-slide');
  135.             const totalSlides = slides.length;
  136.             let currentIndex = 0;
  137.         
  138.             // Définir la largeur dynamique
  139.             wrapper.style.width = `${100 * totalSlides}%`;
  140.             slides.forEach(slide => {
  141.               slide.style.flex = `0 0 ${100 / totalSlides}%`;
  142.             });
  143.         
  144.             function showSlide(index) {
  145.               wrapper.style.transform = `translateX(-${index * (100 / totalSlides)}%)`;
  146.             }
  147.         
  148.             document.querySelector('.slider-arrow.left').addEventListener('click', () => {
  149.               currentIndex = (currentIndex - 1 + totalSlides) % totalSlides;
  150.               showSlide(currentIndex);
  151.             });
  152.         
  153.             document.querySelector('.slider-arrow.right').addEventListener('click', () => {
  154.               currentIndex = (currentIndex + 1) % totalSlides;
  155.               showSlide(currentIndex);
  156.             });
  157.         
  158.             showSlide(currentIndex);
  159.             
  160.           });
  161.                 
  162.                 
  163.          
  164.                 
  165.     </script>
  166.       
  167.       
  168. {% endblock %}