templates/main/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Les trésors de Luna - Accueil{% endblock %}
  3. {% block body %}
  4. <div class="cookies-warning hide">
  5.   <p>
  6.     Utilisation des cookies<br>
  7.     Ce site utilise des cookies essentiels pour le bon fonctionnement de certaines fonctionnalités, comme la gestion de la session utilisateur. En poursuivant votre navigation, vous acceptez leur utilisation.
  8.     <br>
  9.     Pour plus d'informations, consultez notre 
  10.     <a href="{{ path('politique_confidentialite') }}" target="_blank">Politique de Confidentialité</a>.
  11.   </p>
  12.   <button class="cookies-accept" id="cookies-accept">J'accepte</button>
  13. </div>
  14. <section id="banner" style="background: #F9F3EC;">
  15.   <div class="swiper main-swiper">
  16.     <div class="swiper-wrapper">
  17.       {#
  18.       <div id="slide-start" class="swiper-slide col-md-5">
  19.         <div class="container">
  20.           <div class="img-wrapper col-md-5">
  21.             <img id="logo-tresors-luna" src="{{asset('images/logo_2.png')}}">
  22.           </div>
  23.   
  24.           <div class="content-wrapper p-5 mb-5">
  25.   
  26.             <h2 class="banner-title display-1 fw-normal">Les meilleurs affaires pour <span class="text-primary">
  27.                 vous</span>
  28.             </h2>
  29.             <a href="{{path('products_filter')}}" class="btn btn-outline-dark btn-lg text-uppercase fs-6 rounded-1">
  30.               La boutique
  31.               <svg width="24" height="24" viewBox="0 0 24 24" class="mb-1">
  32.                 <use xlink:href="#arrow-right"></use>
  33.               </svg></a>
  34.           </div>
  35.         </div>
  36.         
  37.       </div>
  38.       #}
  39.       <div id="slide-0" class="swiper-slide">
  40.         <img src="{{asset('images/index/carousel/banniere_ETE_1.jpg')}}" alt="">
  41.       </div>
  42.       <div id="slide-1" class="swiper-slide">
  43.         <img src="{{asset('images/index/carousel/banniere_ETE_2.jpg')}}" alt="">
  44.       </div>
  45.       <div id="slide-2" class="swiper-slide">
  46.         <img src="{{asset('images/index/carousel/banniere_ETE_3.jpg')}}" alt="">
  47.       </div>
  48.         
  49.     </div>
  50.      <div class="swiper-pagination"></div>
  51.   </div>
  52. </section>
  53. {#
  54. <section id="banner" >
  55.   <div class="slider">
  56.     <div class="slides">
  57.       
  58.       <img src="{{asset('images/logo_2.png')}}">
  59.       
  60.       <div class="">
  61.         <h2 class="banner-title">Les meilleurs affaires pour <span class="text-primary">
  62.             vous</span>
  63.         </h2>
  64.         <a href="{{path('products_filter')}}" class="btn btn-outline-dark btn-lg text-uppercase fs-6 rounded-1">
  65.           La boutique
  66.           <svg width="24" height="24" viewBox="0 0 24 24" class="mb-1">
  67.             <use xlink:href="#arrow-right"></use>
  68.           </svg></a>
  69.       </div>        
  70.     </div>
  71.     
  72.     <div class="slides">
  73.       <img src="{{asset('images/logo_2.png')}}">
  74.       
  75.       <div class="">
  76.         <h2 class="banner-title">Les meilleurs affaires pour <span class="text-primary">
  77.             vous</span>
  78.         </h2>
  79.         <a href="{{path('products_filter')}}" class="btn btn-outline-dark btn-lg text-uppercase fs-6 rounded-1">
  80.           La boutique
  81.           <svg width="24" height="24" viewBox="0 0 24 24" class="mb-1">
  82.             <use xlink:href="#arrow-right"></use>
  83.           </svg></a>
  84.       </div>    
  85.     </div>
  86.     
  87.   </div>
  88. </section>
  89. #}
  90. {#
  91. <section id="banner" style="background: #F9F3EC; position: relative;">
  92.     <div class="container">
  93.       <div class="swiper main-swiper">
  94.         <div class="swiper-wrapper">
  95.           <div class="swiper-slide py-5">
  96.             <div class="row banner-content align-items-center">
  97.               <div class="img-wrapper col-md-5">
  98.                 <img src="{{asset('images/logo_2.png')}}" class="img-fluid">
  99.               </div>
  100.               <div class="content-wrapper col-md-7 p-5 mb-5">
  101.                 <h2 class="banner-title display-1 fw-normal">Les meilleurs affaires pour <span class="text-primary">
  102.                     vous</span>
  103.                 </h2>
  104.                 <a href="{{path('products_filter')}}" class="btn btn-outline-dark btn-lg text-uppercase fs-6 rounded-1">
  105.                   La boutique
  106.                   <svg width="24" height="24" viewBox="0 0 24 24" class="mb-1">
  107.                     <use xlink:href="#arrow-right"></use>
  108.                   </svg></a>
  109.               </div>
  110.             </div>
  111.           </div>
  112.           <div class="swiper-slide py-5">
  113.             <div class="row banner-content align-items-center">
  114.               <img src="{{asset('images/index/carousel/banniere_ETE_1.jpg')}}" alt="">
  115.             </div>
  116.           </div>
  117.           <div class="swiper-slide py-5">
  118.             <div class="row banner-content align-items-center">
  119.               <img src="{{asset('images/index/carousel/banniere_ETE_2.jpg')}}" alt="">
  120.             </div>
  121.           </div>
  122.           <div class="swiper-slide py-5">
  123.             <div class="row banner-content align-items-center">
  124.               <img src="{{asset('images/index/carousel/banniere_ETE_3.jpg')}}" alt="">
  125.             </div>
  126.           </div>
  127.         </div>
  128.         <div class="swiper-pagination mb-5"></div>
  129.       </div>
  130.     </div>
  131. </section>
  132. #}
  133. <section id="categories">
  134.     <div class="container my-3 py-5">
  135.       <div class="row my-5">
  136.         <div class="col text-center">
  137.           <a href="#" class="categories-item">
  138.             <iconify-icon class="category-icon" icon="ph:sketch-logo"></iconify-icon>
  139.             <h5>Bijoux</h5>
  140.           </a>
  141.         </div>
  142.         <div class="col text-center">
  143.           <a href="#" class="categories-item">
  144.             <iconify-icon class="category-icon" icon="material-symbols:floor-lamp-outline"></iconify-icon>
  145.             <h5>Décorations</h5>
  146.           </a>
  147.         </div>
  148.         <div class="col text-center">
  149.           <a href="#" class="categories-item">
  150.             <iconify-icon class="category-icon" icon="material-symbols:apparel-outline"></iconify-icon>
  151.             <h5>Vêtements</h5>
  152.           </a>
  153.         </div>
  154.         <div class="col text-center">
  155.           <a href="{{path('products_filter', {'category': 2})}}" class="categories-item">
  156.             <iconify-icon class="category-icon" icon="material-symbols:coffee-outline"></iconify-icon>
  157.             <h5>Mugs</h5>
  158.           </a>
  159.         </div>
  160.         {#
  161.         <div class="col text-center">
  162.           <a href="#" class="categories-item">
  163.             <iconify-icon class="category-icon" icon="ph:cat"></iconify-icon>
  164.             <h5>Cat Shop</h5>
  165.           </a>
  166.         </div>
  167.         #}
  168.       </div>
  169.     </div>
  170. </section>
  171. {% if app.user and app.user.isVerified %}
  172.   
  173. {% endif %}
  174. {% if categories %}
  175.   {% for category in categories %}
  176.     {% if category.product is not empty and category.indexVisible is not same as(false) and category.indexVisible is not null %}
  177.     
  178.       <section id="{{category.name}}" class="my-5 overflow-hidden">
  179.         <div class="container pb-5">
  180.   
  181.           <div class="section-header d-md-flex justify-content-between align-items-center mb-3">
  182.             <h2 class="display-3 fw-normal">{{category.name}}</h2>
  183.             <div>
  184.               <a href="{{path('products_filter', {'category': category.id})}}" class="btn btn-outline-dark btn-lg text-uppercase fs-6 rounded-1">
  185.                 Voir plus
  186.                 <svg width="24" height="24" viewBox="0 0 24 24" class="mb-1">
  187.                   <use xlink:href="#arrow-right"></use>
  188.                 </svg></a>
  189.             </div>
  190.           </div>
  191.   
  192.           <div class="products-carousel swiper">
  193.             <div class="swiper-wrapper">
  194.   
  195.               {% for product in category.product|slice(0, 10) %}
  196.   
  197.                 <div class="swiper-slide">
  198.                   <div class="card position-relative">
  199.                     {% if is_granted("ROLE_ADMIN") %}
  200.                     <a class="product-image" href="{{path('admin_edit_product', {'id': product.id})}}">
  201.                       <img src="{{asset('uploads/product_images/' ~ product.mainImageLink)}}" class="img-fluid rounded-4" style="object-fit:cover;" alt="image">
  202.                     </a>
  203.                       {% else %}
  204.                       <a class="product-image" href="{{path('product', {'id': product.id})}}">
  205.                         <img src="{{asset('uploads/product_images/' ~ product.mainImageLink)}}" class="img-fluid rounded-4" style="object-fit:cover;" alt="image">
  206.                       </a>
  207.                     {% endif %}
  208.                     <div class="card-body p-0">
  209.                       <a href="{{path('product', {'id': product.id})}}">
  210.                         <h3 class="card-title pt-4 m-0">{{product.name}}</h3>
  211.                       </a>
  212.   
  213.                       <div class="card-text">
  214.     
  215.   
  216.                         <h3 class="secondary-font text-primary">{{product.price}}€</h3>
  217.                         
  218.                         {% if product.stock != 0 %}
  219.                           <div class="btn-cart-wrapper d-flex flex-wrap mt-3" >
  220.                             <a href="{{path('product', {'id': product.id})}}" class="btn-cart btn-outline-primary me-3 px-4 pt-3 pb-3">
  221.                               <h5 class="text-uppercase m-0">Ajouter au panier</h5>
  222.                             </a>
  223.                           </div>
  224.                         {% else %}
  225.                           <p class="alert-stock">Produit indisponible</p>
  226.                         {% endif %}
  227.   
  228.   
  229.                       </div>
  230.   
  231.                     </div>
  232.                   </div>
  233.                 </div>
  234.   
  235.               {% endfor %}
  236.             </div>
  237.             <div class="swiper-button-prev"></div>
  238.             <div class="swiper-button-next"></div>
  239.             <div class="swiper-pagination swiper-pagination-products mb-5"></div>
  240.           </div>
  241.           <!-- / products-carousel -->
  242.   
  243.   
  244.         </div>
  245.       </section>
  246.     {% endif %}
  247.     
  248.   {% endfor %}
  249.   {% else %}
  250.     
  251.     <div id="no_categories_message" class="container d-flex justify-content-center align-items-center">
  252.       <p class="m-3">Aucune catégories existante, veuillez en créer une ou plusieurs</p>
  253.     </div>
  254.   
  255. {% endif %}
  256. {% block javascripts %}
  257.   <script type="module" src="{{asset('js/classes/Cart.js')}}"></script>
  258.   <script type="module" src="{{asset('js/buying.js')}}"></script>
  259.   <script>
  260.     window.addEventListener('load', () => {
  261.       messageFlashHide()
  262.       cookiesAccept()
  263.       function cookiesAccept()
  264.       {
  265.         const container = document.querySelector('.cookies-warning')
  266.         const acceptButton = document.querySelector('.cookies-accept')
  267.         if (document.cookie.indexOf('cookies_accepted=true') !== -1)
  268.         {
  269.           container.classList.add('hide')
  270.         }
  271.         else
  272.         {
  273.           container.classList.remove('hide')
  274.         }
  275.         acceptButton.addEventListener('click', () => {
  276.           document.cookie = "cookies_accepted=true; path=/; max-age=" + 60 * 60 * 24 * 365;
  277.           container.classList.add('hide')
  278.         })
  279.       }
  280.       function messageFlashHide()
  281.       {
  282.         const messageFlash = document.querySelector('.alert')
  283.   
  284.         if (messageFlash)
  285.         {
  286.   
  287.           setTimeout(()=> {
  288.             messageFlash.style.transition = "opacity 1500ms ease-out"
  289.             messageFlash.style.opacity = "0"
  290.   
  291.             setTimeout(() =>  {
  292.                 messageFlash.remove()
  293.             }, 1500)
  294.           }, 1500)
  295.         }
  296.       }  
  297.     })
  298.   </script>
  299. {% endblock javascripts %}
  300. {% endblock %}