{% extends ('front_v4/base.html.twig') %}{% block meta_title %} {{ (store.name|length > 16 ? store.name|slice(0, 16) ~ '...' : store.name )|title }} {{ store.fullAddress }} Mon Centre Auditif{% endblock meta_title %}{% block meta_description %} Laboratoire d’audition - {{ store.name|length > 15 ? store.name|slice(0, 15) ~ '...' : store.name }} - {{ store.fullAddress }} - Mon centre auditif{% endblock meta_description %}{% block meta_robots %} {% if not store.storePage %} <meta name="robots" content="noindex"> {% else %} {{ parent() }} {% endif %}{% endblock %}{% block stylesheets %} {{ encore_entry_link_tags('store_single') }} {{ encore_entry_script_tags('store_page') }}{% endblock stylesheets %}{% block content %} <!-- ========== MAIN CONTENT ========== --> <main id="content" role="main"> {# Header Content #} <div class="bg-dark" style="background-image: url({{ asset('build/front_v4/svg/components/wave-pattern-light.svg') }});"> <div class="container content-space-1 content-space-lg-2"> <div class="w-lg-65 text-center mx-lg-auto my-5"> <span class="badge bg-warning text-dark rounded-pill mb-3">Centre Auditif</span> <p class="h1 text-white mb-0">{{ store.name }} {{ store.city }}</p> <p class="text-white-70">Découvrez notre centre auditif, où nous offrons des services personnalisés pour améliorer votre audition. </p> <div class="text-center my-lg-3"> {# {% if store.isOpenedForProspect %} #} {# <button class="btn btn-md btn-block btn-soft-warning w-100 btn-transition" #} {# style="color: white !important;" #} {# href="#" data-bilan-gtm="" data-bs-toggle="modal" #} {# data-bs-target="#prospectModal" data-id="{{ store.id }}" #} {# data-request="checkup" onclick="dataLayer.push({ #} {# 'event': 'click-checkup', #} {# 'centreMarque': '{{ store.name }}', #} {# 'centreID': '{{ store.id }}' #} {# });"> #} {# Je prends RDV #} {# </button> #} {# {% endif %} #} </div> </div> </div> </div> {# End Header Content #} {# Main Content #} <div class="container content-space-1 content-space-lg-0"> <div class="row"> <div class="col-lg-4 mt-lg-n10 mb-7 mb-lg-0"> {# Sticky Left Content #} <div id="stickyBlockStartPoint"> <div class="js-sticky-block" data-hs-sticky-block-options='{ "parentSelector": "#stickyBlockStartPoint", "targetSelector": "#header", "breakpoint": "lg", "startPoint": "#stickyBlockStartPoint", "endPoint": "#stickyBlockEndPoint", "stickyOffsetTop": 20 }'> <div class="card"> <div class="card-header border-bottom text-center"> {% if image_filter is not defined %} {% set image_filter = 'brand_logo_medium' %} {% endif %} <img class="store-logo" {% if store.hasLogo %} src="{{ vich_uploader_asset(store, 'logoFile') | imagine_filter(image_filter) }}" {% elseif store.hearingBrand %} src="{{ vich_uploader_asset(store.hearingBrand, 'logoFile') | imagine_filter(image_filter) }}" {% else %} src="{{ asset('uploads/images/brand_logo/mca_logo_short.png') | imagine_filter(image_filter) }}" {% endif %} style="max-width: 100px;" alt="Mon Centre Auditif - {{ store.name }}"/> </div> <div class="card-body"> <dl class="row"> <dt class="col-sm-5">Adresse</dt> <dd class="col-sm-7">{{ store.address }} {{ store.zipCode }} {{ store.city }}</dd> </dl> {% if not store.isOpenedForProspect %} <dl class="row"> <dt class="col-sm-5">Téléphone</dt> <dd class="col-sm-7"><a href="tel:{{ store.phoneNumber }}">{{ store.phoneNumber | format_french_phone_number }}</a> </dd> </dl> {% endif %} {# Store hours #} {% if store_place_data.openHoursWeekdayDescriptions is defined and store_place_data.openHoursWeekdayDescriptions is not null %} <dl class="row"> <dt class="col-sm-5 mb-1">Horaires</dt> <dd class="col-12"> <table> {% for desc in store_place_data.openHoursWeekdayDescriptions %} <tr> <td class="small my-1"> {{ desc }} </td> </tr> {% endfor %} </table> </dd> </dl> {% endif %} {# End Store hours #} {% if store_place_data.nearbyTransit is defined and store_place_data.nearbyTransit is not empty %} {# Store Transport #} <dl class="row"> <dt class="col-sm-5 col-lg-12 mb-1">Transport</dt> <dd class="col-sm-7 col-lg-12 "> <ul class="p-0 m-0"> {% set seen_names = [] %} {% for station in store_place_data.nearbyTransit|slice(1, 5) %} {% if station.name not in seen_names %} {% set seen_names = seen_names|merge([station.name]) %} <li class="d-flex"> <div class="flex-shrink-0"> <div class="icon icon-xs icon-soft-secondary"> {% if station.primaryType == "transit_station" or station.primaryType == "train_station" %} <i class="bi-train-front"></i> {% elseif station.primaryType == "subway_station" %} <i class="bi-train-front"></i> {% elseif station.primaryType == "bus_stop" or station.primaryType == "bus_stop" %} <i class="bi-bus-front"></i> {% else %} <i class="bi-pin-map"></i> {% endif %} </div> </div> <div class="flex-grow-1 mt-1 ms-3"> <span class="d-block small fw-semibold">{{ station.name }}</span> <small class="d-block text-body" style="font-size: 0.7em;"> {% if station.primaryType == "transit_station" or station.primaryType == "train_station" %} Transport en communs {% elseif station.primaryType == "subway_station" %} Métro {% elseif station.primaryType == "bus_stop" or station.primaryType == "bus_stop" %} Bus {% else %} Autre tansport {% endif %} </small> </div> </li> {% endif %} {% endfor %} </ul> </dd> </dl> {# End Store Transport #} {% endif %} {# Store Speciality #} {% if store_page.speciality is defined and store_page.speciality is not empty %} <hr class="my-4"> <div class="mb-3"> <h4>Spécialités</h4> </div> <ul class="list-checked list-checked-primary mb-0"> {% for speciality in store_page.speciality %} <li class="list-checked-item"> {{ speciality }} </li> {% endfor %} </ul> {% endif %} {# End Store Speciality #} {# Store Service #} {% if store_page.service is defined and store_page.service is not empty %} <hr class="my-4"> <div class="mb-3"> <h4>Services</h4> </div> <div class="row mb-7"> {% for service in store_page.service %} <div class="col-6 col-md-12 col-lg-6 mb-4 d-flex align-items-center"> <!-- Icon Block --> <div class="icon icon-xs icon-soft-primary me-2"> <i class="bi {{ service.iconName }}"></i> </div> <span class="text-body small">{{ service }}</span> <!-- End Icon Block --> </div> <!-- End Col --> {% endfor %} </div> {% endif %} {# End Store Service #} {# CTA Form #} {# {% if store.isOpenedForProspect %} #} {# <button class="btn btn-md btn-block btn-warning w-100 btn-transition" #} {# style="color: white !important;" #} {# href="#" data-bilan-gtm="" data-bs-toggle="modal" #} {# data-bs-target="#prospectModal" data-id="{{ store.id }}" #} {# data-request="checkup" onclick="dataLayer.push({ #} {# 'event': 'click-checkup', #} {# 'centreMarque': '{{ store.name }}', #} {# 'centreID': '{{ store.id }}' #} {# });"> #} {# Je prends RDV #} {# </button> #} {# {% endif %} #} {# End CTA Form Service #} </div> </div> </div> </div> {# End Sticky Left Content #} </div> <!-- End Col --> <div class="col-lg-8 content-space-t-lg-2"> <div class="ps-lg-4"> <h3 class="h2 text-center">Bienvenue chez <span class="text-primary text-highlight-warning">{{ store.name }}</span>.</h3> <h1 class="h4">Services et solutions auditives personnalisées chez {{ store.nameAndZipcode }}</h1> {# Store Description #} {% if store_page.description is defined and store_page.description is not null %} <div class="text-secondary mb-5" style="text-align: justify"> {% if store_page.description|length > 300 %} {# Spliting Big Text Description #} {% set words = store_page.description|split(' ') %} {% set half_length = (words|length / 2)|round(0, 'floor') %} {% set first_part = words[:half_length]|join(' ') %} {% set second_part = words[half_length:]|join(' ') %} <span id="collapse-description-store" class="mb-0"> {{ first_part|raw }} ... </span> <div id="employerOverviewDescriptionCollapse" class="collapse"> <p> {{ first_part|raw }} {{ second_part|raw }} </p> </div> <a class="link link-collapse collapsed" data-bs-toggle="collapse" href="#employerOverviewDescriptionCollapse" role="button" aria-expanded="false" aria-controls="employerOverviewDescriptionCollapse"> <span class="link-collapse-default">Lire plus</span> <span class="link-collapse-active">Lire moins</span> </a> {% else %} <p>{{ store_page.description|raw }}</p> {% endif %} </div> {% endif %} {# End Store Description #} {# Store Carrousel Img #} {% if store_page.storeImages is defined and store_page.storeImages is not empty %} <div id="fancyboxGallery" class="d-none d-lg-block my-lg-5 d-flex justify-content-center"> <div class="row gx-3"> {% for storeImg in store_page.storeImages %} <div class="col-4 col-sm px-2 mb-3 mb-sm-0"> <!-- Media Viewer --> <img class="img-fluid rounded-2 mx-auto" src="{{ vich_uploader_asset(storeImg, 'imageFile') | imagine_filter('store_image_carrousel') }}" alt="Photo - {{ store.nameAndZipcode }}"> <span class="media-viewer-container"> <span class="media-viewer-icon"> <i class="bi-plus media-viewer-icon-inner"></i> </span> </span> <!-- End Media Viewer --> </div> <!-- End Col --> {% endfor %} </div> </div> {% endif %} {# End Store Carrousel Img #} {# Store Highlited Staff Section #} {% if store_page.hasHighlightedStaff is defined and store_page.hasHighlightedStaff == true %} <hr class="my-5"> <div class="row"> <div class="col-sm-4 mb-4 mb-sm-0"> <div class="mb-3"> {# image size : 300x300 #} <img class="avatar avatar-xl avatar-circle" src="{{ vich_uploader_asset(store_page, 'highlightedStaffPictureFile') | imagine_filter('store_highlighted_staff_image') }}" alt="Audioprothésiste {{ store.nameAndZipcode }}"> </div> <ul class="list-unstyled list-py-1"> <li class="fw-semibold text-primary"> <i class="bi-star-fill text-primary dropdown-item-icon"></i> {{ store_page.getHighlitedStaffSpecialityName }} </li> </ul> </div> <!-- End Col --> <div class="col-sm-8"> <!-- Info --> <div class="mb-2"> <h4 class="mb-1"><a href="">{{ store_page.highlightedStaffName }}</a></h4> <p class="fw-semibold">{{ store_page.highlightedStaffJob }}</p> </div> <p>{{ store_page.highlightedStaffDescription }}</p> <!-- End Info --> </div> <!-- End Col --> </div> {% endif %} {# End Store Highlited Staff Section #} {# Store Map #} <div class="border border-primary rounded my-5" id="map" style="height: 330px;" data-store-latitude="{{ store.latitude }}" data-store-longitude="{{ store.longitude }}" {% if coordinates_used_in_finder|length>1 %} data-from-latitude="{{ coordinates_used_in_finder[0] }}" data-from-longitude="{{ coordinates_used_in_finder[1] }}" {% endif %} ></div> {# End Store Map #} {# {% if store.isOpenedForProspect %} #} {# <div class="text-center my-5"> #} {# <p class="fs-4">Prenez rendez-vous pour un bilan auditif gratuit chez {{ store.name }} #} {# et #} {# faites le premier pas vers une meilleure qualité de vie.</p> #} {# <button class="btn btn-warning px-5" #} {# style="color: white !important;" #} {# href="#" data-bilan-gtm="" data-bs-toggle="modal" #} {# data-bs-target="#prospectModal" data-id="{{ store.id }}" #} {# data-request="checkup" onclick="dataLayer.push({ #} {# 'event': 'click-checkup', #} {# 'centreMarque': '{{ store.name }}', #} {# 'centreID': '{{ store.id }}' #} {# });"> #} {# Je prends RDV #} {# </button> #} {# </div> #} {# {% endif %} #} <!-- End Sticky End Point --> <div id="stickyBlockEndPoint"></div> </div> </div> <!-- End Col --> </div> <!-- End Row --> </div> <!-- End Content --> {# Section TEAM (employee) #} {% if store_page.employees is defined and store_page.employees is not empty %} <div class="container content-space-1"> <!-- Heading --> <div class="w-md-80 w-lg-50 text-center mx-md-auto mb-3 mb-md-5"> <h2 class="font-weight-bold mb-2">L'équipe {{ store.name }}</h2> </div> <!-- End Heading --> <div class="row justify-content-center"> {% for employee in store_page.employees %} <div class="col-sm-6 col-md-5 mb-4 mb-sm-0"> <!-- Media --> <div class="d-flex justify-content-center"> <div class="flex-shrink-0"> {# Img Size : 160x160 #} {% if employee.picturePath is not null %} <img class="avatar avatar-lg avatar-circle" src="{{ vich_uploader_asset(employee, 'pictureFile') | imagine_filter('profile_image') }}" alt="Bilan Auditif {{ store.nameAndZipcode }}"> {% else %} <span class="avatar avatar-lg avatar-soft-warning avatar-circle"> <span class="avatar-initials">{{ employee.firstname|first|lower }}{{ employee.lastname|first|lower }}</span> </span> {% endif %} </div> <div class="ms-3"> <h4 class="mb-1 text-dark"> {{ employee.firstname }} {{ employee.lastname }} </h4> <p class="text-primary fw-bold">{{ employee.speciality }}</p> </div> </div> <!-- End Media --> </div> <!-- End Col --> {% endfor %} </div> <!-- End Col --> </div> <!-- End Row --> </div> {% endif %} {# End Section TEAM (employee) #} {# Section Hearing Brand #} {% if store_page.hearingMaker is defined and store_page.hearingMaker is not empty %} <hr class="my-1"> <div class="container content-space-1"> <div class="row align-items-lg-center"> <div class="w-md-75 w-lg-50 text-center mx-md-auto mb-3"> <h2>Les marques distribuées chez {{ store.name }}</h2> </div> <div class="col-md-7 col-lg-8 mb-5 mb-md-0"> <div class="row align-items-center"> {% for hearingMaker in store_page.hearingMaker|slice(0, 12) %} {% if hearingMaker.hasLogo %} <div class="col text-center py-3"> <img class="avatar avatar-lg avatar-4x3" src="{{ vich_uploader_asset(hearingMaker, 'logoFile') | imagine_filter('hearing_maker_carrousel') }}" alt="Audioprothésiste {{ hearingMaker.name }}"> </div> {% endif %} {% endfor %} </div> <!-- End Row --> </div> <div class="col-md-5 col-lg-4"> <div class="ps-md-4"> <h2 class="display-5 text-primary">98%</h2> <p>Des clients recommandent ces marques pour leurs solutions auditives innovantes et fiables.</p> </div> </div> </div> </div> {% endif %} {# End Section Hearing Brand #} {# Section Care Network #} {% if store_page.careNetworks is defined and store_page.careNetworks is not empty %} {# Separator #} <div class="border-top mx-auto my-lg-5" style="max-width: 25rem;"></div> {# End Separator #} <div class="container content-space-1 content-space-lg-2 content-space-xl-3"> <div class="row"> <div class="col-md-6 col-lg-5 pt-3 pt-md-0"> <!-- Card --> <div class="card bg-primary shadow-lg mt-md-n6 aos-init aos-animate" data-aos="fade-up"> <div class="card-body"> <div class="mb-3"> <span class="card-subtitle text-warning text-center" style="font-size: 1.4em;">Découvrez les Réseaux de Soins affiliés</span> <h2 class="h5 card-title text-white">Apprenez comment les réseaux de soins auditifs transforment l'expérience des patients en offrant des solutions personnalisées et de haute qualité.</h2> </div> <div class="d-grid"> <a class="btn btn-soft-light btn-transition" href="">Lire l'article</a> </div> </div> </div> <!-- End Card --> </div> <!-- End Col --> <div class="col-md-6 col-lg-7 my-5 my-md-0"> <div class="row align-items-center gap-lg-5"> {% for careNetwork in store_page.careNetworks|slice(0, 9) %} {% if careNetwork.haslogo and careNetwork.logoFile is not null %} <div class="col col-lg-3 py-1"> <img class="avatar avatar-4x3 avatar-centered" src="{{ vich_uploader_asset(careNetwork, 'logoFile') | imagine_filter('care_network_carrousel') }}" alt="Réseau de soins {{ careNetwork.name }}"> </div> {% endif %} <!-- End Col --> {% endfor %} </div> <!-- End Row --> </div> <!-- End Col --> </div> <!-- End Row --> </div> {% endif %} {# End Section Care Network #} {% if store_place_data.rating is defined and store_place_data.rating is not null %} {# Section Review Store #} {% set rating = store_place_data.rating %} <div id="reviews-section" class="bg-dark text-white" style="background-image: url({{ asset('build/front_v4/svg/components/wave-pattern-light.svg') }});"> <div class="container content-space-1"> <div class="w-md-75 w-lg-50 text-center mx-md-auto mb-2 mb-md-5"> <h2 class="text-white">A propos de nos clients</h2> </div> <div class="row mb-3"> <div class="col-sm-6 mb-3 mb-sm-0 d-flex justify-content-center"> <!-- Media --> <div class="d-flex align-items-center"> <div class="flex-shrink-0"> <span class="display-4 text-white">{{ rating }}</span><small>/5</small> </div> <div class="flex-grow-1 ms-4"> <!-- Rating --> <div class="d-flex gap-1 mb-2"> {% set fullStars = rating|round(0, 'floor') %} {% set hasHalfStar = (rating - fullStars) >= 0.5 %} {% set emptyStars = 5 - fullStars - (hasHalfStar ? 1 : 0) %} {# Étoiles pleines #} {% if fullStars > 0 %} {% for i in 1..fullStars %} <img src="{{ asset('build/front_v4/svg/illustrations/star.svg') }}" alt="Full star" width="14"> {% endfor %} {% endif %} {# Demi-étoile #} {% if hasHalfStar %} <img src="{{ asset('build/front_v4/svg/illustrations/star-half.svg') }}" alt="Half star" width="14"> {% endif %} {# Étoiles vides #} {% if emptyStars > 0 %} {% for i in 1..emptyStars %} <img src="{{ asset('build/front_v4/svg/illustrations/star-muted.svg') }}" alt="Empty star" width="14"> {% endfor %} {% endif %} </div> <!-- End Rating --> <span class="d-block">{{ store_place_data.userRatingCount }} avis</span> </div> </div> <!-- End Media --> </div> <!-- End Col --> <div class="col-sm-6 d-flex justify-content-center"> <div class="d-flex flex-column flex-md-row align-items-center"> <div class="flex-shrink-0"> <span class="display-4 text-white">{{ rating / 5 * 100 }}%</span> </div> <div class="flex-grow-1 ms-md-4"> <span class="font-size-1">des clients<br class="d-none d-md-block"> recommande notre centre auditif</span> </div> </div> </div> <!-- End Col --> </div> </div> </div> {# End Section Review Store #} {% endif %} {# Section ORL #} {% if orls|length > 0 %} <div class="container content-space-1 content-space-lg-2"> <!-- Heading --> <div class="w-md-75 w-lg-50 text-center mx-md-auto mb-3"> <h2>ORL à proximité</h2> <p> Nous avons sélectionné {{ orls|length }} ORL à proximité. <a class="link" href="{{ absolute_path_orl ~ path('orl_finder', {'lat': store.latitude, 'lng':store.longitude}) }}" target="_blank">Découvrez d'autre ORL.</a> </p> </div> <!-- End Heading --> <div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 mb-5 d-flex justify-content-center"> {% for orlData in orls %} {% set orl = orlData[0] %} <div class="col mb-5"> <!-- Card --> <div class="card card-bordered h-100"> <!-- Card Body --> <div class="card-body"> <h3 class="card-title"> <a class="text-dark" href="">{{ orl.name|length > 20 ? orl.name|slice(0, 25) ~ '...' : orl.name }} {# {% if loop.index is even %} #} {# <div class="flex-grow-1 d-inline-block"> #} {# <h6 class="card-title"> #} {# <img class="avatar avatar-xss ms-1 mb-2" #} {# src="{{ asset('build/front_v4/svg/illustrations/top-vendor.svg') }}" #} {# alt="Review rating" data-toggle="tooltip" #} {# data-placement="top" #} {# title="Claimed profile"> #} {# </h6> #} {# </div> #} {# {% endif %} #} </a> </h3> <div class="text-muted small mb-2"> <i class="bi-map-fill me-1"></i> {{ orl.address }} , {{ orl.zipCode }} {{ orl.city }} </div> {% if orl.phoneNumber is defined and orl.phoneNumber is not null %} <div class="text-muted small mb-2"> <i class="bi-phone me-1"></i> {{ orl.phoneNumber|format_french_phone_number }} </div> {% endif %} <span class="badge bg-soft-success text-success me-2"> <span class="legend-indicator bg-success"></span>Ouvert </span> </div> <!-- End Card Body --> {# <!-- Card Footer --> #} {# <div class="card-footer pt-0"> #} {# <ul class="list-inline list-separator small text-body"> #} {# <li class="list-inline-item">RDV dans les 3 jours</li> #} {# <li class="list-inline-item">A proximité</li> #} {# <li class="list-inline-item">ORL indépendant</li> #} {# </ul> #} {# </div> #} {# <!-- End Card Footer --> #} </div> <!-- End Card --> </div> {% endfor %} </div> <div class="text-center"> <a class="btn btn-outline-primary" href="{{ absolute_path_orl ~ path('orl_finder', {'lat': store.latitude, 'lng':store.longitude}) }}" target="_blank">Trouver d'autres ORL <i class="bi-chevron-right small ms-1"></i></a> </div> </div> <!-- End Card Grid --> {% endif %} {# End Section ORL #} </main> <!-- ========== END MAIN CONTENT ========== --> {# Modal Prospect Form #} {% use 'front_v4/mca/partials/_modal_prospect.html.twig' with inc_content as modal_lead_content %} {{ block('modal_lead_content') }} {# End Modal Prospect Form #}{% endblock content %}{% block javascripts %} <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> {# Schema Balise SEO #} <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Store", "name": "{{ store.name }}", {% if store.logoPath is defined and store.logoPath is not null %} "image": "{{ store.logoPath }}", {% endif %} "address": { "@type": "PostalAddress", "streetAddress": "{{ store.address }}", "addressLocality": "{{ store.city }}", "postalCode": "{{ store.zipCode }}", "addressCountry": "FR" }, {% if store.phoneNumber is defined and store.phoneNumber is not null %} "telephone": "{{ store.phoneNumber }}", {% endif %} {% if store.latitude is defined and store.latitude is not null and store.longitude is defined and store.longitude is not null %} "geo": { "@type": "GeoCoordinates", "latitude": "{{ store.latitude }}", "longitude": "{{ store.longitude }}" } {% endif %} } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {% for breadcrumb in breadcrumbs %} { "@type": "ListItem", "position": "{{ loop.index }}", "item": { "@id": "{{ breadcrumb.url }}", "name": "{{ breadcrumb.name }}" } }{{ not loop.last ? ',' : '' }} {% endfor %} ] } </script> {# End Schema Balise SEO #} {# Google API MAP #} <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?&key=AIzaSyAyLv6STXzvZeMXKMZU3DLaNIkBvv8HlBI&libraries=places&v=weekly"></script> {# End Google API MAP #} {# Modal Lead JS #} {% use 'front_v4/mca/partials/_modal_prospect.html.twig' with inc_javascripts as modal_lead_javascripts %} {{ block('modal_lead_javascripts') }} {# End Modal Lead JS #} {{ encore_entry_script_tags('display_center_number') }} {{ encore_entry_script_tags('store_page') }} {{ encore_entry_script_tags('store_single') }}{% endblock javascripts %}