var/cache/dev/twig/2b/2b754329c28dd511700644983c9e7524.php line 252

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* front/dec/listProductDec.html.twig */
  16. class __TwigTemplate_dce492b111a829d4008b1c4348dd61c6 extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->blocks = [
  28.             'title' => [$this'block_title'],
  29.             'meta' => [$this'block_meta'],
  30.             'stylesheets' => [$this'block_stylesheets'],
  31.             'body' => [$this'block_body'],
  32.             'javascripts' => [$this'block_javascripts'],
  33.         ];
  34.     }
  35.     protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  36.     {
  37.         // line 1
  38.         return "front/base.html.twig";
  39.     }
  40.     protected function doDisplay(array $context, array $blocks = []): iterable
  41.     {
  42.         $macros $this->macros;
  43.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  44.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""front/dec/listProductDec.html.twig"));
  45.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  46.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""front/dec/listProductDec.html.twig"));
  47.         $this->parent $this->loadTemplate("front/base.html.twig""front/dec/listProductDec.html.twig"1);
  48.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  49.         
  50.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  51.         
  52.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  53.     }
  54.     // line 2
  55.     /**
  56.      * @return iterable<null|scalar|\Stringable>
  57.      */
  58.     public function block_title(array $context, array $blocks = []): iterable
  59.     {
  60.         $macros $this->macros;
  61.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  62.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  63.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  64.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  65.         yield "Sunshine Elegance | ";
  66.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'2$this->source); })()), "getName", [], "method"falsefalsefalse2), "html"nulltrue);
  67.         yield " ";
  68.         
  69.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  70.         
  71.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  72.         yield from [];
  73.     }
  74.     // line 3
  75.     /**
  76.      * @return iterable<null|scalar|\Stringable>
  77.      */
  78.     public function block_meta(array $context, array $blocks = []): iterable
  79.     {
  80.         $macros $this->macros;
  81.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  82.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""meta"));
  83.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  84.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""meta"));
  85.         // line 4
  86.         yield "    <meta name=\"keywords\" content=\"Chaussures,Chaussures Femme,Jebba,Robe,Bottine\">
  87.     <meta name=\"description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  88.     <meta name=\"author\" content=\"Sunshine-Elegance\">
  89.     <!-- Facebook OG -->
  90.     <meta property=\"og:image\" content=\"";
  91.         // line 8
  92.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("front/assets/imgs/theme/logo3.png"), "html"nulltrue);
  93.         yield "\">
  94.     <meta property=\"og:url\" content=\"https://www.sunshineelegance.tn/\">
  95.     <meta property=\"og:type\" content=\"article\">
  96.     <meta property=\"og:title\" content=\"Sunshine Elegance | Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  97.     <meta property=\"og:description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  98.     <!-- Twitter OG -->
  99.     <meta name=\"twitter:title\" content=\"Sunshine Elegance | Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  100.     <meta name=\"twitter:description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  101.     <meta name=\"twitter:image\" content=\"";
  102.         // line 16
  103.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("front/assets/imgs/theme/logo3.png"), "html"nulltrue);
  104.         yield "\">
  105.     <meta name=\"twitter:card\" content=\"summary_large_image\">
  106. ";
  107.         
  108.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  109.         
  110.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  111.         yield from [];
  112.     }
  113.     // line 19
  114.     /**
  115.      * @return iterable<null|scalar|\Stringable>
  116.      */
  117.     public function block_stylesheets(array $context, array $blocks = []): iterable
  118.     {
  119.         $macros $this->macros;
  120.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  121.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  122.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  123.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  124.         // line 20
  125.         yield "    ";
  126.         yield from $this->yieldParentBlock("stylesheets"$context$blocks);
  127.         yield "
  128.     <style>
  129.         
  130.         .product-cart-wrap .product-img-action-wrap {
  131.             max-height: none;
  132.             width: 100%;
  133.             position: relative;
  134.             overflow: hidden;
  135.             
  136.         }
  137.         .product-img-action-wrap .product-img {
  138.             width: 100%;
  139.             height: auto;
  140.             object-fit: cover;
  141.             display: block;
  142.             
  143.         }
  144.         
  145.         
  146.         .product-badges span {
  147.             font-size: 0.75rem;
  148.             padding: 4px 8px;
  149.             border-radius: 4px;
  150.             font-weight: 500;
  151.         }
  152.         
  153.         
  154.         
  155.         @media (max-width: 768px) {
  156.             .order-mobile-first {
  157.               order: -1 !important;
  158.             }
  159.           }
  160.           /*rendre la barre de filtres plus compacte sur mobile*/
  161.           @media (max-width: 768px) {
  162.             .shop-product-fillter {
  163.               flex-direction: column;
  164.               align-items: flex-start;
  165.               gap: 12px;
  166.             }
  167.           
  168.             .sort-by-product-area {
  169.               flex-direction: column;
  170.               width: 100%;
  171.               gap: 10px;
  172.             }
  173.           
  174.             .sort-by-cover {
  175.               width: 100%;
  176.             }
  177.           
  178.             .sort-by-product-wrap {
  179.               display: flex;
  180.               justify-content: space-between;
  181.               align-items: center;
  182.               padding: 6px 12px;
  183.               background-color: #f7f8f9;
  184.               border: 1px solid #cce7d0;
  185.               border-radius: 20px;
  186.             }
  187.           
  188.             .sort-by-dropdown-wrap {
  189.               flex-grow: 1;
  190.               text-align: right;
  191.             }
  192.           
  193.             .sort-by-dropdown {
  194.               position: absolute;
  195.               left: 0;
  196.               top: 100%;
  197.               z-index: 10;
  198.             }
  199.           }
  200.           
  201.           
  202.           
  203.           /*amélioration affichage des cartes produit*/
  204.           @media (max-width: 768px) {
  205.             .row-product {
  206.               width: 50% !important;
  207.             }
  208.           }
  209.           
  210.           @media (max-width: 480px) {
  211.             .row-product {
  212.               width: 100% !important;
  213.             }
  214.           }
  215.           
  216.     </style>
  217.     <script>
  218.         var category_id = JSON.parse(\"";
  219.         // line 114
  220.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["category_id"]) || array_key_exists("category_id"$context) ? $context["category_id"] : (function () { throw new RuntimeError('Variable "category_id" does not exist.'114$this->source); })()), "js"), "html"nulltrue);
  221.         yield "\")
  222.         // Filtres des tailles et couleurs
  223.         var taillesFilter = ";
  224.         // line 116
  225.         yield json_encode(CoreExtension::getAttribute($this->env$this->source, (isset($context["Globals"]) || array_key_exists("Globals"$context) ? $context["Globals"] : (function () { throw new RuntimeError('Variable "Globals" does not exist.'116$this->source); })()), "getTailles", [(isset($context["categories"]) || array_key_exists("categories"$context) ? $context["categories"] : (function () { throw new RuntimeError('Variable "categories" does not exist.'116$this->source); })())], "method"falsefalsefalse116));
  226.         yield ";
  227.         var couleursFilter = ";
  228.         // line 117
  229.         yield json_encode(CoreExtension::getAttribute($this->env$this->source, (isset($context["Globals"]) || array_key_exists("Globals"$context) ? $context["Globals"] : (function () { throw new RuntimeError('Variable "Globals" does not exist.'117$this->source); })()), "getCouleurs", [(isset($context["categories"]) || array_key_exists("categories"$context) ? $context["categories"] : (function () { throw new RuntimeError('Variable "categories" does not exist.'117$this->source); })())], "method"falsefalsefalse117));
  230.         yield ";
  231.         
  232.         
  233.     </script>
  234. ";
  235.         
  236.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  237.         
  238.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  239.         yield from [];
  240.     }
  241.     // line 124
  242.     /**
  243.      * @return iterable<null|scalar|\Stringable>
  244.      */
  245.     public function block_body(array $context, array $blocks = []): iterable
  246.     {
  247.         $macros $this->macros;
  248.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  249.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  250.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  251.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  252.         // line 125
  253.         yield "    ";
  254.         // line 126
  255.         yield "    <main class=\"main\" id=\"app\" v-cloak>
  256.         <div class=\"page-header breadcrumb-wrap\">
  257.             <div class=\"container\">
  258.                 <div class=\"breadcrumb\">
  259.                     <a href=\"";
  260.         // line 130
  261.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("home");
  262.         yield "\" rel=\"nofollow\">Acceuil</a>
  263.                     ";
  264.         // line 131
  265.         if ((CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, ($context["categorie"] ?? null), "parent", [], "any"falsetruefalse131), "parent", [], "any"truetruefalse131) &&  !(null === CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'131$this->source); })()), "parent", [], "any"falsefalsefalse131), "parent", [], "any"falsefalsefalse131)))) {
  266.             // line 132
  267.             yield "                    <span></span>
  268.                         <a href=\"";
  269.             // line 133
  270.             yield ((((isset($context["CATEGORY_URL_TYPE"]) || array_key_exists("CATEGORY_URL_TYPE"$context) ? $context["CATEGORY_URL_TYPE"] : (function () { throw new RuntimeError('Variable "CATEGORY_URL_TYPE" does not exist.'133$this->source); })()) == 1)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("category_dec", ["id" => CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'133$this->source); })()), "parent", [], "any"falsefalsefalse133), "parent", [], "any"falsefalsefalse133), "id", [], "any"falsefalsefalse133), "name" => $this->extensions['Twig\Extra\String\StringExtension']->createSlug(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'133$this->source); })()), "parent", [], "any"falsefalsefalse133), "parent", [], "any"falsefalsefalse133), "name", [], "any"falsefalsefalse133))]), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("category_new", ["id" => CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'133$this->source); })()), "parent", [], "any"falsefalsefalse133), "parent", [], "any"falsefalsefalse133), "id", [], "any"falsefalsefalse133), "name" => $this->extensions['Twig\Extra\String\StringExtension']->createSlug(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'133$this->source); })()), "parent", [], "any"falsefalsefalse133), "parent", [], "any"falsefalsefalse133), "name", [], "any"falsefalsefalse133))]), "html"nulltrue)));
  271.             yield "\"rel=\"nofollow\">
  272.                             ";
  273.             // line 134
  274.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'134$this->source); })()), "parent", [], "any"falsefalsefalse134), "parent", [], "any"falsefalsefalse134), "name", [], "any"falsefalsefalse134), "html"nulltrue);
  275.             yield "</a>
  276.                     ";
  277.         }
  278.         // line 136
  279.         yield "                    ";
  280.         if (( !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'136$this->source); })()), "parent", [], "any"falsefalsefalse136)) &&  !(null === CoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'136$this->source); })()), "parent", [], "any"falsefalsefalse136)))) {
  281.             // line 137
  282.             yield "                    <span></span>
  283.                         <a href=\"";
  284.             // line 138
  285.             yield ((((isset($context["CATEGORY_URL_TYPE"]) || array_key_exists("CATEGORY_URL_TYPE"$context) ? $context["CATEGORY_URL_TYPE"] : (function () { throw new RuntimeError('Variable "CATEGORY_URL_TYPE" does not exist.'138$this->source); })()) == 1)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("category_dec", ["id" => CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'138$this->source); })()), "parent", [], "any"falsefalsefalse138), "id", [], "any"falsefalsefalse138), "name" => $this->extensions['Twig\Extra\String\StringExtension']->createSlug(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'138$this->source); })()), "parent", [], "any"falsefalsefalse138), "name", [], "any"falsefalsefalse138))]), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("category_new", ["id" => CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'138$this->source); })()), "parent", [], "any"falsefalsefalse138), "id", [], "any"falsefalsefalse138), "name" => $this->extensions['Twig\Extra\String\StringExtension']->createSlug(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'138$this->source); })()), "parent", [], "any"falsefalsefalse138), "name", [], "any"falsefalsefalse138))]), "html"nulltrue)));
  286.             yield "\"rel=\"nofollow\">
  287.                             ";
  288.             // line 139
  289.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'139$this->source); })()), "parent", [], "any"falsefalsefalse139), "name", [], "any"falsefalsefalse139), "html"nulltrue);
  290.             yield "</a>
  291.                     ";
  292.         }
  293.         // line 141
  294.         yield "                    <span></span> ";
  295.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["categorie"]) || array_key_exists("categorie"$context) ? $context["categorie"] : (function () { throw new RuntimeError('Variable "categorie" does not exist.'141$this->source); })()), "getName", [], "method"falsefalsefalse141), "html"nulltrue);
  296.         yield "
  297.                 </div>
  298.             </div>
  299.         </div>
  300.        ";
  301.         // line 147
  302.         yield "<section class=\"mt-50 mb-50\">
  303.     <div class=\"container\">
  304.         <div class=\"row flex-row-reverse\">
  305.             ";
  306.         // line 151
  307.         yield "            <div class=\"col-lg-9\">
  308.                 ";
  309.         // line 154
  310.         yield "                <div class=\"shop-product-fillter\">
  311.                     ";
  312.         // line 156
  313.         yield "                    <div class=\"totall-product\">
  314.                         <p>Nous avons trouvé <strong class=\"text-brand\">\${ totalItems }</strong> article<span v-if=\"totalItems>1\">s</span> !</p>
  315.                     </div>
  316.                     ";
  317.         // line 161
  318.         yield "                    <div class=\"sort-by-product-area\">
  319.                         ";
  320.         // line 164
  321.         yield "                        <div class=\"sort-by-cover mr-10\">
  322.                             <div class=\"sort-by-product-wrap\">
  323.                                 <div class=\"sort-by\">
  324.                                     <span><i class=\"fi-rs-apps\"></i>Montrer:</span>
  325.                                 </div>
  326.                                 <div class=\"sort-by-dropdown-wrap\">
  327.                                     <span v-show=\"pageSize!=9999\"> \${ pageSize } <i class=\"fi-rs-angle-small-down\"></i></span>
  328.                                     <span v-show=\"pageSize==9999\"> Tous <i class=\"fi-rs-angle-small-down\"></i></span>
  329.                                 </div>
  330.                             </div>
  331.                             ";
  332.         // line 175
  333.         yield "                            <div class=\"sort-by-dropdown\">
  334.                                 <ul>
  335.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==10 }\" href=\"#&\" @click=\"pageSize=10;getData(page,true)\">10</a></li>
  336.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==20 }\" href=\"#&\" @click=\"pageSize=20;getData(page,true)\">20</a></li>
  337.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==40 }\" href=\"#&\" @click=\"pageSize=40;getData(page,true)\">40</a></li>
  338.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==9999 }\" href=\"#&\" @click=\"pageSize=9999;getData(page,true)\">Tous</a></li>
  339.                                 </ul>
  340.                             </div>
  341.                         </div>
  342.                         ";
  343.         // line 186
  344.         yield "                        <div class=\"sort-by-cover\">
  345.                             <div class=\"sort-by-product-wrap\">
  346.                                 <div class=\"sort-by\">
  347.                                     <span><i class=\"fi-rs-apps-sort\"></i>Trier par:</span>
  348.                                 </div>
  349.                                 <div class=\"sort-by-dropdown-wrap\">
  350.                                     <span v-show=\"orderBy==1\"> Nom: A à Z <i class=\"fi-rs-angle-small-down\"></i></span>
  351.                                     <span v-show=\"orderBy==2\"> Nom: Z à A <i class=\"fi-rs-angle-small-down\"></i></span>
  352.                                     <span v-show=\"orderBy==3\"> Prix: croissant <i class=\"fi-rs-angle-small-down\"></i></span>
  353.                                     <span v-show=\"orderBy==4\"> Prix: décroissant <i class=\"fi-rs-angle-small-down\"></i></span>
  354.                                     <span v-show=\"orderBy==5\"> Date ajout: croissant<i class=\"fi-rs-angle-small-down\"></i></span>
  355.                                     <span v-show=\"orderBy==6\"> Date ajout: décroissant<i class=\"fi-rs-angle-small-down\"></i></span>
  356.                                 </div>
  357.                             </div>
  358.                             ";
  359.         // line 201
  360.         yield "                            <div class=\"sort-by-dropdown\">
  361.                                 <ul>
  362.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==1 }\" href=\"#&\" @click=\"orderBy=1;getData(page,true)\">Nom: A à Z</a></li>
  363.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==2 }\" href=\"#&\" @click=\"orderBy=2;getData(page,true)\">Nom: Z à A</a></li>
  364.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==3 }\" href=\"#&\" @click=\"orderBy=3;getData(page,true)\">Prix: croissant</a></li>
  365.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==4 }\" href=\"#&\" @click=\"orderBy=4;getData(page,true)\">Prix: décroissant</a></li>
  366.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==5 }\" href=\"#&\" @click=\"orderBy=5;getData(page,true)\">Date ajout: croissant</a></li>
  367.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==6 }\" href=\"#&\" @click=\"orderBy=6;getData(page,true)\">Date ajout: décroissant</a></li>
  368.                                 </ul>
  369.                             </div>
  370.                         </div>
  371.                     </div>
  372.                 </div>
  373.                 ";
  374.         // line 216
  375.         yield "                <div class=\"row product-grid-3\">
  376.                     ";
  377.         // line 218
  378.         yield "                    <div class=\"col-lg-6 col-md-6 col-12 col-sm-6 row-product\" v-for=\"entry in products\">
  379.                         <div class=\"product-cart-wrap mb-30 col-product\">
  380.                             ";
  381.         // line 221
  382.         yield "                            <div class=\"product-img-action-wrap\" @click=\"openProduct(entry.idProduit,entry.name,entry.id)\">
  383.                                 <div class=\"product-img product-img-zoom\">
  384.                                     <a href=\"#&\">
  385.                                         <img class=\"default-img product-img\" :src=\"'";
  386.         // line 224
  387.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["APP_URL"]) || array_key_exists("APP_URL"$context) ? $context["APP_URL"] : (function () { throw new RuntimeError('Variable "APP_URL" does not exist.'224$this->source); })()), "html"nulltrue);
  388.         yield "/images/300-400/'+entry.image\" :alt=\"entry.name\">
  389.                                     </a>
  390.                                 </div>
  391.                                 
  392.                                 ";
  393.         // line 229
  394.         yield "                                <div class=\"product-badges product-badges-position product-badges-mrg\" v-if=\"(entry.promo && entry.promo.isValid) || !entry.stock || entry.isNew\">
  395.                                     <span v-if=\"!entry.stock\" class=\"hot mr-1\">Rupture de stock</span>
  396.                                     <span v-if=\"entry.isNew\" class=\"new mr-1\">Nouveau</span>
  397.                                     <span class=\"best\" v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='amount'\">-\${ entry.promo.discountValue.toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  398.                                     <span class=\"best\" v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='percent'\">-\${ entry.promo.discountValue } %</span>
  399.                                 </div>
  400.                             </div>
  401.                             ";
  402.         // line 237
  403.         yield "                            <div class=\"product-content-wrap\">
  404.                                 <h2 @click=\"openProduct(entry.idProduit,entry.name,entry.id)\">
  405.                                     <div class=\"menu-item card-title\">\${ entry.name }</div>
  406.                                 </h2>
  407.                                 <div class=\"product-price\">
  408.                                   <span v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='percent'\">\${ (entry.priceTTC-(entry.priceTTC*entry.promo.discountValue/100)).toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  409.                                     <span class=\"old-price\" v-if=\"entry.promo && entry.promo.isValid\">\${ entry.priceTTC.toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  410.                                 </div>
  411.                                 <div class=\"product-action-1 show\" @click=\"getProduit(entry.idProduit,entry.id)\">
  412.                                     <button aria-label=\"Acheter maintenant\" class=\"action-btn hover-up\"><i class=\"fi-rs-shopping-bag-add\"></i></button>
  413.                                 </div>
  414.                             </div>
  415.                         </div>
  416.                     </div>
  417.                 </div>
  418.                 ";
  419.         // line 254
  420.         yield "                <div class=\"pagination-area mt-15 mb-sm-5 mb-lg-0\" v-show=\"pages.length>1\">
  421.                     <nav aria-label=\"Page navigation example\">
  422.                         <ul class=\"pagination justify-content-start\">
  423.                             <li class=\"page-item\" v-show=\"page>1\" @click=\"getData(page-1)\"><a class=\"page-link\" href=\"#&\"><i class=\"fi-rs-angle-double-small-left\"></i></a></li>
  424.                             <li v-for=\"entry in pages\" class=\"page-item\" @click=\"getData(entry)\" :class=\"{ active: entry==page }\"><a class=\"page-link\" href=\"#&\">\${ entry }</a></li>
  425.                             <li class=\"page-item\" v-show=\"page<pages[pages.length-1]\" @click=\"getData(page+1)\"><a class=\"page-link\" href=\"#&\"><i class=\"fi-rs-angle-double-small-right\"></i></a></li>
  426.                         </ul>
  427.                     </nav>
  428.                 </div>
  429.             </div>
  430.             ";
  431.         // line 266
  432.         yield "            <div class=\"col-lg-3 order-mobile-first primary-sidebar sticky-sidebar\">
  433.                 ";
  434.         // line 268
  435.         yield "                <button class=\"btn btn-outline-primary w-100 d-md-none mb-3\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#mobileFilters\" aria-expanded=\"false\" aria-controls=\"mobileFilters\">
  436.                     <i class=\"fi-rs-filter me-2\"></i> Affiner la recherche
  437.                 </button>
  438.                 <div class=\"collapse d-md-block\" id=\"mobileFilters\">
  439.                     <div class=\"sidebar-widget price_range range mb-30\">
  440.                 
  441.                         
  442.                         <div class=\"widget-header position-relative mb-20 pb-10\">
  443.                             <h5 class=\"widget-title mb-10\">Filter par prix</h5>
  444.                             <div class=\"bt-1 border-color-1\"></div>
  445.                         </div>
  446.                         ";
  447.         // line 280
  448.         yield "                        <div class=\"price-filter\">
  449.                             <div class=\"price-filter-inner\">
  450.                                 <div id=\"slider-range\"></div>
  451.                                 <div class=\"price_slider_amount\">
  452.                                     <div class=\"label-input\">
  453.                                         <span>Intervalle:</span><input type=\"text\" id=\"amount\" name=\"price\" placeholder=\"Ajouter le prix\"/>
  454.                                     </div>
  455.                                 </div>
  456.                             </div>
  457.                         </div>
  458.                         <button class=\"btn btn-sm btn-default mt-10\" :disabled=\"disabled\" @click=\"getData(page,true)\">
  459.                             <i class=\"fi-rs-filter mr-5\"></i> Filtrer
  460.                         </button>
  461.                         ";
  462.         // line 295
  463.         yield "                        <div class=\"list-group\" v-if=\"totalItems\">
  464.                             <div class=\"list-group-item mb-10 mt-10\">
  465.                                 <label class=\"fw-900\">Tailles</label>
  466.                                 <div class=\"custome-checkbox\">
  467.                                     <div class=\"row\">
  468.                                         <div v-for=\"entry in taillesFilter\" class=\"col-4\" style=\"white-space: nowrap\">
  469.                                             <input class=\"form-check-input\" type=\"checkbox\" name=\"checkbox\" :id=\"'exampleCheckbox'+entry.name\" v-model=\"entry.selected\" @change=\"getData(page,true)\">
  470.                                             <label class=\"form-check-label\" :for=\"'exampleCheckbox'+entry.name\"><span>\${ entry.name }</span></label>
  471.                                         </div>
  472.                                     </div>
  473.                                 </div>
  474.                                 <label class=\"fw-900 mt-15\">Couleurs</label>
  475.                                 <div class=\"attr-detail attr-color mb-15\">
  476.                                     <ul class=\"list-filter color-filter multi\">
  477.                                         <li :class=\"entry.selected ? 'active' : ''\" v-for=\"entry in couleursFilter\" @click=\"entry.selected = !entry.selected; getData(page,true)\">
  478.                                             <a href=\"#\" :title=\"entry.name\">
  479.                                                 <span :style=\"{ 'background-color': entry.code ? entry.code :'#fff','border': '1px solid #ddd' }\"></span>
  480.                                             </a>
  481.                                         </li>
  482.                                     </ul>
  483.                                 </div>
  484.                             </div>
  485.                         </div>
  486.                     </div>
  487.                 </div>
  488.             </div>
  489.             ";
  490.         // line 322
  491.         yield "        </div>
  492.     </div>
  493. </section>
  494.     </main>
  495.     ";
  496.         
  497.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  498.         
  499.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  500.         yield from [];
  501.     }
  502.     // line 329
  503.     /**
  504.      * @return iterable<null|scalar|\Stringable>
  505.      */
  506.     public function block_javascripts(array $context, array $blocks = []): iterable
  507.     {
  508.         $macros $this->macros;
  509.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  510.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  511.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  512.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  513.         // line 330
  514.         yield "    ";
  515.         yield from $this->yieldParentBlock("javascripts"$context$blocks);
  516.         yield "
  517.     <script>
  518.         // Reinialiser les filtres de recherche
  519.         window.onbeforeunload = function () {
  520.             //unchecked your check box here.
  521.             \$(\"input[type='checkbox']\").prop('checked', false);
  522.             //app.getData(app.page);
  523.         };
  524.     </script>
  525.     <script src=\"";
  526.         // line 339
  527.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("front/assets/scripts/dec/index.js"), "html"nulltrue);
  528.         yield "\"></script>
  529. ";
  530.         
  531.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  532.         
  533.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  534.         yield from [];
  535.     }
  536.     /**
  537.      * @codeCoverageIgnore
  538.      */
  539.     public function getTemplateName(): string
  540.     {
  541.         return "front/dec/listProductDec.html.twig";
  542.     }
  543.     /**
  544.      * @codeCoverageIgnore
  545.      */
  546.     public function isTraitable(): bool
  547.     {
  548.         return false;
  549.     }
  550.     /**
  551.      * @codeCoverageIgnore
  552.      */
  553.     public function getDebugInfo(): array
  554.     {
  555.         return array (  575 => 339,  562 => 330,  549 => 329,  533 => 322,  505 => 295,  489 => 280,  476 => 268,  473 => 266,  460 => 254,  442 => 237,  433 => 229,  426 => 224,  421 => 221,  417 => 218,  414 => 216,  398 => 201,  382 => 186,  370 => 175,  358 => 164,  354 => 161,  348 => 156,  345 => 154,  341 => 151,  336 => 147,  327 => 141,  322 => 139,  318 => 138,  315 => 137,  312 => 136,  307 => 134,  303 => 133,  300 => 132,  298 => 131,  294 => 130,  288 => 126,  286 => 125,  273 => 124,  256 => 117,  252 => 116,  247 => 114,  149 => 20,  136 => 19,  122 => 16,  111 => 8,  105 => 4,  92 => 3,  67 => 2,  44 => 1,);
  556.     }
  557.     public function getSourceContext(): Source
  558.     {
  559.         return new Source("{% extends 'front/base.html.twig' %}
  560. {% block title %}Sunshine Elegance | {{ categorie.getName() }} {% endblock %}
  561. {% block meta %}
  562.     <meta name=\"keywords\" content=\"Chaussures,Chaussures Femme,Jebba,Robe,Bottine\">
  563.     <meta name=\"description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  564.     <meta name=\"author\" content=\"Sunshine-Elegance\">
  565.     <!-- Facebook OG -->
  566.     <meta property=\"og:image\" content=\"{{ asset('front/assets/imgs/theme/logo3.png') }}\">
  567.     <meta property=\"og:url\" content=\"https://www.sunshineelegance.tn/\">
  568.     <meta property=\"og:type\" content=\"article\">
  569.     <meta property=\"og:title\" content=\"Sunshine Elegance | Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  570.     <meta property=\"og:description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  571.     <!-- Twitter OG -->
  572.     <meta name=\"twitter:title\" content=\"Sunshine Elegance | Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  573.     <meta name=\"twitter:description\" content=\"Marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne\">
  574.     <meta name=\"twitter:image\" content=\"{{ asset('front/assets/imgs/theme/logo3.png') }}\">
  575.     <meta name=\"twitter:card\" content=\"summary_large_image\">
  576. {% endblock %}
  577. {% block stylesheets %}
  578.     {{ parent() }}
  579.     <style>
  580.         
  581.         .product-cart-wrap .product-img-action-wrap {
  582.             max-height: none;
  583.             width: 100%;
  584.             position: relative;
  585.             overflow: hidden;
  586.             
  587.         }
  588.         .product-img-action-wrap .product-img {
  589.             width: 100%;
  590.             height: auto;
  591.             object-fit: cover;
  592.             display: block;
  593.             
  594.         }
  595.         
  596.         
  597.         .product-badges span {
  598.             font-size: 0.75rem;
  599.             padding: 4px 8px;
  600.             border-radius: 4px;
  601.             font-weight: 500;
  602.         }
  603.         
  604.         
  605.         
  606.         @media (max-width: 768px) {
  607.             .order-mobile-first {
  608.               order: -1 !important;
  609.             }
  610.           }
  611.           /*rendre la barre de filtres plus compacte sur mobile*/
  612.           @media (max-width: 768px) {
  613.             .shop-product-fillter {
  614.               flex-direction: column;
  615.               align-items: flex-start;
  616.               gap: 12px;
  617.             }
  618.           
  619.             .sort-by-product-area {
  620.               flex-direction: column;
  621.               width: 100%;
  622.               gap: 10px;
  623.             }
  624.           
  625.             .sort-by-cover {
  626.               width: 100%;
  627.             }
  628.           
  629.             .sort-by-product-wrap {
  630.               display: flex;
  631.               justify-content: space-between;
  632.               align-items: center;
  633.               padding: 6px 12px;
  634.               background-color: #f7f8f9;
  635.               border: 1px solid #cce7d0;
  636.               border-radius: 20px;
  637.             }
  638.           
  639.             .sort-by-dropdown-wrap {
  640.               flex-grow: 1;
  641.               text-align: right;
  642.             }
  643.           
  644.             .sort-by-dropdown {
  645.               position: absolute;
  646.               left: 0;
  647.               top: 100%;
  648.               z-index: 10;
  649.             }
  650.           }
  651.           
  652.           
  653.           
  654.           /*amélioration affichage des cartes produit*/
  655.           @media (max-width: 768px) {
  656.             .row-product {
  657.               width: 50% !important;
  658.             }
  659.           }
  660.           
  661.           @media (max-width: 480px) {
  662.             .row-product {
  663.               width: 100% !important;
  664.             }
  665.           }
  666.           
  667.     </style>
  668.     <script>
  669.         var category_id = JSON.parse(\"{{ category_id|e('js') }}\")
  670.         // Filtres des tailles et couleurs
  671.         var taillesFilter = {{ Globals.getTailles(categories)|json_encode|raw }};
  672.         var couleursFilter = {{ Globals.getCouleurs(categories)|json_encode|raw }};
  673.         
  674.         
  675.     </script>
  676. {% endblock %}
  677. {% block body %}
  678.     {# {% verbatim %} #}
  679.     <main class=\"main\" id=\"app\" v-cloak>
  680.         <div class=\"page-header breadcrumb-wrap\">
  681.             <div class=\"container\">
  682.                 <div class=\"breadcrumb\">
  683.                     <a href=\"{{ path('home') }}\" rel=\"nofollow\">Acceuil</a>
  684.                     {% if categorie.parent.parent is defined and  categorie.parent.parent is not null %}
  685.                     <span></span>
  686.                         <a href=\"{{ CATEGORY_URL_TYPE == 1 ? path('category_dec', {id: categorie.parent.parent.id , name :categorie.parent.parent.name|slug }) : path('category_new', {id: categorie.parent.parent.id , name :categorie.parent.parent.name|slug }) }}\"rel=\"nofollow\">
  687.                             {{ categorie.parent.parent.name }}</a>
  688.                     {% endif %}
  689.                     {% if categorie.parent is not empty and  categorie.parent is not null  %}
  690.                     <span></span>
  691.                         <a href=\"{{ CATEGORY_URL_TYPE == 1 ? path('category_dec', {id: categorie.parent.id , name :categorie.parent.name|slug }) : path('category_new', {id: categorie.parent.id , name :categorie.parent.name|slug }) }}\"rel=\"nofollow\">
  692.                             {{ categorie.parent.name }}</a>
  693.                     {% endif %}
  694.                     <span></span> {{ categorie.getName() }}
  695.                 </div>
  696.             </div>
  697.         </div>
  698.        {# ===== SECTION PRINCIPALE DE LISTE DE PRODUITS ===== #}
  699. <section class=\"mt-50 mb-50\">
  700.     <div class=\"container\">
  701.         <div class=\"row flex-row-reverse\">
  702.             {# ===== COLONNE PRINCIPALE (LISTE DES PRODUITS) ===== #}
  703.             <div class=\"col-lg-9\">
  704.                 {# ===== BARRE DE FILTRAGE (nombre de produits, affichage et tri) ===== #}
  705.                 <div class=\"shop-product-fillter\">
  706.                     {# Affichage du nombre total d'articles trouvés #}
  707.                     <div class=\"totall-product\">
  708.                         <p>Nous avons trouvé <strong class=\"text-brand\">\${ totalItems }</strong> article<span v-if=\"totalItems>1\">s</span> !</p>
  709.                     </div>
  710.                     {# Zone de tri et d'affichage par nombre #}
  711.                     <div class=\"sort-by-product-area\">
  712.                         {# Choix du nombre de produits à afficher par page #}
  713.                         <div class=\"sort-by-cover mr-10\">
  714.                             <div class=\"sort-by-product-wrap\">
  715.                                 <div class=\"sort-by\">
  716.                                     <span><i class=\"fi-rs-apps\"></i>Montrer:</span>
  717.                                 </div>
  718.                                 <div class=\"sort-by-dropdown-wrap\">
  719.                                     <span v-show=\"pageSize!=9999\"> \${ pageSize } <i class=\"fi-rs-angle-small-down\"></i></span>
  720.                                     <span v-show=\"pageSize==9999\"> Tous <i class=\"fi-rs-angle-small-down\"></i></span>
  721.                                 </div>
  722.                             </div>
  723.                             {# Dropdown pour choisir pageSize #}
  724.                             <div class=\"sort-by-dropdown\">
  725.                                 <ul>
  726.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==10 }\" href=\"#&\" @click=\"pageSize=10;getData(page,true)\">10</a></li>
  727.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==20 }\" href=\"#&\" @click=\"pageSize=20;getData(page,true)\">20</a></li>
  728.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==40 }\" href=\"#&\" @click=\"pageSize=40;getData(page,true)\">40</a></li>
  729.                                     <li class=\"activeFilter\"><a :class=\"{ active: pageSize==9999 }\" href=\"#&\" @click=\"pageSize=9999;getData(page,true)\">Tous</a></li>
  730.                                 </ul>
  731.                             </div>
  732.                         </div>
  733.                         {# Choix du tri (ordre alphabétique, prix, date) #}
  734.                         <div class=\"sort-by-cover\">
  735.                             <div class=\"sort-by-product-wrap\">
  736.                                 <div class=\"sort-by\">
  737.                                     <span><i class=\"fi-rs-apps-sort\"></i>Trier par:</span>
  738.                                 </div>
  739.                                 <div class=\"sort-by-dropdown-wrap\">
  740.                                     <span v-show=\"orderBy==1\"> Nom: A à Z <i class=\"fi-rs-angle-small-down\"></i></span>
  741.                                     <span v-show=\"orderBy==2\"> Nom: Z à A <i class=\"fi-rs-angle-small-down\"></i></span>
  742.                                     <span v-show=\"orderBy==3\"> Prix: croissant <i class=\"fi-rs-angle-small-down\"></i></span>
  743.                                     <span v-show=\"orderBy==4\"> Prix: décroissant <i class=\"fi-rs-angle-small-down\"></i></span>
  744.                                     <span v-show=\"orderBy==5\"> Date ajout: croissant<i class=\"fi-rs-angle-small-down\"></i></span>
  745.                                     <span v-show=\"orderBy==6\"> Date ajout: décroissant<i class=\"fi-rs-angle-small-down\"></i></span>
  746.                                 </div>
  747.                             </div>
  748.                             {# Dropdown pour le tri #}
  749.                             <div class=\"sort-by-dropdown\">
  750.                                 <ul>
  751.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==1 }\" href=\"#&\" @click=\"orderBy=1;getData(page,true)\">Nom: A à Z</a></li>
  752.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==2 }\" href=\"#&\" @click=\"orderBy=2;getData(page,true)\">Nom: Z à A</a></li>
  753.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==3 }\" href=\"#&\" @click=\"orderBy=3;getData(page,true)\">Prix: croissant</a></li>
  754.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==4 }\" href=\"#&\" @click=\"orderBy=4;getData(page,true)\">Prix: décroissant</a></li>
  755.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==5 }\" href=\"#&\" @click=\"orderBy=5;getData(page,true)\">Date ajout: croissant</a></li>
  756.                                     <li class=\"activeFilter\"><a :class=\"{ active: orderBy==6 }\" href=\"#&\" @click=\"orderBy=6;getData(page,true)\">Date ajout: décroissant</a></li>
  757.                                 </ul>
  758.                             </div>
  759.                         </div>
  760.                     </div>
  761.                 </div>
  762.                 {# ===== GRILLE DE PRODUITS ===== #}
  763.                 <div class=\"row product-grid-3\">
  764.                     {# Boucle sur chaque produit #}
  765.                     <div class=\"col-lg-6 col-md-6 col-12 col-sm-6 row-product\" v-for=\"entry in products\">
  766.                         <div class=\"product-cart-wrap mb-30 col-product\">
  767.                             {# Image + Badges #}
  768.                             <div class=\"product-img-action-wrap\" @click=\"openProduct(entry.idProduit,entry.name,entry.id)\">
  769.                                 <div class=\"product-img product-img-zoom\">
  770.                                     <a href=\"#&\">
  771.                                         <img class=\"default-img product-img\" :src=\"'{{ APP_URL }}/images/300-400/'+entry.image\" :alt=\"entry.name\">
  772.                                     </a>
  773.                                 </div>
  774.                                 
  775.                                 {# Affichage des badges: Rupture, Nouveau, Promo #}
  776.                                 <div class=\"product-badges product-badges-position product-badges-mrg\" v-if=\"(entry.promo && entry.promo.isValid) || !entry.stock || entry.isNew\">
  777.                                     <span v-if=\"!entry.stock\" class=\"hot mr-1\">Rupture de stock</span>
  778.                                     <span v-if=\"entry.isNew\" class=\"new mr-1\">Nouveau</span>
  779.                                     <span class=\"best\" v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='amount'\">-\${ entry.promo.discountValue.toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  780.                                     <span class=\"best\" v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='percent'\">-\${ entry.promo.discountValue } %</span>
  781.                                 </div>
  782.                             </div>
  783.                             {# Titre + prix + bouton panier #}
  784.                             <div class=\"product-content-wrap\">
  785.                                 <h2 @click=\"openProduct(entry.idProduit,entry.name,entry.id)\">
  786.                                     <div class=\"menu-item card-title\">\${ entry.name }</div>
  787.                                 </h2>
  788.                                 <div class=\"product-price\">
  789.                                   <span v-if=\"entry.promo && entry.promo.isValid && entry.promo.discountType=='percent'\">\${ (entry.priceTTC-(entry.priceTTC*entry.promo.discountValue/100)).toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  790.                                     <span class=\"old-price\" v-if=\"entry.promo && entry.promo.isValid\">\${ entry.priceTTC.toFixed(3) } <sup class=\"currency-style\">TND</sup></span>
  791.                                 </div>
  792.                                 <div class=\"product-action-1 show\" @click=\"getProduit(entry.idProduit,entry.id)\">
  793.                                     <button aria-label=\"Acheter maintenant\" class=\"action-btn hover-up\"><i class=\"fi-rs-shopping-bag-add\"></i></button>
  794.                                 </div>
  795.                             </div>
  796.                         </div>
  797.                     </div>
  798.                 </div>
  799.                 {# ===== PAGINATION ===== #}
  800.                 <div class=\"pagination-area mt-15 mb-sm-5 mb-lg-0\" v-show=\"pages.length>1\">
  801.                     <nav aria-label=\"Page navigation example\">
  802.                         <ul class=\"pagination justify-content-start\">
  803.                             <li class=\"page-item\" v-show=\"page>1\" @click=\"getData(page-1)\"><a class=\"page-link\" href=\"#&\"><i class=\"fi-rs-angle-double-small-left\"></i></a></li>
  804.                             <li v-for=\"entry in pages\" class=\"page-item\" @click=\"getData(entry)\" :class=\"{ active: entry==page }\"><a class=\"page-link\" href=\"#&\">\${ entry }</a></li>
  805.                             <li class=\"page-item\" v-show=\"page<pages[pages.length-1]\" @click=\"getData(page+1)\"><a class=\"page-link\" href=\"#&\"><i class=\"fi-rs-angle-double-small-right\"></i></a></li>
  806.                         </ul>
  807.                     </nav>
  808.                 </div>
  809.             </div>
  810.             {# ===== BARRE LATÉRALE (FILTRES) ===== #}
  811.             <div class=\"col-lg-3 order-mobile-first primary-sidebar sticky-sidebar\">
  812.                 {# Bouton Filtrer affiché uniquement en mobile #}
  813.                 <button class=\"btn btn-outline-primary w-100 d-md-none mb-3\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#mobileFilters\" aria-expanded=\"false\" aria-controls=\"mobileFilters\">
  814.                     <i class=\"fi-rs-filter me-2\"></i> Affiner la recherche
  815.                 </button>
  816.                 <div class=\"collapse d-md-block\" id=\"mobileFilters\">
  817.                     <div class=\"sidebar-widget price_range range mb-30\">
  818.                 
  819.                         
  820.                         <div class=\"widget-header position-relative mb-20 pb-10\">
  821.                             <h5 class=\"widget-title mb-10\">Filter par prix</h5>
  822.                             <div class=\"bt-1 border-color-1\"></div>
  823.                         </div>
  824.                         {# Range de prix (jQuery UI slider) #}
  825.                         <div class=\"price-filter\">
  826.                             <div class=\"price-filter-inner\">
  827.                                 <div id=\"slider-range\"></div>
  828.                                 <div class=\"price_slider_amount\">
  829.                                     <div class=\"label-input\">
  830.                                         <span>Intervalle:</span><input type=\"text\" id=\"amount\" name=\"price\" placeholder=\"Ajouter le prix\"/>
  831.                                     </div>
  832.                                 </div>
  833.                             </div>
  834.                         </div>
  835.                         <button class=\"btn btn-sm btn-default mt-10\" :disabled=\"disabled\" @click=\"getData(page,true)\">
  836.                             <i class=\"fi-rs-filter mr-5\"></i> Filtrer
  837.                         </button>
  838.                         {# Filtres par taille et couleur #}
  839.                         <div class=\"list-group\" v-if=\"totalItems\">
  840.                             <div class=\"list-group-item mb-10 mt-10\">
  841.                                 <label class=\"fw-900\">Tailles</label>
  842.                                 <div class=\"custome-checkbox\">
  843.                                     <div class=\"row\">
  844.                                         <div v-for=\"entry in taillesFilter\" class=\"col-4\" style=\"white-space: nowrap\">
  845.                                             <input class=\"form-check-input\" type=\"checkbox\" name=\"checkbox\" :id=\"'exampleCheckbox'+entry.name\" v-model=\"entry.selected\" @change=\"getData(page,true)\">
  846.                                             <label class=\"form-check-label\" :for=\"'exampleCheckbox'+entry.name\"><span>\${ entry.name }</span></label>
  847.                                         </div>
  848.                                     </div>
  849.                                 </div>
  850.                                 <label class=\"fw-900 mt-15\">Couleurs</label>
  851.                                 <div class=\"attr-detail attr-color mb-15\">
  852.                                     <ul class=\"list-filter color-filter multi\">
  853.                                         <li :class=\"entry.selected ? 'active' : ''\" v-for=\"entry in couleursFilter\" @click=\"entry.selected = !entry.selected; getData(page,true)\">
  854.                                             <a href=\"#\" :title=\"entry.name\">
  855.                                                 <span :style=\"{ 'background-color': entry.code ? entry.code :'#fff','border': '1px solid #ddd' }\"></span>
  856.                                             </a>
  857.                                         </li>
  858.                                     </ul>
  859.                                 </div>
  860.                             </div>
  861.                         </div>
  862.                     </div>
  863.                 </div>
  864.             </div>
  865.             {# FIN BARRE LATÉRALE #}
  866.         </div>
  867.     </div>
  868. </section>
  869.     </main>
  870.     {# {% endverbatim %} #}
  871. {% endblock %}
  872. {% block javascripts %}
  873.     {{ parent() }}
  874.     <script>
  875.         // Reinialiser les filtres de recherche
  876.         window.onbeforeunload = function () {
  877.             //unchecked your check box here.
  878.             \$(\"input[type='checkbox']\").prop('checked', false);
  879.             //app.getData(app.page);
  880.         };
  881.     </script>
  882.     <script src=\"{{ asset('front/assets/scripts/dec/index.js') }}\"></script>
  883. {% endblock %}
  884. ""front/dec/listProductDec.html.twig""/home/sunshil/www/sunshine-elegance/templates/front/dec/listProductDec.html.twig");
  885.     }
  886. }