templates/default/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Otropik — Agence de voyage en Guadeloupe & dans le monde{% endblock %}
  3. {% block body %}
  4. {# -----------------------------
  5.    HERO avec fond + recherche
  6. ------------------------------ #}
  7. <section class="section-hero position-relative">
  8.   <picture>
  9.     {# sources webp/jpg si dispo #}
  10.     <img src="{{ asset('img/3004.jpg') }}" alt="Plage paradisiaque en Guadeloupe" class="hero-bg w-100 h-100">
  11.   </picture>
  12.   <div class="hero-overlay container py-5 text-center text-white">
  13.     <img src="{{ asset('img/otropik-logo.png') }}" alt="Otropik" class="mb-3" style="max-width: 240px; height: auto;">
  14.     <p class="lead fw-semibold text-shadow-sm">N&#39;imaginez plus vos vacances, vivez-les !</p>
  15.     <form class="d-flex justify-content-center mt-4" action="{#{ path('app_sejours') }#}" method="get" role="search" aria-label="Recherche de séjours">
  16.       <div class="search-pill bg-white rounded-pill shadow-lg d-flex align-items-center overflow-hidden w-100" style="max-width:760px;">
  17.         <input class="form-control border-0 px-4 py-3 flex-grow-1" type="search" name="q" placeholder="Où partez-vous ? (ex: Guadeloupe, New York, croisière…)" aria-label="Rechercher">
  18.         <button class="btn btn-primary rounded-0 px-4 py-3" type="submit">Rechercher</button>
  19.       </div>
  20.     </form>
  21.     <div class="d-flex gap-2 justify-content-center mt-3 flex-wrap">
  22.       <a href="{{ path('o.circuit') }}" class="btn btn-outline-light btn-sm rounded-pill">O&#39; Circuit</a>
  23.       <a href="{{ path('o.escapade') }}" class="btn btn-outline-light btn-sm rounded-pill">O&#39; Escapade</a>
  24.       <a href="{{ path('o.roadtrip') }}" class="btn btn-outline-light btn-sm rounded-pill">O&#39; RoadTrip</a>
  25.        <a href="{{ path('o.croisiere') }}" class="btn btn-outline-light btn-sm rounded-pill">O&#39; Croisière</a>
  26.     </div>
  27.   </div>
  28. </section>
  29. {# -----------------------------
  30.    Offres du moment + chips
  31. ------------------------------ #}
  32. <section class="py-5 bg-white">
  33.   <div class="container">
  34.     <header class="d-flex flex-wrap align-items-center justify-content-between gap-3 mb-3">
  35.       <div>
  36.         <h2 class="h3 text-success mb-1 fw-bold">Nos O&#39;ffres du moment</h2>
  37.         <p class="text-muted mb-0">Découvrez nos dernières expériences en immersion !</p>
  38.       </div>
  39.      <div class="d-flex gap-2 flex-wrap">
  40.         <a href="{{ path('o.circuit') }}" class="chip">O&#39; Circuit</a>
  41.         <a href="{{ path('o.escapade') }}" class="chip">O&#39; Escapade</a>
  42.         <a href="{{ path('o.roadtrip') }}" class="chip">O&#39; RoadTrip</a>
  43.       </div> 
  44.     </header>
  45.     <div class="row g-3 g-md-4">
  46.       {% for o in ourOffer %}
  47.       <div class="col-12 col-sm-6 col-lg-3">
  48.         <article class="card card-offer border-0 shadow-sm h-10s0 overflow-hidden rounded-4">
  49.           {% if o.type.id ==  1 %}
  50.           <a href="{{ path('o.escapade.destination',{slug:o.slug})}}" class="stretched-link text-decoration-none text-white">
  51.           {% elseif o.type.id == 2 %}
  52.           <a href="{{ path('o.circuit.destination',{slug:o.slug})}}" class="stretched-link text-decoration-none text-white">
  53.           {% elseif o.type.id == 3 %}
  54.           <a href="{{ path('o.roadtrip.destination',{slug:o.slug})}}" class="stretched-link text-decoration-none text-white">
  55.           {% endif %}
  56.             <div class="ratio ratio-4x5">
  57.               <img src="{{asset('img/' ~ o.file  ~ '/' ~ o.slug  ~ '/' ~ o.img)}}" alt="{{ o.title }}" class="object-fit-cover w-100 h-100">
  58.             </div>
  59.             <div class="card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4">
  60.               <span>{{ o.type.name }}</span>
  61.               <h3 class="h5 fw-bold text-white text-shadow-sm mb-3">{{ o.title }}</h3>
  62.               <div>
  63.                 <span class="btn btn-outline-light btn-sm rounded-pill">Découvrir</span>
  64.               </div>
  65.             </div>
  66.           </a>
  67.         </article>
  68.       </div>
  69.       {% endfor %}
  70.     </div>
  71.     <div class="section-divider mx-auto my-5"></div>
  72.   </div>
  73. </section>
  74. {# -----------------------------
  75.    O&#39;Selection (grille 4 cartes)
  76. ------------------------------ #}
  77. <section class="py-5 bg-white">
  78.   <div class="container">
  79.     <header class="mb-3">
  80.       <h2 class="h3 text-success mb-1 fw-bold">Nos O&#39;Sélections</h2>
  81.       <p class="text-muted mb-0">Découvrez nos dernières expériences en immersion !</p>
  82.     </header>
  83.     <div class="row g-3 g-md-4">
  84.  {% for offer in offEscapade %}
  85.     <div class="col-12 col-sm-6 col-lg-3">
  86.       <article class="card card-dest border-0 shadow-sm h-100 overflow-hidden rounded-4">
  87.       {% if offer.destination %}
  88.         <a href="{{ path('o.escapade.destination',{slug:offer.destination.slug}) }}" class="stretched-link text-decoration-none text-white">
  89.           <div class="ratio ratio-4x5">
  90.               <img src="{{asset('img/destination/' ~ offer.destination.slug  ~ '/' ~ offer.destination.img)}}" alt="{{ offer.title }}" class="object-fit-cover w-100 h-100">
  91.           </div>
  92.           <div class="card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4">
  93.              {# <span class="badge bg-light text-dark rounded-pill small mb-2">{{ c.badge }}</span> #}
  94.                 <h3 class="h5 fw-bold text-white text-shadow-sm mb-0">{{ offer.title }}</h3>
  95.               <div class="mt-3">
  96.                   <span class="btn btn-outline-light btn-sm rounded-pill">Découvrir</span>
  97.               </div>
  98.           </div>
  99.           </a>
  100.         {% endif %}
  101.         </article>
  102.       </div>
  103. {% endfor %}
  104.     <div class="section-divider mx-auto my-5"></div>
  105.   </div>
  106. </section>
  107. {# -----------------------------
  108.    Bandeau CTA parallax
  109. ------------------------------ #}
  110. <section class="cta-parallax text-white text-center">
  111.   {# bg en CSS via variable -> parallax #}
  112.   <div class="cta-parallax__bg" style="--bg:url('{{ asset('img/para.jpg') }}');"></div>
  113.   <div class="cta-parallax__overlay"></div>
  114.   <div class="container position-relative py-5 py-lg-7">
  115.     <h2 class="display-6 fw-bold text-shadow-sm mb-3">Une envie de voyage particulière ?</h2>
  116.     {# tags / chips #}
  117.     <ul class="cta-chips list-unstyled mx-auto mb-3" role="list" aria-label="Idées de voyages">
  118.       {% set tags = ['Randonnée','Road trip','Croisière','Immersion','Aventure','Découverte'] %}
  119.       {#{% for t in tags %}
  120.         <li class="chip chip--ghost">{{ t }}</li>
  121.       {% endfor %}#}
  122.       {% for c in continents %}
  123.         <a class="chip chip--ghost" href="{{path('o.continent',{slug:c.slug})}}"><li>{{ c.name }}</li></a> 
  124.       {% endfor %}
  125.     </ul>
  126.     <p class="opacity-90 mb-4">Construisez votre voyage avec un spécialiste</p>
  127.     <div class="d-flex gap-2 justify-content-center flex-wrap">
  128.       <a href="{{ path('o.contact') }}" class="btn btn-outline-light rounded-pill">Nous contacter</a>
  129.       <a href="{{ path('o.devis') }}" class="btn btn-primary rounded-pill">Demander un devis</a>
  130.     </div>
  131.   </div>
  132. </section>
  133. {# -----------------------------
  134.    Pourquoi voyager avec nous + O’Atouts
  135. ------------------------------ #}
  136. <section class="py-5 bg-white">
  137.   <div class="container">
  138.     {# --- Partie Pourquoi voyager avec nous --- #}
  139.     <div class="row align-items-center g-4">
  140.       <div class="col-12 col-lg-6">
  141.         <div id="carouselAtouts" class="carousel slide rounded-4 overflow-hidden shadow-sm" data-bs-ride="carousel">
  142.           <div class="carousel-inner">
  143.             <div class="carousel-item active">
  144.               <img src="{{ asset('img/photo-agence.jpg') }}" class="d-block w-100 object-fit-cover" alt="Voyage 1">
  145.             </div>
  146.             <div class="carousel-item">
  147.               <img src="{{ asset('img/photo-agence-0.jpg') }}" class="d-block w-100 object-fit-cover" alt="Voyage 2">
  148.             </div>
  149.           </div>
  150.           <button class="carousel-control-prev" type="button" data-bs-target="#carouselAtouts" data-bs-slide="prev">
  151.             <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  152.             <span class="visually-hidden">Précédent</span>
  153.           </button>
  154.           <button class="carousel-control-next" type="button" data-bs-target="#carouselAtouts" data-bs-slide="next">
  155.             <span class="carousel-control-next-icon" aria-hidden="true"></span>
  156.             <span class="visually-hidden">Suivant</span>
  157.           </button>
  158.         </div>
  159.       </div>
  160.       <div class="col-12 col-lg-6">
  161.         <h2 class="h3 txt-ot-green fw-bold mb-3">Pourquoi voyager avec O’TROPIK ?</h2>
  162.         <p class="text-muted">Chez O’TROPIK, nous croyons que chaque voyage doit être unique, conçu avec soin et adapté à vos envies.</p>
  163.         <p class="text-muted">Forte d’une solide expérience dans le tourisme et d’une véritable passion pour le voyage, notre agence vous accompagne dans la création de séjours qui vous ressemblent.</p>
  164.         <p class="text-muted">Notre priorité : que vos vacances soient inoubliables et que vous vous sentiez privilégiés à chaque étape, de la préparation à votre retour.</p>
  165.       {# <div class="mt-4">
  166.           <a href="{#{ path('app_agence') }}" class="btn btn-primary">En savoir plus</a>
  167.         </div> #} 
  168.       </div>
  169.     </div>
  170.     {# --- O’Atouts (sous la row principale) --- #}
  171.     <div class="row mt-5 mb-4">
  172.       <div class="col-12">
  173.         <h2 class="h3 fw-bold txt-ot-green">O’ Atouts ✨</h2>
  174.         <p class="text-muted mb-0">Parce que chaque détail compte, voici ce qui rend nos voyages uniques.</p>
  175.       </div>
  176.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  177.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  178.           🌍<br><strong class="txt-ot-green">Une offre diversifiée</strong><br>
  179.           <small class="text-muted">Autotours, séjours, circuits, croisières dans des destinations prisées, méconnues ou inattendues.</small>
  180.         </div>
  181.       </div>
  182.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  183.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  184.           🎓<br><strong class="txt-ot-green">Une expertise confirmée</strong><br>
  185.           <small class="text-muted">Plus de 15 ans d’expérience pour vous conseiller avec précision.</small>
  186.         </div>
  187.       </div>
  188.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  189.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  190.           👥<br><strong class="txt-ot-green">Des formules adaptées</strong><br>
  191.           <small class="text-muted">Voyages en groupe ou en individuel, pré-établis ou 100% sur mesure.</small>
  192.         </div>
  193.       </div>
  194.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  195.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  196.           💳<br><strong class="txt-ot-green">Facilités de paiement</strong><br>
  197.           <small class="text-muted">3xCB, chèques vacances, virements, paiements en 6 ou 10 fois.</small>
  198.         </div>
  199.       </div>
  200.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  201.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  202.           🛡️<br><strong class="txt-ot-green">Sécurité renforcée</strong><br>
  203.           <small class="text-muted">Assurances spéciales voyage pour partir sereinement.</small>
  204.         </div>
  205.       </div>
  206.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  207.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  208.           🤝<br><strong class="txt-ot-green">Accompagnement personnalisé</strong><br>
  209.           <small class="text-muted">Une équipe à votre écoute avant, pendant et après le séjour.</small>
  210.         </div>
  211.       </div>
  212.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  213.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  214.           ⭐<br><strong class="txt-ot-green">Programme fidélité</strong><br>
  215.           <small class="text-muted">Bientôt disponible pour récompenser votre confiance.</small>
  216.         </div>
  217.       </div>
  218.       <div class="col-12 col-md-6 col-lg-3 mb-3">
  219.         <div class="p-3 text-center h-100 border rounded-4 shadow-sm">
  220.           💼<br><strong class="txt-ot-green">Compte voyage</strong><br>
  221.           <small class="text-muted">Planifiez vos prochaines escapades en toute liberté.</small>
  222.         </div>
  223.       </div>
  224.     </div>
  225.     <div class="section-divider mx-auto my-5"></div>
  226.   </div>
  227. </section>
  228. {# -----------------------------
  229.    Call to action (bandeau photo)
  230. ------------------------------ 
  231. <section class="position-relative overflow-hidden">
  232.   <div class="ratio ratio-21x9">
  233.     <img src="{{ asset('img/cta-tourist.jpg') }}" alt="Famille en voyage" class="object-fit-cover w-100 h-100">
  234.   </div>
  235.   <div class="position-absolute top-0 start-0 w-100 h-100 d-flex align-items-center">
  236.     <div class="container">
  237.       <div class="row">
  238.         <div class="col-12 col-lg-6 text-white">
  239.           <h2 class="h4 mb-1">Call to action</h2>
  240.           <p class="mb-0 opacity-90">Accroche…</p>
  241.         </div>
  242.       </div>
  243.     </div>
  244.   </div>
  245. </section>. #}
  246. {# -----------------------------
  247.    Infos contact (3 colonnes)
  248. ------------------------------ #}
  249. <section class="py-5 bg-white">
  250.   <div class="container">
  251.     <div class="row text-center g-4">
  252.       <div class="col-12 col-md-4">
  253.         <div class="contact-ico mb-2"><i class="bi bi-clock"></i></div>
  254.         <h3 class="text-success h6 fw-bold">Horaire Agence</h3>
  255.         <p class="small text-muted mb-0">Du lundi au Vendredi de 09h à 12h et de 13H à 17h00 <br>Un samedi sur deux</p>
  256.       </div>
  257.       <div class="col-12 col-md-4">
  258.         <div class="contact-ico mb-2"><i class="bi bi-telephone"></i></div>
  259.         <h3 class="text-success h6 fw-bold">Téléphone</h3>
  260.         <p class="small text-muted mb-0">Bureau : <a class="link-info" href="tel:+590590505134">0590 50 51 34</a><br>
  261.         Mobile : <a class="link-info" href="tel:+590690357030">0690 35 70 30</a><br>
  262.         Mobile : <a class="link-info" href="tel:+590690762562">0690 76 25 62</a>
  263.         </p>
  264.       </div>
  265.       <div class="col-12 col-md-4">
  266.         <div class="contact-ico mb-2"><i class="bi bi-geo-alt"></i></div>
  267.         <h3 class="text-success h6 fw-bold">Localisation</h3>
  268.         <p class="small text-muted mb-0">CENTRE SHOPPING CENTER, RAIZET <br> 97139 LES ABYMES </p>
  269.       </div>
  270.     </div>
  271.   </div>
  272. </section>
  273. {% endblock %}