templates/products-detail.html.twig line 1

Open in your IDE?
  1. {% extends 'layout.html.twig' %}
  2. {% block content %}
  3.     {% include 'includes/breadcrumb.html.twig' %}
  4.     {% set category = product.categories is iterable ? product.categories|first : false %}
  5.     <section class="section-filter">
  6.         <div class="container-fluid">
  7.             <div class="row align-items-center">
  8.                 <div class="col-auto">
  9.                     {% if category %}
  10.                         <p class="h1">{{ category.name }}</p>
  11.                     {% endif %}
  12.                 </div>
  13.                 {#
  14.                 <div class="col-auto ms-auto">
  15.                     <select name="" id="" class="form-select">
  16.                         <option value="">Toon als thumbnails</option>
  17.                     </select>
  18.                 </div>
  19.                 <div class="col-auto">
  20.                     <select name="" id="" class="form-select">
  21.                         <option value="">Sorteer op productgroep</option>
  22.                     </select>
  23.                 </div>
  24.                 <div class="col-auto">
  25.                     <select name="" id="" class="form-select">
  26.                         <option value="">Toon aantal (9)</option>
  27.                     </select>
  28.                 </div>
  29.                 #}
  30.             </div><!--/ .row -->
  31.         </div><!--/ .container -->
  32.     </section>
  33.     <section class="section-products">
  34.         <div class="container-fluid">
  35.             <div class="container-inner">
  36.                 <div class="row">
  37.                     <div class="col-auto">
  38.                         <h1 class="h2 mb-1">{{ product.name }}</h1>
  39.                         {% if product.onOrder %}
  40.                             <span class="badge bg-danger">{{ 'Op bestelling!'|trans }}</span>
  41.                         {% endif %}
  42.                         <p class="text-primary mb-5">{{ 'Code'|trans }}: {{ product.code }} — {{ 'Merk'|trans }}: {{ product.brand }} {% if product.categoryTypes %} — {{ 'Categorietype'|trans }}: {{ product.categoryTypes|map(t => t.name)|join(', ') }}{% endif %}</p>
  43.                     </div>
  44.                     <div class="col-auto ms-auto">
  45.                         <favorite-button
  46.                             product-id="{{ product.id }}"
  47.                             :is-current-favorite="{{ product.id in favoriteIds ? 'true' : 'false' }}"
  48.                         ></favorite-button>
  49.                     </div>
  50.                     <favorite-modal></favorite-modal>
  51.                 </div>
  52.                 <div class="row">
  53.                     <div class="col-lg-3">
  54.                         {% if product.images %}
  55.                         {% set imageList = product.images|json_decode %}
  56.                         <div class="product-detail-images">
  57.                             <!-- swiper -->
  58.                             <div id="detail-slider" class="swiper swiper--detail">
  59.                                 <div class="swiper-wrapper">
  60.                                         {% for photo in imageList %}
  61.                                             <div class="swiper-slide">
  62.                                                 <a href="{{ photo.lightboxImage }}" class="product-lightbox"
  63.                                                    data-glightbox="type: image">
  64.                                                     <img class="img-fluid" src="{{ photo.thumbnailImage }}" alt="">
  65.                                                 </a>
  66.                                             </div>
  67.                                         {% endfor %}
  68.                                 </div>
  69.                                 <div class="swiper-button-prev"></div>
  70.                                 <div class="swiper-button-next"></div>
  71.                             </div><!--/ .swiper -->
  72.                             <!-- swiper -->
  73.                             <div class="swiper swiper--detail-thumbs" id="detail-thumbs-slider">
  74.                                 <div class="swiper-wrapper">
  75.                                     {% for photo in imageList %}
  76.                                         <div class="swiper-slide">
  77.                                             <img class="img-fluid" src="{{ photo.thumbnailImage }}" alt="">
  78.                                         </div>
  79.                                     {% endfor %}
  80.                                 </div>
  81.                             </div><!--/ .swiper -->
  82.                         </div>
  83.                         {% else %}
  84.                             <div class="img-wrapper placeholder-img">
  85.                                 <img src="{{ asset('/img/placeholder.png') }}" alt="" class="img-fluid w-100">
  86.                             </div>
  87.                         {% endif %}
  88.                         {% if product.productsheet %}
  89.                             <div class="row">
  90.                                     <div class="productsheet">
  91.                                         <a class="btn btn-hyperlink icon-link" href="{{ product.productsheet }}" target="_blank">
  92.                                             {{ 'Bekijk productfiche'|trans }}
  93.                                             <i class="icon-link-ext"></i>
  94.                                         </a>
  95.                                     </div>
  96.                             </div><!--/ .row -->
  97.                         {% endif %}
  98.                     </div>
  99.                     <div class="col-lg-8 offset-lg-1">
  100.                         <div class="row">
  101.                             <div class="col-auto">
  102.                                 <div class="product-detail-price">
  103.                                     {% if not product.OSPrice.getAmount.isZero %}
  104.                                         <div class="price {% if
  105.                                             product.promoDate1 and product.promoDate2 and
  106.                                             date(product.promoDate1) < date() and date(product.promoDate2) > date() %}
  107.                                 price--promo
  108.                             {% endif %}">{{ product.OSPrice }}<small class="price-unit">/{{ product.unit }}</small>
  109.                                         </div>
  110.                                         {% if( product.discount ) %}
  111.                                             {% if( product.OSPrice != product.OSDefaultPrice ) %}
  112.                                                 <p class="old-price">{{ product.OSDefaultPrice }}</p>
  113.                                             {% endif %}
  114.                                             <div class="promo">-{{ product.discount }}%</div>
  115.                                         {% endif %}
  116.                                     {% endif %}
  117.                                     {% if
  118.                                         product.promoDate1 and product.promoDate2 and
  119.                                         date(product.promoDate1) < date() and date(product.promoDate2) > date() %}
  120.                                         {# Show promo price even when prices should not show #}
  121.                                         {% if product.OSPrice.getAmount.isZero %}
  122.                                             {% if product.promoPrice %}
  123.                                                 <div class="price price--promo">{{ product.promoPrice | currency }}
  124.                                                     <small class="price-unit">/{{ product.unit }}</small></div>
  125.                                             {% endif %}
  126.                                             {% if( product.promoPercentage ) %}
  127.                                                 <div class="promo">-{{ product.promoPercentage }}%</div>
  128.                                             {% endif %}
  129.                                         {% endif %}
  130.                                         <p class="date">
  131.                                             ({{ 'Promotie vanaf'|trans }} {{ product.promoDate1|date('d/m/Y') }} {{ 'tot'|trans }} {{ product.promoDate2|date('d/m/Y') }}
  132.                                             )</p>
  133.                                     {% endif %}
  134.                                 </div>
  135.                             </div>
  136.                             <div class="col-auto ms-auto">
  137.                                 <add-to-cart
  138.                                     product-id="{{ product.id }}"
  139.                                     unit="{{ product.unit }}"
  140.                                     minimum-unit="{{ 0 + product.unitMinimum }}"
  141.                                     amount-in-cart="{{ cartItems[product.id] ?? 0 }}"
  142.                                 ></add-to-cart>
  143.                             </div>
  144.                         </div><!--/ .row -->
  145.                         {% if product.onOrder %}
  146.                             {% set orderMessage = product_order_message(product) %}
  147.                             {% if orderMessage %}
  148.                                 <div class="alert alert-warning d-flex align-items-start" role="alert">
  149.                                     <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 16 16" fill="currentColor" class="flex-shrink-0 me-2 mt-1" aria-hidden="true">
  150.                                         <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.286.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
  151.                                     </svg>
  152.                                     <span style="white-space: pre-wrap;">{{ orderMessage }}</span>
  153.                                 </div>
  154.                             {% endif %}
  155.                         {% endif %}
  156.                         {% set default_tab = null %}
  157.                         <ul class="nav nav--tabs" id="nav-tab" role="tablist">
  158.                             {% if product.ingredients %}
  159.                                 {% set default_tab = 1 %}
  160.                                 <li class="nav-item">
  161.                                     <button class="nav-link {{ default_tab == 1 ? 'active' : '' }}" id="nav-tab-1"
  162.                                             data-bs-toggle="tab" data-bs-target="#tab-1" role="tab"
  163.                                             aria-selected="true">{{ 'Ingrediënten'|trans }}</button>
  164.                                 </li>
  165.                             {% endif %}
  166.                             {% if product.description %}
  167.                                 {% set default_tab = default_tab ? default_tab : 2 %}
  168.                                 <li class="nav-item">
  169.                                     <button class="nav-link {{ default_tab == 2 ? 'active': '' }}" id="nav-tab-2"
  170.                                             data-bs-toggle="tab" data-bs-target="#tab-2" role="tab"
  171.                                             aria-selected="true">{{ 'Omschrijving'|trans }}</button>
  172.                                 </li>
  173.                             {% endif %}
  174.                             {% if product.nutrients %}
  175.                                 {% set default_tab = default_tab ? default_tab : 3 %}
  176.                                 <li class="nav-item">
  177.                                     <button class="nav-link {{ default_tab == 3 ? 'active' : '' }}" id="nav-tab-3"
  178.                                             data-bs-toggle="tab" data-bs-target="#tab-3" role="tab"
  179.                                             aria-selected="false">{{ 'Voedingswaarde'|trans }}</button>
  180.                                 </li>
  181.                             {% endif %}
  182.                             {% if allergens and (allergens|length) > 0 %}
  183.                                 {% set default_tab = default_tab ? default_tab : 4 %}
  184.                                 <li class="nav-item">
  185.                                     <button class="nav-link {{ default_tab == 4 ? 'active' : '' }}" id="nav-tab-4"
  186.                                             data-bs-toggle="tab" data-bs-target="#tab-4" role="tab"
  187.                                             aria-selected="false">{{ 'Wettelijke allergenen'|trans }}</button>
  188.                                 </li>
  189.                             {% endif %}
  190.                             {% if product.psinfoodDocuments %}
  191.                                 {% set default_tab = default_tab ? default_tab : 5 %}
  192.                                 <li class="nav-item">
  193.                                     <button class="nav-link {{ default_tab == 5 ? 'active' : '' }}" id="nav-tab-5"
  194.                                             data-bs-toggle="tab" data-bs-target="#tab-5" role="tab"
  195.                                             aria-selected="false">{{ 'Documenten'|trans }}</button>
  196.                                 </li>
  197.                             {% endif %}
  198.                         </ul>
  199.                         <div class="tab-content" id="tab-content">
  200.                             {% if product.ingredients %}
  201.                                 <div class="tab-pane fade {{ default_tab == 1 ? 'show active' : '' }}" id="tab-1"
  202.                                      aria-labelledby="nav-tab-1" role="tabpanel">
  203.                                     {{ product.ingredients }}
  204.                                 </div>
  205.                             {% endif %}
  206.                             {% if product.description %}
  207.                                 <div class="tab-pane fade {{ default_tab == 2 ? 'show active' : '' }}" id="tab-2"
  208.                                      aria-labelledby="nav-tab-2" role="tabpanel">
  209.                                     {{ product.description|raw|nl2br }}
  210.                                 </div>
  211.                             {% endif %}
  212.                             {% if product.nutrients %}
  213.                                 <div class="tab-pane fade {{ default_tab == 3 ? 'show active' : '' }}" id="tab-3"
  214.                                      aria-labelledby="nav-tab-3" role="tabpanel">
  215.                                     <table class="table">
  216.                                         {% for nutrient in product.nutrients|json_decode %}
  217.                                             <tr>
  218.                                                 <td>{{ nutrient.name }}:</td>
  219.                                                 <td class="text-end">{{ nutrient.value }} {{ nutrient.unit }}</td>
  220.                                             </tr>
  221.                                         {% endfor %}
  222.                                     </table>
  223.                                 </div>
  224.                             {% endif %}
  225.                             {% if allergens %}
  226.                                 <div class="tab-pane fade {{ default_tab == 4 ? 'show active' : '' }}" id="tab-4"
  227.                                      aria-labelledby="nav-tab-4" role="tabpanel">
  228.                                     {% set counter = 0 %}
  229.                                     {% for allergen_type in allergens %}
  230.                                         {% if allergen_type and allergen_type.fields|length %}
  231.                                             {% set counter = counter + 1 %}
  232.                                             <p><strong>{{ allergen_type['title'] }}:</strong></p>
  233.                                             <ul class="ingredients">
  234.                                                 {% for allergen in allergen_type.fields %}
  235.                                                     <li>{{ allergen }}</li>
  236.                                                 {% endfor %}
  237.                                             </ul>
  238.                                         {% endif %}
  239.                                     {% endfor %}
  240.                                     {% if counter == 0 %}
  241.                                         <p>{{ 'Geen allergeeninformatie beschikbaar voor dit product'|trans }}</p>
  242.                                     {% endif %}
  243.                                 </div>
  244.                             {% endif %}
  245.                             {% if product.psinfoodDocuments %}
  246.                                 <div class="tab-pane fade {{ default_tab == 5 ? 'show active' : '' }}" id="tab-5"
  247.                                      aria-labelledby="nav-tab-5" role="tabpanel">
  248.                                     <ul class="ingredients">
  249.                                         {% for document in product.psinfoodDocuments|json_decode %}
  250.                                             <li>
  251.                                                 <a href="{{ document.downloadurl }}">
  252.                                                     {{ document.labelname.value }}
  253.                                                     {% if document.title.value is same as('string') %}
  254.                                                         {{ document.title.value }}
  255.                                                     {% endif %}
  256.                                                 </a>
  257.                                             </li>
  258.                                         {% endfor %}
  259.                                     </ul>
  260.                                 </div>
  261.                             {% endif %}
  262.                         </div>
  263.                     </div>
  264.                 </div><!--/ .row -->
  265.             </div>
  266.         </div><!--/ .container-fluid -->
  267.     </section>
  268. {% endblock %}