templates/sous_famille/sous_famille.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}{{ sousFamille.metaTitle }}{% endblock %}
  3. {% block meta %}
  4.     <!-- Primary Meta Tags -->
  5.     <meta name="description" content="{{ sousFamille.metaDescription }}">
  6.     <!-- Open Graph -->
  7.     <meta property="og:type" content="website">
  8.     <meta property="og:url" content="{{ app.request.getSchemeAndHttpHost() ~ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}">
  9.     <meta property="og:title" content="{{ sousFamille.metaTitle }}">
  10.     <meta property="og:description" content="{{ sousFamille.metaDescription }}">
  11.     <meta property="og:image" content="{{ app.request.getSchemeAndHttpHost() ~ urlImageSousFamille ~ sousFamille.urlImage }}">
  12.     <!-- Twitter -->
  13.     <meta property="twitter:card" content="summary">
  14.     <meta property="twitter:url" content="{{ app.request.getSchemeAndHttpHost() ~ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}">
  15.     <meta property="twitter:title" content="{{ sousFamille.metaTitle }}">
  16.     <meta property="twitter:description" content="{{ sousFamille.metaDescription }}">
  17.     <meta property="twitter:image" content="{{ app.request.getSchemeAndHttpHost() ~ urlImageSousFamille ~ sousFamille.urlImage }}">
  18. {% endblock %}
  19. {% block stylesheets %}
  20.     <link rel="stylesheet" href="{{ asset('css/sousFamille.css') }}">
  21.     <link rel="stylesheet" href="{{ asset('css/demandeDevis.css?v=1.2') }}"/>
  22. {% endblock %}
  23. {% block entete %}
  24.     <img class="img-100" src='{{ urlImageSousFamille ~ sousFamille.urlImageEntete }}' alt='Aperçu {{ sousFamille.designation }}'>
  25.     <div class="row mb-5">
  26.         <div class="breadcrumb-container breadcrumb-produit px-5">
  27.             <nav aria-label="breadcrumb">
  28.                 <ol class="breadcrumb-reverse">
  29.                     <li class="breadcrumb-item"><a href="{{ path('homepage') }}">Accueil</a></li>
  30.                     <li class="breadcrumb-item"><a href="{{ path('famille_produit', {seoUrl: sousFamille.familleProduit.seoUrl }) }}">{{ sousFamille.familleProduit.designation }}</a></li>
  31.                     <li class="breadcrumb-item active">{{ sousFamille.designation }}</li>
  32.                 </ol>
  33.             </nav>
  34.             <h1 class="titre-photo">{{ sousFamille.designation }}</h1>
  35.         </div>
  36.     </div>
  37. {% endblock %}
  38. {% block body %}
  39.     {% if sousFamille.familleProduit.seoUrl == 'porte-de-placard-sur-mesure' %}
  40.         <!-- Modal -->
  41.         <div class="modal fade" id="demandeDevisModal" tabindex="-1" role="dialog" aria-labelledby="demandeDevisModalTitle" aria-hidden="true">
  42.             <div class="modal-dialog modal-dialog-centered modal-xl" role="document">
  43.                 <div class="modal-content">
  44.                     <div class="modal-body">
  45.                         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  46.                             <span aria-hidden="true">&times;</span>
  47.                         </button>
  48.                         <div class="row">
  49.                             <div class="col-12 col-md-5 modal-col modal-top">
  50.                                 <video autoplay loop muted playsinline id="video" class="video" style="width: 100%">
  51.                                     <source src="https://media.cmai-groupe.com/asset/d7862f04-f284-4e00-976f-23fdebca2c65/mp4/Ouverture_placard.mp4" type="video/mp4">
  52.                                     Votre navigateur ne supporte pas les vidéos HTML5.
  53.                                 </video>
  54.                             </div>
  55.                             <div class="col-12 col-md-7 mt-4">
  56.                                 <h3 class="text-center">
  57.                                     Profitez de notre offre
  58.                                 </h3>
  59.                                 <p class="mt-3">En ce moment, une colonne de rangement <strong>offerte</strong> pour tout achat d'une porte de placard*</p>
  60.                                 {{ form_start(form) }}
  61.                                 <div class="_form-content" id="devis_promo">
  62.                                     <div class="row">
  63.                                         <div class="col-12 col-lg-4">
  64.                                             {{ form_widget(form.name, {'attr': {'class': 'form-control'}}) }}
  65.                                             {{ form_errors(form.name, {'attr': {'class': 'form-error'}}) }}
  66.                                         </div>
  67.                                         <div class="col-12 col-lg-4">
  68.                                             {{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
  69.                                             {{ form_errors(form.email, {'attr': {'class': 'form-error'}}) }}
  70.                                         </div>
  71.                                         <div class="col-12 col-lg-4">
  72.                                             {{ form_widget(form.phone, {'attr': {'class': 'form-control'}}) }}
  73.                                             {{ form_errors(form.phone, {'attr': {'class': 'form-error'}}) }}
  74.                                         </div>
  75.                                     </div>
  76.                                     <div class="row">
  77.                                         <div class="col-12 col-lg-6">
  78.                                             {{ form_widget(form.address, {'attr': {'class': 'form-control'}}) }}
  79.                                             {{ form_errors(form.address, {'attr': {'class': 'form-error'}}) }}
  80.                                         </div>
  81.                                         <div class="col-12 col-lg-3">
  82.                                             {{ form_widget(form.postalCode, {'attr': {'class': 'form-control'}}) }}
  83.                                             {{ form_errors(form.postalCode, {'attr': {'class': 'form-error'}}) }}
  84.                                         </div>
  85.                                         <div class="col-12 col-lg-3">
  86.                                             {{ form_widget(form.city, {'attr': {'class': 'form-control'}}) }}
  87.                                             {{ form_errors(form.city, {'attr': {'class': 'form-error'}}) }}
  88.                                         </div>
  89.                                     </div>
  90.                                     <div class="row">
  91.                                         <div class="col-12 col-md-7 mb-1">
  92.                                             {{ form_widget(form.message, {'attr': {'class': 'form-control'}}) }}
  93.                                             {{ form_errors(form.message, {'attr': {'class': 'form-error'}}) }}
  94.                                         </div>
  95.                                         <div class="col-12 col-md-5 d-flex flex-column align-items-center captcha">
  96.                                             {{ form_row(form.captcha) }}
  97.                                         </div>
  98.                                     </div>
  99.                                     <div class="bg-grey text-center pt-3 pb-2 container-expert">
  100.                                         <img class="image-expert" src="{{ asset('assets/images/Expert.png') }}" alt="portrait expert">
  101.                                         <p>
  102.                                             Vous serez recontacté dans un délai de 48h par <br>
  103.                                             notre <strong>Sogal Expert</strong> à moins de 30km de chez vous.
  104.                                         </p>
  105.                                     </div>
  106.                                     <div class="text-center mt-3 mb-4">
  107.                                         {{ form_widget(form.submit) }}
  108.                                         <div id="spinner-devis" class="spinner-border" role="status" style="display: none;">
  109.                                             <span class="sr-only">Chargement...</span>
  110.                                         </div>
  111.                                     </div>
  112.                                 </div>
  113.                                 {{ form_end(form) }}
  114.                                 <span class="mt-2" style="font-size: 12px">
  115.                                     *Offre valable pour tout achat et livraison en France métropolitaine d’un placard coulissant, pivotant, pliant ou battant hors modèles Sogal Eco+ et Initial.
  116.                                     Aménagement offert : une colonne Moduleco blanche,  Hauteur 2045 mm, Largeur 335 ou 500 mm. Eco-participation à la charge du client particulier.
  117.                                 </span>
  118.                             </div>
  119.                         </div>
  120.                     </div>
  121.                 </div>
  122.             </div>
  123.         </div>
  124.     {% endif %}
  125. {% if sousFamille.description %}
  126. <div class="row">
  127.     <div class="col-12">
  128.         {{ sousFamille.description|raw }}
  129.     </div>
  130. </div>
  131. {% endif %}
  132. <form id="options" class="row pt-4">
  133.     {# Filtre Nombre partition #}
  134.         {% if partitions is not empty %}
  135.             <div class="col-12 col-sm-6 col-md-3 mb-3">
  136.                 <fieldset data-group="nombrePartition">
  137.                     <div class="btn-group w-100">
  138.                         <button class="button-filter dropdown-toggle w-100" id="dropdownPartition" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  139.                             Style de porte
  140.                         </button>                        
  141.                         <div class="dropdown-menu w-100"  aria-labelledby="dropdownPartition">
  142.                             {% for partition in partitions %}
  143.                                     <div class="d-flex justify-content-start partition">
  144.                                         <div class="d-flex align-items-center" data-ordre={{ partition.placement }}>
  145.                                             <input 
  146.                                                 class="checkbox"
  147.                                                 type="checkbox" 
  148.                                                 id="customCheckPartition{{ partition.id }}"
  149.                                                 value=".nombrePartition-{{ partition.id }}" 
  150.                                                 name="nombrePartition"
  151.                                                 >
  152.                                         </div>
  153.                                         <label class="d-flex align-items-center my-1 label" for="customCheckPartition{{ partition.id }}" title="{{ partition.format }}"><img class="picto" src="{{ urlPartitionProduit ~ partition.url }}" alt="{{ partition.format }}"></label>
  154.                                     </div>
  155.                             {% endfor %}
  156.                         </div>
  157.                     </div>
  158.                 </fieldset>
  159.             </div>
  160.         {% endif %}
  161.     {# Filtre personalidé : Emplacement n°1 #}
  162.         {% if filtrePersonaliseResults is not empty %}
  163.             <div class="col-12 col-sm-6 col-md-3 mb-3">
  164.                 <fieldset data-group="fp1">
  165.                     <div class="btn-group w-100">
  166.                         <button class="button-filter dropdown-toggle w-100" data-toggle="dropdown" id="dropdownFp1" aria-haspopup="true" aria-expanded="false">
  167.                             {{ sousFamille.designationCollectionFiltre }}
  168.                         </button>
  169.                         <div class="dropdown-menu w-100" aria-labelledby="dropdownFp1">
  170.                             {% for fp1 in filtrePersonaliseResults %}
  171.                                 <div class="d-flex justify-content-start">
  172.                                     <div class="">
  173.                                         <input 
  174.                                             class="checkbox"
  175.                                             type="checkbox" 
  176.                                             id="customCheck{{ fp1.designation }}"
  177.                                             value=".fp1-{{ fp1.id }}" 
  178.                                             name="fp1"
  179.                                             >
  180.                                         </div>
  181.                                     <label class="label my-1" for="customCheck{{ fp1.designation }}" title="{{ fp1.infobulle }}"><small>{{ fp1.designation }}</small></label>
  182.                                 </div>
  183.                             {% endfor %}
  184.                         </div>
  185.                     </div>
  186.                 </fieldset>
  187.             </div>
  188.         {% endif %}
  189.     {# Filtre personalidé : Emplacement n°2 #}
  190.         {% if filtrePersonaliseBisResults is not empty %}
  191.             <div class="col-12 col-sm-6 col-md-3 mb-3">
  192.                 <fieldset data-group="fp2">
  193.                     <div class="btn-group w-100">
  194.                         <button class="button-filter dropdown-toggle w-100" data-toggle="dropdown" id="dropdownFp2" aria-haspopup="true" aria-expanded="false">
  195.                             {{ sousFamille.designationCollectionFiltreBis }}
  196.                         </button>
  197.                         <div class="dropdown-menu w-100" aria-labelledby="dropdownFp2">
  198.                             {% for fp2 in filtrePersonaliseBisResults %}
  199.                                 <div class="d-flex justify-content-start">
  200.                                     <div class="">
  201.                                         <input 
  202.                                             class="checkbox"
  203.                                             type="checkbox" 
  204.                                             id="customCheck{{ fp2.designation }}"
  205.                                             value=".fp2-{{ fp2.id }}" 
  206.                                             name="fp2"
  207.                                             >
  208.                                         </div>
  209.                                     <label class="label my-1" for="customCheck{{ fp2.designation }}" title="{{ fp2.infobulle }}"><small>{{ fp2.designation }}</small></label>
  210.                                 </div>
  211.                             {% endfor %}
  212.                         </div>
  213.                     </div>
  214.                 </fieldset>
  215.             </div>
  216.         {% endif %}
  217. </form>
  218. <div class="row" id="container">
  219.     {% for produit in sousFamille.produits %}
  220.             {% if produit.actif %}
  221.             <div class="item col-12 col-md-4
  222.                 {% if produit.partitionProduit is not empty %}nombrePartition-{{ produit.partitionProduit.id }}{% endif %}
  223.                 {% if produit.premierFiltres %} 
  224.                     {% for filtre in produit.premierFiltres %} fp1-{{ filtre.id }} {% endfor %}
  225.                 {% endif %}
  226.                 {% if produit.secondFiltres %} 
  227.                     {% for filtre in produit.secondFiltres %} fp2-{{ filtre.id }} {% endfor %}
  228.                 {% endif %}
  229.                 "
  230.             >
  231.                 <a class="for-hover mb-4" href="{{ path('ficheProduit', { famille: sousFamille.familleProduit.seoUrl , sousFamille: sousFamille.seoUrl , produit: produit.seoUrl }) }}">
  232.                     <div class="row px-3">
  233.                         <div class="col-12 px-0">
  234.                             <img class="img-fluid" src="{{ urlImageProduit ~produit.images.first.url }}" alt="Aperçu {{ produit.modelCommercial }}">
  235.                             <div class="img-bg"></div>
  236.                         </div>
  237.                     </div>
  238.                     <div class="row mt-3">
  239.                         <div class="col-12">
  240.                             <p class="h2 left-barre">
  241.                                 {{ produit.modelCommercial }}
  242.                             </p>
  243.                         </div>
  244.                     </div>
  245.                 </a>
  246.             </div>
  247.         {% endif %}
  248.     {% endfor %}
  249.     </div>
  250.     {% if sousFamille.descriptionFin %}
  251.         <div class="row">
  252.             <div class="col-12">
  253.                 {{ sousFamille.descriptionFin|raw }}
  254.             </div>
  255.         </div>
  256.     {% endif %}
  257. {% endblock %}
  258. {% block javascripts %}
  259.     <script src="{{ asset('js/imagesloaded.pkgd.min.js')}}"></script>
  260.     <script src="{{ asset('js/isotope.pkgd.min.js')}}"></script>
  261.     <script src="{{ asset('js/custom-isotope-sous-famille.js')}}"></script>
  262.     <script src="{{ asset('js/familleProduit.js')}}"></script>
  263. {% endblock %}