templates/shop/shop_index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block metas %}
  3. <meta name="title" content="Nos huiles essentielles naturelles - Tany mena">
  4. <meta name="description" content="Retrouvez nos huiles essentielles 100% naturelles et produits dérivés de la forêt de Madagascar">
  5. {% endblock %}
  6. {% block title %}{% trans from 'messages.shop' %}Nos produits - Tany Mena{% endtrans %}{% endblock %}
  7. {% block stylesheets %}
  8. {{ parent() }}
  9. {% endblock %}
  10. {% block body %}
  11. {% set banner_title = 'Nos produits'|trans %}
  12. {% set banner_subtitle_2 = 'Boutique'|trans %}
  13. {% include "/partials/_banner.html.twig" %}
  14. <!--shop area start-->
  15. <section class="shop_area shop_reverse my-4">
  16. <div class="container">
  17. <div class="row">
  18. <div class="col-lg-3 col-md-12 mt-4">
  19. <!--sidebar widget start-->
  20. <aside class="sidebar_widget">
  21. <div class="widget_inner">
  22. <div>
  23. <div class="widget_list widget_color">
  24. <h3 class="text-black fw-bolder">{% trans from 'messages.shop' %}Options de recherche{% endtrans %}</h3>
  25. {{ form_start(form, {'attr': {'class': 'filter-form filter-form--vertical', 'id': 'product-filter-form'}}) }}
  26. <div class="my-form-widget" style="display:none;">
  27. {{form_label(form.favorite)}}
  28. {{form_widget(form.favorite,{ 'attr': {'class': 'form-control'} })}}
  29. {{form_errors(form.favorite)}}
  30. </div>
  31. <div class="my-form-widget">
  32. {{form_label(form.name)}}
  33. {{form_widget(form.name,{ 'attr': {'class': 'form-control'} })}}
  34. {{form_errors(form.name)}}
  35. </div>
  36. <div class="my-form-widget" style="display:none;">
  37. {{form_label(form.description)}}
  38. {{form_widget(form.description,{ 'attr': {'class': 'form-control'} })}}
  39. {{form_errors(form.description)}}
  40. </div>
  41. <div class="my-form-widget" style="display:none;">
  42. {{form_label(form.productCategory)}}
  43. {{form_widget(form.productCategory,{ 'attr': {'class': 'form-control'} })}}
  44. {{form_errors(form.productCategory)}}
  45. </div>
  46. <div class="my-form-widget" style="display:none;">
  47. {{form_label(form.prixMin)}}
  48. {{form_widget(form.prixMin,{ 'attr': {'class': 'form-control'} })}}
  49. {{form_errors(form.prixMin)}}
  50. </div>
  51. <div class="my-form-widget" style="display:none;">
  52. {{form_label(form.prixMax)}}
  53. {{form_widget(form.prixMax,{ 'attr': {'class': 'form-control'} })}}
  54. {{form_errors(form.prixMax)}}
  55. </div>
  56. <div class="my-form-widget" style="display:none;">
  57. {{form_label(form.orderBy)}}
  58. {{form_widget(form.orderBy,{ 'attr': {'class': 'form-control'} })}}
  59. {{form_errors(form.orderBy)}}
  60. </div>
  61. <div class="my-form-widget" style="display:none;">
  62. {{form_label(form.order)}}
  63. {{form_widget(form.order,{ 'attr': {'class': 'form-control'} })}}
  64. {{form_errors(form.order)}}
  65. </div>
  66. <button class="btn btn-dark mt-2" type="submit">{% trans from 'messages.shop' %}Rechercher{% endtrans %}</button>
  67. {{ form_end(form) }}
  68. </div>
  69. <div class="widget_list tags_widget">
  70. <h3 class="text-black fw-bolder">{% trans from 'messages.shop' %}Catégorie de produit{% endtrans %}</h3>
  71. <div class="tag_cloud">
  72. <a href="#" onclick="filterByProductCategory('')" class="{{ product_filter.productCategory == null ? 'active' : ''}}">{% trans %}Tous{% endtrans %}</a>
  73. {% for productCategory in productCategories %}
  74. <a href="#" onclick="filterByProductCategory({{productCategory.id}})" class="{{ product_filter.productCategory != null and product_filter.productCategory.id == productCategory.id ? 'active' : ''}}">{{productCategory.getNameByDefaultLocale}}</a>
  75. {% endfor %}
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </aside>
  81. <!--sidebar widget end-->
  82. </div>
  83. <div class="col-lg-9 col-md-12">
  84. <div class="w-100 error-message">
  85. {% for label, messages in app.flashes %}
  86. {% for message in messages %}
  87. <div class="alert alert-{{label}} p-3 text-center" role="alert" style="background-color: #E9E6DF; border-color: #E9E6DF; color: #333;">
  88. <div class="alert-body">
  89. {{message | raw }}
  90. </div>
  91. </div>
  92. {% endfor %}
  93. {% endfor %}
  94. </div>
  95. <!--shop wrapper start-->
  96. <div class="row shop_wrapper">
  97. {% if products|length == 0 %}
  98. <div class="alert alert-danger p-3 text-center" role="alert">
  99. <div class="alert-body">
  100. {% trans from 'messages.shop' %}Aucun produit trouvé{% endtrans %}.
  101. </div>
  102. </div>
  103. {% endif %}
  104. {% for product in products %}
  105. <!-- One Product Starts -->
  106. {% include '/partials/product/_product_1.html.twig' with {'product' : product} %}
  107. {% include '/partials/product/product_details_modal.html.twig' with {'product' : product, 'isAdmin':false} %}
  108. <!-- One Product Ends -->
  109. {% endfor %}
  110. </div>
  111. <div class="d-flex justify-content-center scale-up-center">
  112. {{ knp_pagination_render(products) }}
  113. </div>
  114. <!--shop toolbar end-->
  115. <!--shop wrapper end-->
  116. </div>
  117. </div>
  118. </div>
  119. </section>
  120. <!--shop area end-->
  121. {% endblock %}
  122. {% block javascripts %}
  123. {{ parent() }}
  124. <script type="text/javascript">
  125. window.onload = () => {
  126. /*---slider-range here---*/
  127. let slider = {
  128. min: 0,
  129. max : 100
  130. }
  131. let productAmoutFilter = {
  132. min : $( "#product-slider-range" ).data('minValue'),
  133. max : $( "#product-slider-range" ).data('maxValue')
  134. };
  135. productAmoutFilter.min = productAmoutFilter.min == '' ? slider.min : productAmoutFilter.min;
  136. productAmoutFilter.max = productAmoutFilter.max == '' ? slider.max : productAmoutFilter.max;
  137. console.log(productAmoutFilter);
  138. $( "#product-slider-range" ).slider({
  139. range: true,
  140. min: slider.min,
  141. max: slider.max,
  142. values: [ productAmoutFilter.min, productAmoutFilter.max ],
  143. slide: function( event, ui ) {
  144. let min = ui.values[ 0 ];
  145. let max = ui.values[ 1 ];
  146. $( "#product-amount" ).val( min + "€ - " + max +"€" );
  147. $("#product_filter_prixMin").val(min);
  148. $("#product_filter_prixMax").val(max);
  149. }
  150. });
  151. $( "#product-amount" ).val( $( "#product-slider-range" ).slider( "values", 0 ) +
  152. "€ - " + $( "#product-slider-range" ).slider( "values", 1 ) + "€");
  153. // Hide loader
  154. document.getElementById("loading_aroma").classList.add('hide');
  155. };
  156. function filterByFavorites(value){
  157. $( "#product_filter_favorite" ).val(value);
  158. submitForm();
  159. }
  160. function filterByProductCategory(productCategoryId){
  161. $( "#product_filter_productCategory" ).val(productCategoryId);
  162. submitForm();
  163. }
  164. function submitForm(){
  165. $( "#product-filter-form" ).submit();
  166. }
  167. </script>
  168. {% endblock %}