var/cache/dev/twig/5e/5e5c3113f9b41fb713d774a515f2c1af1044ded03994d0316524bb5012307768.php line 53

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Product/list.twig */
  14. class __TwigTemplate_2540083cd6d312e1063499d94ad38e033494c7a31043c32ede75cc0607468d8c extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.     }
  28.     protected function doGetParent(array $context)
  29.     {
  30.         // line 11
  31.         return "default_frame.twig";
  32.     }
  33.     protected function doDisplay(array $context, array $blocks = [])
  34.     {
  35.         $macros $this->macros;
  36.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  37.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/list.twig"));
  38.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/list.twig"));
  40.         // line 13
  41.         $context["body_class"] = "product_page";
  42.         // line 11
  43.         $this->parent $this->loadTemplate("default_frame.twig""Product/list.twig"11);
  44.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  45.         
  46.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  47.         
  48.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  49.     }
  50.     // line 15
  51.     public function block_stylesheet($context, array $blocks = [])
  52.     {
  53.         $macros $this->macros;
  54.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  55.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  56.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  57.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         // line 16
  59.         echo "    <link rel=\"stylesheet\" href=\"/html/plugins/ion-rangeslider/css/ion.rangeSlider.min.css\">
  60.     <style>
  61.         /* ============================================
  62.            サイドバー付き 2カラムレイアウト
  63.         ============================================ */
  64.         .ec-productListLayout {
  65.             display: flex;
  66.             gap: 32px;
  67.             align-items: flex-start;
  68.         }
  69.         /* ============================================
  70.            サイドバー(フィルターパネル)
  71.         ============================================ */
  72.         .ec-filterSidebar {
  73.             position: -webkit-sticky;
  74.             position: sticky;
  75.             top: 80px;
  76.             align-self: flex-start;
  77.             max-height: calc(100vh - 100px);
  78.             overflow-y: auto;
  79.             margin: 20px;
  80.             width: 240px;
  81.             flex-shrink: 0;
  82.         }
  83.         @media (max-width: 767px) {
  84.             .ec-filterSidebar {
  85.                 position: static;
  86.                 max-height: none;
  87.                 overflow-y: visible;
  88.             }
  89.         }
  90.         /* Wide desktop: center the main column to align with site grid (1130 + 280 sidebar) */
  91.         @media (min-width: 1410px) {
  92. \t\t\t.ec-searchnavRole {
  93. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  94. \t\t\t}
  95. \t\t\t.ec-shelfRole {
  96. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  97. \t\t\t}
  98. \t\t\t.ec-pagerRole {
  99. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  100. \t\t\t}
  101. \t\t}
  102.         .ec-filterSidebar__section {
  103.             background: #fff;
  104.             border: 1px solid #e8e8e8;
  105.             border-radius: 6px;
  106.             padding: 18px 16px;
  107.             margin-bottom: 16px;
  108.         }
  109.         .ec-filterSidebar__heading {
  110.             font-size: 13px;
  111.             font-weight: bold;
  112.             color: #222;
  113.             margin: 0 0 12px;
  114.             padding-bottom: 10px;
  115.             border-bottom: 2px solid #222;
  116.             letter-spacing: 0.05em;
  117.         }
  118.         /* カテゴリ: 見出しを上部に固定し、一覧を内部スクロールさせる */
  119.         .ec-filterSidebar__section--category .ec-filterSidebar__heading {
  120.             position: -webkit-sticky;
  121.             position: sticky;
  122.             top: 0;
  123.             background: #fff;
  124.             z-index: 2;
  125.         }
  126.         .ec-filterSidebar__section--category .ec-filterSidebar__body {
  127.             max-height: 60vh;
  128.             overflow-y: auto;
  129.         }
  130.         /* カテゴリリスト */
  131.         .ec-filterSidebar__categoryList,
  132.         .ec-filterSidebar__categoryList ul {
  133.             list-style: none;
  134.             padding: 0;
  135.             margin: 0;
  136.         }
  137.         .ec-filterSidebar__categoryList li a {
  138.             display: block;
  139.             padding: 6px 8px;
  140.             font-size: 13px;
  141.             color: #444;
  142.             text-decoration: none;
  143.             border-radius: 4px;
  144.             transition: background 0.15s, color 0.15s;
  145.         }
  146.         .ec-filterSidebar__categoryList li a:hover {
  147.             background: #f5f5f5;
  148.             color: #222;
  149.         }
  150.         .ec-filterSidebar__categoryList li.is-active > a {
  151.             font-weight: bold;
  152.             color: #c00;
  153.             background: #fff5f5;
  154.         }
  155.         /* サブカテゴリ */
  156.         .ec-filterSidebar__categoryList ul {
  157.             padding-left: 12px;
  158.             margin-top: 2px;
  159.         }
  160.         .ec-filterSidebar__categoryList ul li a {
  161.             font-size: 12px;
  162.             color: #666;
  163.             padding: 4px 8px;
  164.         }
  165.         /* メーカーリスト */
  166.         .ec-filterSidebar__makerList {
  167.             list-style: none;
  168.             padding: 0;
  169.             margin: 0;
  170.         }
  171.         .ec-filterSidebar__makerList li {
  172.             border-bottom: 1px solid #f0f0f0;
  173.         }
  174.         .ec-filterSidebar__makerList li:last-child {
  175.             border-bottom: none;
  176.         }
  177.         .ec-filterSidebar__makerList li a {
  178.             display: flex;
  179.             align-items: center;
  180.             gap: 6px;
  181.             padding: 7px 6px;
  182.             font-size: 13px;
  183.             color: #444;
  184.             text-decoration: none;
  185.             transition: color 0.15s;
  186.         }
  187.         .ec-filterSidebar__makerList li a:hover {
  188.             color: #c00;
  189.         }
  190.         .ec-filterSidebar__makerList li.is-active a {
  191.             font-weight: bold;
  192.             color: #c00;
  193.         }
  194.         .ec-filterSidebar__makerList li.is-active a::before {
  195.             content: \"✓\";
  196.             font-size: 11px;
  197.             color: #c00;
  198.         }
  199.         /* 価格帯フィルター */
  200.         .ec-filterSidebar__priceDisplay {
  201.             text-align: center;
  202.             font-size: 13px;
  203.             color: #333;
  204.             margin-bottom: 12px;
  205.             font-weight: bold;
  206.         }
  207.         .ec-filterSidebar__priceDisplay span {
  208.             color: #c00;
  209.         }
  210.         .ec-filterSidebar__priceSliderWrap {
  211.             /* Side padding holds room for ion-rangeSlider .irs-to / .irs-from labels
  212.                so the max-value tooltip never spills past the sidebar edge. */
  213.             padding: 0 14px;
  214.             margin-bottom: 16px;
  215.         }
  216.         .ec-filterSidebar__priceApply {
  217.             display: block;
  218.             width: 100%;
  219.             padding: 8px;
  220.             background: #222;
  221.             color: #fff;
  222.             border: none;
  223.             border-radius: 4px;
  224.             font-size: 13px;
  225.             cursor: pointer;
  226.             text-align: center;
  227.             transition: background 0.2s;
  228.         }
  229.         .ec-filterSidebar__priceApply:hover {
  230.             background: #444;
  231.         }
  232.         .ec-filterSidebar__pricePreset {
  233.             list-style: none;
  234.             padding: 0;
  235.             margin: 10px 0 0;
  236.         }
  237.         .ec-filterSidebar__pricePreset li a {
  238.             display: block;
  239.             padding: 5px 6px;
  240.             font-size: 12px;
  241.             color: #666;
  242.             text-decoration: none;
  243.             border-radius: 4px;
  244.             transition: background 0.15s;
  245.         }
  246.         .ec-filterSidebar__pricePreset li a:hover {
  247.             background: #f5f5f5;
  248.             color: #333;
  249.         }
  250.         /* 絞り込みリセット */
  251.         .ec-filterSidebar__reset a {
  252.             display: block;
  253.             text-align: center;
  254.             padding: 8px;
  255.             font-size: 12px;
  256.             color: #888;
  257.             text-decoration: underline;
  258.             border: 1px solid #ddd;
  259.             border-radius: 4px;
  260.             transition: color 0.15s, border-color 0.15s;
  261.         }
  262.         .ec-filterSidebar__reset a:hover {
  263.             color: #c00;
  264.             border-color: #c00;
  265.         }
  266.         /* 現在の絞り込み条件バッジ */
  267.         .ec-filterActive {
  268.             display: flex;
  269.             flex-wrap: wrap;
  270.             gap: 6px;
  271.             margin-bottom: 12px;
  272.             padding: 10px 12px;
  273.             background: #f9f9f9;
  274.             border: 1px solid #e8e8e8;
  275.             border-radius: 6px;
  276.         }
  277.         .ec-filterActive__label {
  278.             font-size: 11px;
  279.             color: #888;
  280.             align-self: center;
  281.             margin-right: 4px;
  282.         }
  283.         .ec-filterActive__tag {
  284.             display: inline-flex;
  285.             align-items: center;
  286.             gap: 4px;
  287.             padding: 3px 8px;
  288.             background: #222;
  289.             color: #fff;
  290.             border-radius: 20px;
  291.             font-size: 11px;
  292.         }
  293.         .ec-filterActive__tag a {
  294.             color: #aaa;
  295.             text-decoration: none;
  296.             font-size: 12px;
  297.             line-height: 1;
  298.         }
  299.         .ec-filterActive__tag a:hover {
  300.             color: #fff;
  301.         }
  302.         /* メインコンテンツ側 */
  303.         .ec-productListMain {
  304.             flex: 1;
  305.             min-width: 0;
  306.             width: 100%;  
  307.         }
  308.         /* ion-rangeslider カスタマイズ */
  309.         .irs--flat .irs-bar {
  310.             background-color: #222;
  311.         }
  312.         .irs--flat .irs-handle > i:first-child {
  313.             background-color: #222;
  314.         }
  315.         .irs--flat .irs-from,
  316.         .irs--flat .irs-to,
  317.         .irs--flat .irs-single {
  318.             background-color: #222;
  319.             font-size: 11px;
  320.         }
  321.         /* Tablet (768-1199px): stack sidebar above grid to avoid overlap */
  322.         @media (min-width: 768px) and (max-width: 1199px) {
  323.             .ec-productListLayout {
  324.                 flex-direction: column;
  325.                 gap: 0;
  326.             }
  327.             .ec-filterSidebar {
  328.                 width: 100%;
  329.                 margin: 0 0 16px;
  330.             }
  331.             .ec-productListMain {
  332.                 width: 100%;
  333.             }
  334.             /* Allow CTA to wrap and avoid truncation in 2-col tablet grid */
  335.             .ec-shelfGrid .ec-blockBtn--action {
  336.                 white-space: normal;
  337.                 line-height: 1.3;
  338.                 height: auto;
  339.                 min-height: 56px;
  340.                 padding: 12px 8px;
  341.                 font-size: 0.8rem;
  342.             }
  343.         }
  344.         /* Price slider tooltip: prevent label overlap when results are empty */
  345.         .ec-productListMain .ec-shelfRole:empty + .ec-pagerRole,
  346.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-from,
  347.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-to,
  348.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-single {
  349.             visibility: hidden;
  350.         }
  351.         .ec-filterSidebar__priceSliderWrap .irs {
  352.             position: relative;
  353.             z-index: 1;
  354.         }
  355.         .ec-filterSidebar__priceSliderWrap .irs-from,
  356.         .ec-filterSidebar__priceSliderWrap .irs-to,
  357.         .ec-filterSidebar__priceSliderWrap .irs-single {
  358.             white-space: nowrap;
  359.         }
  360.         /* モバイル対応 */
  361.         @media (max-width: 767px) {
  362.             /* 横スクロール禁止 */
  363.             body, html {
  364.                 overflow-x: hidden;
  365.                 max-width: 100vw;
  366.             }
  367.             .ec-productListLayout {
  368.                 flex-direction: column;
  369.                 gap: 0;
  370.             }
  371.             .ec-filterSidebar {
  372.                 width: 100%;
  373.                 margin: 0;
  374.             }
  375.             /* スマホで商品一覧を確実に表示 */
  376.             .ec-productListMain {
  377.                 width: 100%;
  378.                 flex: none;
  379.                 margin: 0;
  380.             }
  381.             .ec-filterSidebar__section {
  382.                 margin-bottom: 10px;
  383.             }
  384.             /* Allow CTA to wrap and avoid truncation in narrow mobile cards */
  385.             .ec-shelfGrid .ec-blockBtn--action {
  386.                 white-space: normal;
  387.                 word-break: keep-all;
  388.                 overflow-wrap: anywhere;
  389.                 line-height: 1.3;
  390.                 height: auto;
  391.                 min-height: 56px;
  392.                 padding: 12px 8px;
  393.                 font-size: 0.8rem;
  394.             }
  395.             /* モバイルではアコーディオン形式 */
  396.             .ec-filterSidebar__body {
  397.                 display: none;
  398.             }
  399.             .ec-filterSidebar__body.is-open {
  400.                 display: block;
  401.             }
  402.             .ec-filterSidebar__heading {
  403.                 cursor: pointer;
  404.                 display: flex;
  405.                 justify-content: space-between;
  406.                 align-items: center;
  407.                 margin-bottom: 0;
  408.                 padding-bottom: 0;
  409.                 border-bottom: none;
  410.             }
  411.             .ec-filterSidebar__heading.is-open {
  412.                 margin-bottom: 12px;
  413.                 padding-bottom: 10px;
  414.                 border-bottom: 2px solid #222;
  415.             }
  416.             .ec-filterSidebar__heading::after {
  417.                 content: \"▼\";
  418.                 font-size: 10px;
  419.                 color: #888;
  420.                 transition: transform 0.2s;
  421.             }
  422.             .ec-filterSidebar__heading.is-open::after {
  423.                 transform: rotate(180deg);
  424.             }
  425.         }
  426.     </style>
  427. ";
  428.         
  429.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  430.         
  431.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  432.     }
  433.     // line 439
  434.     public function block_javascript($context, array $blocks = [])
  435.     {
  436.         $macros $this->macros;
  437.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  438.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  439.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  440.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  441.         // line 440
  442.         echo "    <script>
  443.         eccube.productsClassCategories = {
  444.             ";
  445.         // line 442
  446.         $context['_parent'] = $context;
  447.         $context['_seq'] = twig_ensure_traversable((isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'442$this->source); })()));
  448.         $context['loop'] = [
  449.           'parent' => $context['_parent'],
  450.           'index0' => 0,
  451.           'index'  => 1,
  452.           'first'  => true,
  453.         ];
  454.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  455.             $length count($context['_seq']);
  456.             $context['loop']['revindex0'] = $length 1;
  457.             $context['loop']['revindex'] = $length;
  458.             $context['loop']['length'] = $length;
  459.             $context['loop']['last'] = === $length;
  460.         }
  461.         foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  462.             // line 443
  463.             echo "            \"";
  464.             echo twig_escape_filter($this->envtwig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse443), "js"), "html"nulltrue);
  465.             echo "\": ";
  466.             echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($context["Product"]);
  467.             if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse443) == false)) {
  468.                 echo ", ";
  469.             }
  470.             // line 444
  471.             echo "            ";
  472.             ++$context['loop']['index0'];
  473.             ++$context['loop']['index'];
  474.             $context['loop']['first'] = false;
  475.             if (isset($context['loop']['length'])) {
  476.                 --$context['loop']['revindex0'];
  477.                 --$context['loop']['revindex'];
  478.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  479.             }
  480.         }
  481.         $_parent $context['_parent'];
  482.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  483.         $context array_intersect_key($context$_parent) + $_parent;
  484.         // line 445
  485.         echo "        };
  486.         \$(function() {
  487.             // 表示件数を変更
  488.             \$('.disp-number').change(function() {
  489.                 var dispNumber = \$(this).val();
  490.                 \$('#disp_number').val(dispNumber);
  491.                 \$('#pageno').val(1);
  492.                 \$(\"#form1\").submit();
  493.             });
  494.             // 並び順を変更
  495.             \$('.order-by').change(function() {
  496.                 var orderBy = \$(this).val();
  497.                 \$('#orderby').val(orderBy);
  498.                 \$('#pageno').val(1);
  499.                 \$(\"#form1\").submit();
  500.             });
  501.             // ==============================
  502.             // 価格帯スライダー(ion-rangeslider)
  503.             // ==============================
  504.             var priceMin = parseInt('";
  505.         // line 468
  506.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'468$this->source); })()), "request", [], "any"falsefalsefalse468), "query", [], "any"falsefalsefalse468), "get", [=> "price_min"], "method"falsefalsefalse468)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'468$this->source); })()), "request", [], "any"falsefalsefalse468), "query", [], "any"falsefalsefalse468), "get", [=> "price_min"], "method"falsefalsefalse468), "html"nulltrue))) : (print (0)));
  507.         echo "') || 0;
  508.             var priceMax = parseInt('";
  509.         // line 469
  510.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'469$this->source); })()), "request", [], "any"falsefalsefalse469), "query", [], "any"falsefalsefalse469), "get", [=> "price_max"], "method"falsefalsefalse469)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'469$this->source); })()), "request", [], "any"falsefalsefalse469), "query", [], "any"falsefalsefalse469), "get", [=> "price_max"], "method"falsefalsefalse469), "html"nulltrue))) : (print (5000000)));
  511.         echo "') || 5000000;
  512.             \$(\"#price-range-slider\").ionRangeSlider({
  513.                 type: \"double\",
  514.                 min: 0,
  515.                 max: 5000000,
  516.                 from: priceMin,
  517.                 to: priceMax,
  518.                 step: 10000,
  519.                 prettify_enabled: true,
  520.                 prettify_separator: \",\",
  521.                 postfix: \"円\",
  522.                 onFinish: function(data) {
  523.                     \$('#price_min_val').val(data.from);
  524.                     \$('#price_max_val').val(data.to);
  525.                     // 表示更新
  526.                     \$('#price-display-min').text(Number(data.from).toLocaleString());
  527.                     \$('#price-display-max').text(Number(data.to).toLocaleString());
  528.                 }
  529.             });
  530.             // 価格フォーム送信
  531.             \$('#price-filter-apply').on('click', function() {
  532.                 var min = \$('#price_min_val').val();
  533.                 var max = \$('#price_max_val').val();
  534.                 var url = new URL(window.location.href);
  535.                 url.searchParams.set('price_min', min);
  536.                 url.searchParams.set('price_max', max);
  537.                 url.searchParams.delete('pageno');
  538.                 window.location.href = url.toString();
  539.             });
  540.             // モバイル:アコーディオン(初期状態を閉じる)
  541.             function initMobileAccordion() {
  542.                 if (\$(window).width() <= 767) {
  543.                     \$('.ec-filterSidebar__heading').removeClass('is-open');
  544.                     \$('.ec-filterSidebar__body').removeClass('is-open');
  545.                 }
  546.             }
  547.             initMobileAccordion();
  548.             \$(window).on('resize', initMobileAccordion);
  549.             \$('.ec-filterSidebar__heading').on('click', function() {
  550.                 if (\$(window).width() <= 767) {
  551.                     \$(this).toggleClass('is-open');
  552.                     \$(this).next('.ec-filterSidebar__body').toggleClass('is-open');
  553.                 }
  554.             });
  555.         });
  556.         \$('.ec-modal-wrap').on('click', function(e) {
  557.             e.stopPropagation();
  558.         });
  559.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  560.             \$('.ec-modal').hide()
  561.         });
  562. \t    // 価格プリセットのクイック適用
  563. \t    function applyPrice(min, max) {
  564. \t        var url = new URL(window.location.href);
  565. \t        url.searchParams.set('price_min', min);
  566. \t        url.searchParams.set('price_max', max);
  567. \t        url.searchParams.delete('pageno');
  568. \t        window.location.href = url.toString();
  569. \t    }
  570.     </script>
  571.     <script src=\"/html/plugins/ion-rangeslider/js/ion.rangeSlider.min.js\"></script>
  572. ";
  573.         
  574.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  575.         
  576.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  577.     }
  578.     // line 539
  579.     public function block_main($context, array $blocks = [])
  580.     {
  581.         $macros $this->macros;
  582.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  583.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  584.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  585.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  586.         // line 540
  587.         echo "
  588.         ";
  589.         // line 542
  590.         $context["hasFilter"] = (((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'542$this->source); })()), "request", [], "any"falsefalsefalse542), "query", [], "any"falsefalsefalse542), "get", [=> "category_id"], "method"falsefalsefalse542) || twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'542$this->source); })()), "request", [], "any"falsefalsefalse542), "query", [], "any"falsefalsefalse542), "get", [=> "maker_id"], "method"falsefalsefalse542)) || twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'542$this->source); })()), "request", [], "any"falsefalsefalse542), "query", [], "any"falsefalsefalse542), "get", [=> "price_min"], "method"falsefalsefalse542)) || twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'542$this->source); })()), "request", [], "any"falsefalsefalse542), "query", [], "any"falsefalsefalse542), "get", [=> "price_max"], "method"falsefalsefalse542));
  591.         // line 543
  592.         echo "
  593.         ";
  594.         // line 547
  595.         echo "        <div class=\"ec-productListLayout\">
  596.             ";
  597.         // line 550
  598.         echo "            <aside class=\"ec-filterSidebar\">
  599.                 ";
  600.         // line 552
  601.         echo "                <div class=\"ec-filterSidebar__section\">
  602.                     <h3 class=\"ec-filterSidebar__heading\">価格帯</h3>
  603.                     <div class=\"ec-filterSidebar__body is-open\">
  604.                         <div class=\"ec-filterSidebar__priceDisplay\">
  605.                             <span id=\"price-display-min\">";
  606.         // line 556
  607.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'556$this->source); })()), "request", [], "any"falsefalsefalse556), "query", [], "any"falsefalsefalse556), "get", [=> "price_min"], "method"falsefalsefalse556)) ? (print (twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'556$this->source); })()), "request", [], "any"falsefalsefalse556), "query", [], "any"falsefalsefalse556), "get", [=> "price_min"], "method"falsefalsefalse556)), "html"nulltrue))) : (print ("0")));
  608.         echo "</span>円
  609.                             〜
  610.                             <span id=\"price-display-max\">";
  611.         // line 558
  612.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'558$this->source); })()), "request", [], "any"falsefalsefalse558), "query", [], "any"falsefalsefalse558), "get", [=> "price_max"], "method"falsefalsefalse558)) ? (print (twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'558$this->source); })()), "request", [], "any"falsefalsefalse558), "query", [], "any"falsefalsefalse558), "get", [=> "price_max"], "method"falsefalsefalse558)), "html"nulltrue))) : (print ("5,000,000")));
  613.         echo "</span>円
  614.                         </div>
  615.                         <div class=\"ec-filterSidebar__priceSliderWrap\">
  616.                             <input type=\"text\" id=\"price-range-slider\" style=\"display:none;\">
  617.                             <input type=\"hidden\" id=\"price_min_val\" value=\"";
  618.         // line 562
  619.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'562$this->source); })()), "request", [], "any"falsefalsefalse562), "query", [], "any"falsefalsefalse562), "get", [=> "price_min"], "method"falsefalsefalse562)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'562$this->source); })()), "request", [], "any"falsefalsefalse562), "query", [], "any"falsefalsefalse562), "get", [=> "price_min"], "method"falsefalsefalse562), "html"nulltrue))) : (print (0)));
  620.         echo "\">
  621.                             <input type=\"hidden\" id=\"price_max_val\" value=\"";
  622.         // line 563
  623.         ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'563$this->source); })()), "request", [], "any"falsefalsefalse563), "query", [], "any"falsefalsefalse563), "get", [=> "price_max"], "method"falsefalsefalse563)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'563$this->source); })()), "request", [], "any"falsefalsefalse563), "query", [], "any"falsefalsefalse563), "get", [=> "price_max"], "method"falsefalsefalse563), "html"nulltrue))) : (print (5000000)));
  624.         echo "\">
  625.                         </div>
  626.                         <button id=\"price-filter-apply\" class=\"ec-filterSidebar__priceApply\">この価格帯で絞り込む</button>
  627.                         <ul class=\"ec-filterSidebar__pricePreset\">
  628.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(0, 300000)\">〜30万円</a></li>
  629.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(300000, 600000)\">30万円〜60万円</a></li>
  630.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(600000, 1000000)\">60万円〜100万円</a></li>
  631.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(1000000, 5000000)\">100万円〜</a></li>
  632.                         </ul>
  633.                     </div>
  634.                 </div>
  635.                 ";
  636.         // line 578
  637.         echo "                <div class=\"ec-filterSidebar__section\">
  638.                     <h3 class=\"ec-filterSidebar__heading\">ブランド</h3>
  639.                     <div class=\"ec-filterSidebar__body is-open\">
  640.                         <ul class=\"ec-filterSidebar__makerList\">
  641.                             ";
  642.         // line 582
  643.         if (array_key_exists("Makers"$context)) {
  644.             // line 583
  645.             echo "                                ";
  646.             $context['_parent'] = $context;
  647.             $context['_seq'] = twig_ensure_traversable((isset($context["Makers"]) || array_key_exists("Makers"$context) ? $context["Makers"] : (function () { throw new RuntimeError('Variable "Makers" does not exist.'583$this->source); })()));
  648.             foreach ($context['_seq'] as $context["_key"] => $context["MakerItem"]) {
  649.                 // line 584
  650.                 echo "                                    <li class=\"";
  651.                 echo ((( !(null === (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'584$this->source); })())) && (twig_get_attribute($this->env$this->source, (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'584$this->source); })()), "id", [], "any"falsefalsefalse584) == twig_get_attribute($this->env$this->source$context["MakerItem"], "id", [], "any"falsefalsefalse584)))) ? ("is-active") : (""));
  652.                 echo "\">
  653.                                         <a href=\"";
  654.                 // line 585
  655.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  656.                 echo "?maker_id=";
  657.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["MakerItem"], "id", [], "any"falsefalsefalse585), "html"nulltrue);
  658.                 if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'585$this->source); })()), "request", [], "any"falsefalsefalse585), "query", [], "any"falsefalsefalse585), "get", [=> "category_id"], "method"falsefalsefalse585)) {
  659.                     echo "&category_id=";
  660.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'585$this->source); })()), "request", [], "any"falsefalsefalse585), "query", [], "any"falsefalsefalse585), "get", [=> "category_id"], "method"falsefalsefalse585), "html"nulltrue);
  661.                 }
  662.                 echo "\">
  663.                                             ";
  664.                 // line 586
  665.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["MakerItem"], "name", [], "any"falsefalsefalse586), "html"nulltrue);
  666.                 echo "
  667.                                         </a>
  668.                                     </li>
  669.                                 ";
  670.             }
  671.             $_parent $context['_parent'];
  672.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['MakerItem'], $context['_parent'], $context['loop']);
  673.             $context array_intersect_key($context$_parent) + $_parent;
  674.             // line 590
  675.             echo "                            ";
  676.         } else {
  677.             // line 591
  678.             echo "                                ";
  679.             // line 592
  680.             echo "                                ";
  681.             $context["makerList"] = [=> ["id" => 1"name" => "LIXIL"], => ["id" => 2"name" => "YKK AP"], => ["id" => 3"name" => "三協アルミ"], => ["id" => 4"name" => "四国化成"], => ["id" => 5"name" => "タカショー"], => ["id" => 6"name" => "ユニソン"], => ["id" => 7"name" => "エスビック"], => ["id" => 8"name" => "パナソニック"], => ["id" => 9"name" => "イナバ"], => ["id" => 10"name" => "ヨドコウ"], 10 => ["id" => 13"name" => "タクボ"]];
  682.             // line 605
  683.             echo "                                ";
  684.             $context['_parent'] = $context;
  685.             $context['_seq'] = twig_ensure_traversable((isset($context["makerList"]) || array_key_exists("makerList"$context) ? $context["makerList"] : (function () { throw new RuntimeError('Variable "makerList" does not exist.'605$this->source); })()));
  686.             foreach ($context['_seq'] as $context["_key"] => $context["maker"]) {
  687.                 // line 606
  688.                 echo "                                    <li class=\"";
  689.                 echo ((( !(null === (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'606$this->source); })())) && (twig_get_attribute($this->env$this->source, (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'606$this->source); })()), "id", [], "any"falsefalsefalse606) == twig_get_attribute($this->env$this->source$context["maker"], "id", [], "any"falsefalsefalse606)))) ? ("is-active") : (""));
  690.                 echo "\">
  691.                                         <a href=\"";
  692.                 // line 607
  693.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  694.                 echo "?maker_id=";
  695.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["maker"], "id", [], "any"falsefalsefalse607), "html"nulltrue);
  696.                 if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'607$this->source); })()), "request", [], "any"falsefalsefalse607), "query", [], "any"falsefalsefalse607), "get", [=> "category_id"], "method"falsefalsefalse607)) {
  697.                     echo "&category_id=";
  698.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'607$this->source); })()), "request", [], "any"falsefalsefalse607), "query", [], "any"falsefalsefalse607), "get", [=> "category_id"], "method"falsefalsefalse607), "html"nulltrue);
  699.                 }
  700.                 echo "\">
  701.                                             ";
  702.                 // line 608
  703.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["maker"], "name", [], "any"falsefalsefalse608), "html"nulltrue);
  704.                 echo "
  705.                                         </a>
  706.                                     </li>
  707.                                 ";
  708.             }
  709.             $_parent $context['_parent'];
  710.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['maker'], $context['_parent'], $context['loop']);
  711.             $context array_intersect_key($context$_parent) + $_parent;
  712.             // line 612
  713.             echo "                            ";
  714.         }
  715.         // line 613
  716.         echo "                        </ul>
  717.                     </div>
  718.                 </div>
  719.                 ";
  720.         // line 617
  721.         echo "                <div class=\"ec-filterSidebar__section ec-filterSidebar__section--category\">
  722.                     <h3 class=\"ec-filterSidebar__heading\">カテゴリ</h3>
  723.                     <div class=\"ec-filterSidebar__body is-open\">
  724.                         ";
  725.         // line 620
  726.         $context["categoryList"] = [=> ["id" => 7"name" => "カーポート・車庫""children" => []], => ["id" => 16"name" => "ガレージ・倉庫""children" => []], => ["id" => 8"name" => "サイクルポート・駐輪場""children" => []], => ["id" => 9"name" => "ゲート""children" => [=> ["id" => 30"name" => "跳ね上げ式ゲート"], => ["id" => 29"name" => "伸縮ゲート"], => ["id" => 31"name" => "ガレージシャッター"]]], => ["id" => 12"name" => "テラス""children" => [=> ["id" => 33"name" => "テラス囲い"], => ["id" => 32"name" => "テラス屋根"]]], => ["id" => 19"name" => "ベランダ・バルコニー""children" => []], => ["id" => 35"name" => "バルコニー屋根""children" => []], => ["id" => 18"name" => "オーニング・日よけ""children" => []], => ["id" => 11"name" => "ウッドデッキ""children" => [=> ["id" => 37"name" => "タイルデッキ"], => ["id" => 36"name" => "ウッドデッキ"]]], => ["id" => 14"name" => "フェンス・柵""children" => []], 10 => ["id" => 25"name" => "門扉""children" => []], 11 => ["id" => 13"name" => "ポスト・門柱宅配ボックス""children" => []], 12 => ["id" => 15"name" => "物置・収納・屋外倉庫""children" => []], 13 => ["id" => 20"name" => "ガーデンファニチャー""children" => []], 14 => ["id" => 22"name" => "人工芝""children" => []], 15 => ["id" => 17"name" => "内窓・二重窓""children" => []], 16 => ["id" => 26"name" => "その他""children" => [=> ["id" => 38"name" => "パーゴラ"], => ["id" => 39"name" => "立水栓・ガーデンシンク"], => ["id" => 40"name" => "手すり"], => ["id" => 10"name" => "ストックヤード"], => ["id" => 27"name" => "ゴミステーション"], => ["id" => 42"name" => "面格子・窓格子"], => ["id" => 41"name" => "窓シャッター"], => ["id" => 43"name" => "玄関ドア"]]]];
  727.         // line 658
  728.         echo "                        <ul class=\"ec-filterSidebar__categoryList\">
  729.                             <li class=\"";
  730.         // line 659
  731.         echo (((twig_test_empty(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'659$this->source); })()), "request", [], "any"falsefalsefalse659), "query", [], "any"falsefalsefalse659), "get", [=> "category_id"], "method"falsefalsefalse659)) && (null === (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'659$this->source); })())))) ? ("is-active") : (""));
  732.         echo "\">
  733.                                 <a href=\"";
  734.         // line 660
  735.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  736.         echo "\">すべて</a>
  737.                             </li>
  738.                             ";
  739.         // line 662
  740.         $context['_parent'] = $context;
  741.         $context['_seq'] = twig_ensure_traversable((isset($context["categoryList"]) || array_key_exists("categoryList"$context) ? $context["categoryList"] : (function () { throw new RuntimeError('Variable "categoryList" does not exist.'662$this->source); })()));
  742.         foreach ($context['_seq'] as $context["_key"] => $context["cat"]) {
  743.             // line 663
  744.             echo "                                <li class=\"";
  745.             echo (((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'663$this->source); })()), "request", [], "any"falsefalsefalse663), "query", [], "any"falsefalsefalse663), "get", [=> "category_id"], "method"falsefalsefalse663) == twig_get_attribute($this->env$this->source$context["cat"], "id", [], "any"falsefalsefalse663))) ? ("is-active") : (""));
  746.             echo "\">
  747.                                     <a href=\"";
  748.             // line 664
  749.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  750.             echo "?category_id=";
  751.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["cat"], "id", [], "any"falsefalsefalse664), "html"nulltrue);
  752.             if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'664$this->source); })()), "request", [], "any"falsefalsefalse664), "query", [], "any"falsefalsefalse664), "get", [=> "maker_id"], "method"falsefalsefalse664)) {
  753.                 echo "&maker_id=";
  754.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'664$this->source); })()), "request", [], "any"falsefalsefalse664), "query", [], "any"falsefalsefalse664), "get", [=> "maker_id"], "method"falsefalsefalse664), "html"nulltrue);
  755.             }
  756.             echo "\">
  757.                                         ";
  758.             // line 665
  759.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["cat"], "name", [], "any"falsefalsefalse665), "html"nulltrue);
  760.             echo "
  761.                                     </a>
  762.                                     ";
  763.             // line 667
  764.             if ((twig_length_filter($this->envtwig_get_attribute($this->env$this->source$context["cat"], "children", [], "any"falsefalsefalse667)) > 0)) {
  765.                 // line 668
  766.                 echo "                                        <ul>
  767.                                             ";
  768.                 // line 669
  769.                 $context['_parent'] = $context;
  770.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source$context["cat"], "children", [], "any"falsefalsefalse669));
  771.                 foreach ($context['_seq'] as $context["_key"] => $context["child"]) {
  772.                     // line 670
  773.                     echo "                                                <li class=\"";
  774.                     echo (((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'670$this->source); })()), "request", [], "any"falsefalsefalse670), "query", [], "any"falsefalsefalse670), "get", [=> "category_id"], "method"falsefalsefalse670) == twig_get_attribute($this->env$this->source$context["child"], "id", [], "any"falsefalsefalse670))) ? ("is-active") : (""));
  775.                     echo "\">
  776.                                                     <a href=\"";
  777.                     // line 671
  778.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  779.                     echo "?category_id=";
  780.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["child"], "id", [], "any"falsefalsefalse671), "html"nulltrue);
  781.                     if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'671$this->source); })()), "request", [], "any"falsefalsefalse671), "query", [], "any"falsefalsefalse671), "get", [=> "maker_id"], "method"falsefalsefalse671)) {
  782.                         echo "&maker_id=";
  783.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'671$this->source); })()), "request", [], "any"falsefalsefalse671), "query", [], "any"falsefalsefalse671), "get", [=> "maker_id"], "method"falsefalsefalse671), "html"nulltrue);
  784.                     }
  785.                     echo "\">
  786.                                                         ";
  787.                     // line 672
  788.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["child"], "name", [], "any"falsefalsefalse672), "html"nulltrue);
  789.                     echo "
  790.                                                     </a>
  791.                                                 </li>
  792.                                             ";
  793.                 }
  794.                 $_parent $context['_parent'];
  795.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']);
  796.                 $context array_intersect_key($context$_parent) + $_parent;
  797.                 // line 676
  798.                 echo "                                        </ul>
  799.                                     ";
  800.             }
  801.             // line 678
  802.             echo "                                </li>
  803.                             ";
  804.         }
  805.         $_parent $context['_parent'];
  806.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['cat'], $context['_parent'], $context['loop']);
  807.         $context array_intersect_key($context$_parent) + $_parent;
  808.         // line 680
  809.         echo "                        </ul>
  810.                     </div>
  811.                 </div>
  812.                 ";
  813.         // line 685
  814.         echo "                ";
  815.         if ((isset($context["hasFilter"]) || array_key_exists("hasFilter"$context) ? $context["hasFilter"] : (function () { throw new RuntimeError('Variable "hasFilter" does not exist.'685$this->source); })())) {
  816.             // line 686
  817.             echo "                    <div class=\"ec-filterSidebar__reset\">
  818.                         <a href=\"";
  819.             // line 687
  820.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  821.             echo "\">絞り込みをすべてリセット</a>
  822.                     </div>
  823.                 ";
  824.         }
  825.         // line 690
  826.         echo "
  827.             </aside>
  828.             ";
  829.         // line 693
  830.         echo "
  831.             ";
  832.         // line 695
  833.         echo "            <div class=\"ec-productListMain\">
  834.     ";
  835.         // line 696
  836.         if ((twig_length_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'696$this->source); })()), "category_id", [], "any"falsefalsefalse696), "vars", [], "any"falsefalsefalse696), "errors", [], "any"falsefalsefalse696)) > 0)) {
  837.             // line 697
  838.             echo "        <div class=\"ec-searchnavRole\">
  839.             <p class=\"errormsg text-danger\">";
  840.             // line 698
  841.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ご指定のカテゴリは存在しません"), "html"nulltrue);
  842.             echo "</p>
  843.         </div>
  844.     ";
  845.         } else {
  846.             // line 701
  847.             echo "        ";
  848.             // line 702
  849.             echo "        <div class=\"ec-searchnavRole\">
  850.             <form name=\"form1\" id=\"form1\" method=\"get\" action=\"?\">
  851.                 ";
  852.             // line 704
  853.             $context['_parent'] = $context;
  854.             $context['_seq'] = twig_ensure_traversable((isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'704$this->source); })()));
  855.             foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
  856.                 // line 705
  857.                 echo "                    <input type=\"hidden\" id=\"";
  858.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse705), "id", [], "any"falsefalsefalse705), "html"nulltrue);
  859.                 echo "\"
  860.                            name=\"";
  861.                 // line 706
  862.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse706), "full_name", [], "any"falsefalsefalse706), "html"nulltrue);
  863.                 echo "\"
  864.                            ";
  865.                 // line 707
  866.                 if ( !twig_test_empty(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse707), "value", [], "any"falsefalsefalse707))) {
  867.                     echo "value=\"";
  868.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse707), "value", [], "any"falsefalsefalse707), "html"nulltrue);
  869.                     echo "\" ";
  870.                 }
  871.                 echo "/>
  872.                 ";
  873.             }
  874.             $_parent $context['_parent'];
  875.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
  876.             $context array_intersect_key($context$_parent) + $_parent;
  877.             // line 709
  878.             echo "            </form>
  879.             ";
  880.             // line 712
  881.             echo "            <div class=\"ec-searchnavRole__topicpath\">
  882.                 <ol class=\"ec-topicpath\">
  883.                     <li class=\"ec-topicpath__item\"><a href=\"";
  884.             // line 714
  885.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  886.             echo "\">";
  887.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("全て"), "html"nulltrue);
  888.             echo "</a></li>
  889.                     ";
  890.             // line 715
  891.             if ( !(null === (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'715$this->source); })()))) {
  892.                 // line 716
  893.                 echo "                        ";
  894.                 $context['_parent'] = $context;
  895.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'716$this->source); })()), "path", [], "any"falsefalsefalse716));
  896.                 $context['loop'] = [
  897.                   'parent' => $context['_parent'],
  898.                   'index0' => 0,
  899.                   'index'  => 1,
  900.                   'first'  => true,
  901.                 ];
  902.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  903.                     $length count($context['_seq']);
  904.                     $context['loop']['revindex0'] = $length 1;
  905.                     $context['loop']['revindex'] = $length;
  906.                     $context['loop']['length'] = $length;
  907.                     $context['loop']['last'] = === $length;
  908.                 }
  909.                 foreach ($context['_seq'] as $context["_key"] => $context["Path"]) {
  910.                     // line 717
  911.                     echo "                            <li class=\"ec-topicpath__divider\">|</li>
  912.                             <li class=\"ec-topicpath__item";
  913.                     // line 718
  914.                     if (twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse718)) {
  915.                         echo "--active";
  916.                     }
  917.                     echo "\">
  918.                                 <a href=\"";
  919.                     // line 719
  920.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  921.                     echo "?category_id=";
  922.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Path"], "id", [], "any"falsefalsefalse719), "html"nulltrue);
  923.                     echo "\">";
  924.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Path"], "name", [], "any"falsefalsefalse719), "html"nulltrue);
  925.                     echo "</a>
  926.                             </li>
  927.                         ";
  928.                     ++$context['loop']['index0'];
  929.                     ++$context['loop']['index'];
  930.                     $context['loop']['first'] = false;
  931.                     if (isset($context['loop']['length'])) {
  932.                         --$context['loop']['revindex0'];
  933.                         --$context['loop']['revindex'];
  934.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  935.                     }
  936.                 }
  937.                 $_parent $context['_parent'];
  938.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Path'], $context['_parent'], $context['loop']);
  939.                 $context array_intersect_key($context$_parent) + $_parent;
  940.                 // line 722
  941.                 echo "                    ";
  942.             }
  943.             // line 723
  944.             echo "                    ";
  945.             if ( !(null === (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'723$this->source); })()))) {
  946.                 // line 724
  947.                 echo "                        <li class=\"ec-topicpath__divider\">|</li>
  948.                         <li class=\"ec-topicpath__item--active\">
  949.                             <a href=\"";
  950.                 // line 726
  951.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  952.                 echo "?maker_id=";
  953.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'726$this->source); })()), "id", [], "any"falsefalsefalse726), "html"nulltrue);
  954.                 echo "\">";
  955.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'726$this->source); })()), "name", [], "any"falsefalsefalse726), "html"nulltrue);
  956.                 echo "</a>
  957.                         </li>
  958.                     ";
  959.             }
  960.             // line 729
  961.             echo "                    ";
  962.             if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'729$this->source); })()), "vars", [], "any"falsefalsefalse729), "value", [], "any"falsefalsefalse729) && twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'729$this->source); })()), "vars", [], "any"falsefalsefalse729), "value", [], "any"falsefalsefalse729), "name", [], "any"falsefalsefalse729))) {
  963.                 // line 730
  964.                 echo "                        <li class=\"ec-topicpath__divider\">|</li>
  965.                         <li class=\"ec-topicpath__item\">";
  966.                 // line 731
  967.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("「%name%」の検索結果", ["%name%" => twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'731$this->source); })()), "vars", [], "any"falsefalsefalse731), "value", [], "any"falsefalsefalse731), "name", [], "any"falsefalsefalse731)]), "html"nulltrue);
  968.                 echo "</li>
  969.                     ";
  970.             }
  971.             // line 733
  972.             echo "                </ol>
  973.             </div>
  974.         ";
  975.             // line 739
  976.             echo "        ";
  977.             if ((isset($context["hasFilter"]) || array_key_exists("hasFilter"$context) ? $context["hasFilter"] : (function () { throw new RuntimeError('Variable "hasFilter" does not exist.'739$this->source); })())) {
  978.                 // line 740
  979.                 echo "            <div class=\"ec-filterActive\">
  980.                 <span class=\"ec-filterActive__label\">絞り込み中:</span>
  981.                 ";
  982.                 // line 742
  983.                 if ( !(null === (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'742$this->source); })()))) {
  984.                     // line 743
  985.                     echo "                    ";
  986.                     $context["removeCategoryParam"] = ("category_id=" twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'743$this->source); })()), "request", [], "any"falsefalsefalse743), "query", [], "any"falsefalsefalse743), "get", [=> "category_id"], "method"falsefalsefalse743));
  987.                     // line 744
  988.                     echo "                    <span class=\"ec-filterActive__tag\">
  989.                         ";
  990.                     // line 745
  991.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'745$this->source); })()), "name", [], "any"falsefalsefalse745), "html"nulltrue);
  992.                     echo "
  993.                         <a href=\"";
  994.                     // line 746
  995.                     echo twig_escape_filter($this->envtwig_replace_filter(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'746$this->source); })()), "request", [], "any"falsefalsefalse746), "uri", [], "any"falsefalsefalse746), [(isset($context["removeCategoryParam"]) || array_key_exists("removeCategoryParam"$context) ? $context["removeCategoryParam"] : (function () { throw new RuntimeError('Variable "removeCategoryParam" does not exist.'746$this->source); })()) => ""]), "html"nulltrue);
  996.                     echo "\" title=\"解除\">✕</a>
  997.                     </span>
  998.                 ";
  999.                 }
  1000.                 // line 749
  1001.                 echo "                ";
  1002.                 if ( !(null === (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'749$this->source); })()))) {
  1003.                     // line 750
  1004.                     echo "                    <span class=\"ec-filterActive__tag\">
  1005.                         ";
  1006.                     // line 751
  1007.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Maker"]) || array_key_exists("Maker"$context) ? $context["Maker"] : (function () { throw new RuntimeError('Variable "Maker" does not exist.'751$this->source); })()), "name", [], "any"falsefalsefalse751), "html"nulltrue);
  1008.                     echo "
  1009.                         <a href=\"";
  1010.                     // line 752
  1011.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  1012.                     if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'752$this->source); })()), "request", [], "any"falsefalsefalse752), "query", [], "any"falsefalsefalse752), "get", [=> "category_id"], "method"falsefalsefalse752)) {
  1013.                         echo "?category_id=";
  1014.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'752$this->source); })()), "request", [], "any"falsefalsefalse752), "query", [], "any"falsefalsefalse752), "get", [=> "category_id"], "method"falsefalsefalse752), "html"nulltrue);
  1015.                     }
  1016.                     echo "\" title=\"解除\">✕</a>
  1017.                     </span>
  1018.                 ";
  1019.                 }
  1020.                 // line 755
  1021.                 echo "                ";
  1022.                 if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'755$this->source); })()), "request", [], "any"falsefalsefalse755), "query", [], "any"falsefalsefalse755), "get", [=> "price_min"], "method"falsefalsefalse755) || twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'755$this->source); })()), "request", [], "any"falsefalsefalse755), "query", [], "any"falsefalsefalse755), "get", [=> "price_max"], "method"falsefalsefalse755))) {
  1023.                     // line 756
  1024.                     echo "                    <span class=\"ec-filterActive__tag\">
  1025.                         ";
  1026.                     // line 757
  1027.                     if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'757$this->source); })()), "request", [], "any"falsefalsefalse757), "query", [], "any"falsefalsefalse757), "get", [=> "price_min"], "method"falsefalsefalse757)) {
  1028.                         echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'757$this->source); })()), "request", [], "any"falsefalsefalse757), "query", [], "any"falsefalsefalse757), "get", [=> "price_min"], "method"falsefalsefalse757)), "html"nulltrue);
  1029.                         echo "円";
  1030.                     } else {
  1031.                         echo "0円";
  1032.                     }
  1033.                     // line 758
  1034.                     echo "                        〜
  1035.                         ";
  1036.                     // line 759
  1037.                     if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'759$this->source); })()), "request", [], "any"falsefalsefalse759), "query", [], "any"falsefalsefalse759), "get", [=> "price_max"], "method"falsefalsefalse759)) {
  1038.                         echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'759$this->source); })()), "request", [], "any"falsefalsefalse759), "query", [], "any"falsefalsefalse759), "get", [=> "price_max"], "method"falsefalsefalse759)), "html"nulltrue);
  1039.                         echo "円";
  1040.                     } else {
  1041.                         echo "上限なし";
  1042.                     }
  1043.                     // line 760
  1044.                     echo "                        <a href=\"javascript:void(0);\" onclick=\"
  1045.                             var url = new URL(window.location.href);
  1046.                             url.searchParams.delete('price_min');
  1047.                             url.searchParams.delete('price_max');
  1048.                             window.location.href = url.toString();
  1049.                         \" title=\"解除\">✕</a>
  1050.                     </span>
  1051.                 ";
  1052.                 }
  1053.                 // line 768
  1054.                 echo "            </div>
  1055.         ";
  1056.             }
  1057.             // line 770
  1058.             echo "
  1059.             ";
  1060.             // line 772
  1061.             echo "            <div class=\"ec-searchnavRole__infos\">
  1062.                 <div class=\"ec-searchnavRole__counter\">
  1063.                     ";
  1064.             // line 774
  1065.             if ((twig_get_attribute($this->env$this->source, (isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'774$this->source); })()), "totalItemCount", [], "any"falsefalsefalse774) > 0)) {
  1066.                 // line 775
  1067.                 echo "                        ";
  1068.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("<span class=\"ec-font-bold\">%count%件</span><span>の商品が見つかりました</span>", ["%count%" => twig_get_attribute($this->env$this->source, (isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'775$this->source); })()), "totalItemCount", [], "any"falsefalsefalse775)]);
  1069.                 echo "
  1070.                     ";
  1071.             } else {
  1072.                 // line 777
  1073.                 echo "                        <span>";
  1074.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お探しの商品は見つかりませんでした"), "html"nulltrue);
  1075.                 echo "</span>
  1076.                     ";
  1077.             }
  1078.             // line 779
  1079.             echo "                </div>
  1080.                 ";
  1081.             // line 780
  1082.             if ((twig_get_attribute($this->env$this->source, (isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'780$this->source); })()), "totalItemCount", [], "any"falsefalsefalse780) > 0)) {
  1083.                 // line 781
  1084.                 echo "                    <div class=\"ec-searchnavRole__actions\">
  1085.                         <div class=\"ec-select\">
  1086.                             ";
  1087.                 // line 783
  1088.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'783$this->source); })()), "disp_number", [], "any"falsefalsefalse783), 'widget', ["id" => """attr" => ["class" => "disp-number"]]);
  1089.                 echo "
  1090.                             ";
  1091.                 // line 784
  1092.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["search_form"]) || array_key_exists("search_form"$context) ? $context["search_form"] : (function () { throw new RuntimeError('Variable "search_form" does not exist.'784$this->source); })()), "orderby", [], "any"falsefalsefalse784), 'widget', ["id" => """attr" => ["class" => "order-by"]]);
  1093.                 echo "
  1094.                         </div>
  1095.                     </div>
  1096.                 ";
  1097.             }
  1098.             // line 788
  1099.             echo "            </div>
  1100.         </div>
  1101.                 ";
  1102.             // line 792
  1103.             if ((twig_get_attribute($this->env$this->source, (isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'792$this->source); })()), "totalItemCount", [], "any"falsefalsefalse792) > 0)) {
  1104.                 // line 793
  1105.                 echo "                    <div class=\"ec-shelfRole\">
  1106.                         <ul class=\"ec-shelfGrid\">
  1107.                             ";
  1108.                 // line 795
  1109.                 $context['_parent'] = $context;
  1110.                 $context['_seq'] = twig_ensure_traversable((isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'795$this->source); })()));
  1111.                 $context['loop'] = [
  1112.                   'parent' => $context['_parent'],
  1113.                   'index0' => 0,
  1114.                   'index'  => 1,
  1115.                   'first'  => true,
  1116.                 ];
  1117.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1118.                     $length count($context['_seq']);
  1119.                     $context['loop']['revindex0'] = $length 1;
  1120.                     $context['loop']['revindex'] = $length;
  1121.                     $context['loop']['length'] = $length;
  1122.                     $context['loop']['last'] = === $length;
  1123.                 }
  1124.                 foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  1125.                     // line 796
  1126.                     echo "                                <li class=\"ec-shelfGrid__item\" style=\"position:relative;\">
  1127.                                     ";
  1128.                     // line 797
  1129.                     if (twig_get_attribute($this->env$this->source, (isset($context["BaseInfo"]) || array_key_exists("BaseInfo"$context) ? $context["BaseInfo"] : (function () { throw new RuntimeError('Variable "BaseInfo" does not exist.'797$this->source); })()), "option_favorite_product", [], "any"falsefalsefalse797)) {
  1130.                         // line 798
  1131.                         echo "                                        <div style=\"position:absolute;top:8px;right:20px;z-index:10;\">
  1132.                                             <form action=\"";
  1133.                         // line 799
  1134.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_favorite", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse799)]), "html"nulltrue);
  1135.                         echo "\" method=\"post\">
  1136.                                                 <button type=\"submit\" id=\"favorite\" class=\"favorite\">&#9825;</button>
  1137.                                             </form>
  1138.                                         </div>
  1139.                                     ";
  1140.                     }
  1141.                     // line 804
  1142.                     echo "                                    <a href=\"";
  1143.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse804)]), "html"nulltrue);
  1144.                     echo "\">
  1145.                                         <p class=\"ec-shelfGrid__item-image\">
  1146.                                             <img src=\"";
  1147.                     // line 806
  1148.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(twig_get_attribute($this->env$this->source$context["Product"], "main_list_image", [], "any"falsefalsefalse806)), "save_image"), "html"nulltrue);
  1149.                     echo "\" alt=\"";
  1150.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsefalse806), "html"nulltrue);
  1151.                     echo "\" width=\"180\" height=\"180\"";
  1152.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse806) > 5)) {
  1153.                         echo " loading=\"lazy\"";
  1154.                     }
  1155.                     echo ">
  1156.                                         </p>
  1157.                                         ";
  1158.                     // line 808
  1159.                     if ((twig_get_attribute($this->env$this->source$context["Product"], "Maker", [], "any"falsefalsefalse808) && twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["Product"], "Maker", [], "any"falsefalsefalse808), "name", [], "any"falsefalsefalse808))) {
  1160.                         // line 809
  1161.                         echo "                                            <p class=\"ec-shelfGrid__item-maker\" style=\"font-size:12px;color:#666;margin:2px 0 4px;\">";
  1162.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["Product"], "Maker", [], "any"falsefalsefalse809), "name", [], "any"falsefalsefalse809), "html"nulltrue);
  1163.                         echo "</p>
  1164.                                         ";
  1165.                     }
  1166.                     // line 811
  1167.                     echo "                                        <h5><strong>";
  1168.                     echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse811), "related_keyword"), "html"nulltrue);
  1169.                     echo "</strong></h5>
  1170.                                         <p class=\"price02-default\">
  1171.                                             ";
  1172.                     // line 813
  1173.                     if (((null === twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Max", [], "any"falsefalsefalse813)) || (twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Max", [], "any"falsefalsefalse813) == 0))) {
  1174.                         // line 814
  1175.                         echo "                                                現地調査見積
  1176.                                             ";
  1177.                     } elseif (twig_get_attribute($this->env$this->source,                     // line 815
  1178. $context["Product"], "hasProductClass", [], "any"falsefalsefalse815)) {
  1179.                         // line 816
  1180.                         echo "                                                ";
  1181.                         if ((twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Min", [], "any"falsefalsefalse816) == twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Max", [], "any"falsefalsefalse816))) {
  1182.                             // line 817
  1183.                             echo "                                                    ";
  1184.                             echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse817)), "html"nulltrue);
  1185.                             echo "円
  1186.                                                 ";
  1187.                         } else {
  1188.                             // line 819
  1189.                             echo "                                                    ";
  1190.                             echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse819)), "html"nulltrue);
  1191.                             echo "円  ~ ";
  1192.                             echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMax", [], "any"falsefalsefalse819)), "html"nulltrue);
  1193.                             echo "円
  1194.                                                 ";
  1195.                         }
  1196.                         // line 821
  1197.                         echo "                                            ";
  1198.                     } else {
  1199.                         // line 822
  1200.                         echo "                                                ";
  1201.                         echo twig_escape_filter($this->envtwig_number_format_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse822)), "html"nulltrue);
  1202.                         echo "円 ~
  1203.                                             ";
  1204.                     }
  1205.                     // line 824
  1206.                     echo "                                        </p>
  1207.                                     </a>
  1208.                                     ";
  1209.                     // line 827
  1210.                     if (twig_get_attribute($this->env$this->source$context["Product"], "stock_find", [], "any"falsefalsefalse827)) {
  1211.                         // line 828
  1212.                         echo "                                        ";
  1213.                         $context["form"] = twig_get_attribute($this->env$this->source, (isset($context["forms"]) || array_key_exists("forms"$context) ? $context["forms"] : (function () { throw new RuntimeError('Variable "forms" does not exist.'828$this->source); })()), twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse828), [], "array"falsefalsefalse828);
  1214.                         // line 829
  1215.                         echo "                                        <form name=\"form";
  1216.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse829), "html"nulltrue);
  1217.                         echo "\" id=\"productForm";
  1218.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse829), "html"nulltrue);
  1219.                         echo "\" action=\"";
  1220.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse829)]), "html"nulltrue);
  1221.                         echo "\" method=\"get\">
  1222.                                             <div class=\"ec-productRole__actions\">
  1223.                                                 ";
  1224.                         // line 831
  1225.                         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse831)) {
  1226.                             // line 832
  1227.                             echo "                                                    <div class=\"ec-select\">
  1228.                                                         ";
  1229.                             // line 833
  1230.                             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'833$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse833), 'widget');
  1231.                             echo "
  1232.                                                         ";
  1233.                             // line 834
  1234.                             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'834$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse834), 'errors');
  1235.                             echo "
  1236.                                                     </div>
  1237.                                                     ";
  1238.                             // line 836
  1239.                             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse836)) {
  1240.                                 // line 837
  1241.                                 echo "                                                        <div class=\"ec-select\">
  1242.                                                             ";
  1243.                                 // line 838
  1244.                                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'838$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse838), 'widget');
  1245.                                 echo "
  1246.                                                             ";
  1247.                                 // line 839
  1248.                                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'839$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse839), 'errors');
  1249.                                 echo "
  1250.                                                         </div>
  1251.                                                     ";
  1252.                             }
  1253.                             // line 842
  1254.                             echo "                                                ";
  1255.                         }
  1256.                         // line 843
  1257.                         echo "                                                <div class=\"ec-numberInput\" style=\"display:none;\"><span>";
  1258.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  1259.                         echo "</span>
  1260.                                                     ";
  1261.                         // line 844
  1262.                         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'844$this->source); })()), "quantity", [], "any"falsefalsefalse844), 'errors');
  1263.                         echo "
  1264.                                                 </div>
  1265.                                             </div>
  1266.                                             <div class=\"ec-productRole__btn\">
  1267.                                                 <button class=\"ec-blockBtn--action\">
  1268.                                                     ";
  1269.                         // line 849
  1270.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お見積もりはこちら"), "html"nulltrue);
  1271.                         echo "
  1272.                                                 </button>
  1273.                                             </div>
  1274.                                         </form>
  1275.                                     ";
  1276.                     } else {
  1277.                         // line 854
  1278.                         echo "                                        <div class=\"ec-productRole__btn\">
  1279.                                             <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1280.                                                 ";
  1281.                         // line 856
  1282.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  1283.                         echo "
  1284.                                             </button>
  1285.                                         </div>
  1286.                                     ";
  1287.                     }
  1288.                     // line 860
  1289.                     echo "                                </li>
  1290.                             ";
  1291.                     ++$context['loop']['index0'];
  1292.                     ++$context['loop']['index'];
  1293.                     $context['loop']['first'] = false;
  1294.                     if (isset($context['loop']['length'])) {
  1295.                         --$context['loop']['revindex0'];
  1296.                         --$context['loop']['revindex'];
  1297.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  1298.                     }
  1299.                 }
  1300.                 $_parent $context['_parent'];
  1301.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  1302.                 $context array_intersect_key($context$_parent) + $_parent;
  1303.                 // line 862
  1304.                 echo "                        </ul>
  1305.                     </div>
  1306.                     <div class=\"ec-pagerRole\">
  1307.                         ";
  1308.                 // line 865
  1309.                 $this->loadTemplate("pager.twig""Product/list.twig"865)->display(twig_array_merge($context, ["pages" => twig_get_attribute($this->env$this->source, (isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'865$this->source); })()), "paginationData", [], "any"falsefalsefalse865)]));
  1310.                 // line 866
  1311.                 echo "                    </div>
  1312.                 ";
  1313.             }
  1314.             // line 868
  1315.             echo "            </div>
  1316.             ";
  1317.             // line 870
  1318.             echo "
  1319.         </div>
  1320.         ";
  1321.             // line 873
  1322.             echo "
  1323.     ";
  1324.         }
  1325.         
  1326.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  1327.         
  1328.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  1329.     }
  1330.     public function getTemplateName()
  1331.     {
  1332.         return "Product/list.twig";
  1333.     }
  1334.     public function isTraitable()
  1335.     {
  1336.         return false;
  1337.     }
  1338.     public function getDebugInfo()
  1339.     {
  1340.         return array (  1420 => 873,  1416 => 870,  1413 => 868,  1409 => 866,  1407 => 865,  1402 => 862,  1387 => 860,  1380 => 856,  1376 => 854,  1368 => 849,  1360 => 844,  1355 => 843,  1352 => 842,  1346 => 839,  1342 => 838,  1339 => 837,  1337 => 836,  1332 => 834,  1328 => 833,  1325 => 832,  1323 => 831,  1313 => 829,  1310 => 828,  1308 => 827,  1303 => 824,  1297 => 822,  1294 => 821,  1286 => 819,  1280 => 817,  1277 => 816,  1275 => 815,  1272 => 814,  1270 => 813,  1264 => 811,  1258 => 809,  1256 => 808,  1245 => 806,  1239 => 804,  1231 => 799,  1228 => 798,  1226 => 797,  1223 => 796,  1206 => 795,  1202 => 793,  1200 => 792,  1194 => 788,  1187 => 784,  1183 => 783,  1179 => 781,  1177 => 780,  1174 => 779,  1168 => 777,  1162 => 775,  1160 => 774,  1156 => 772,  1153 => 770,  1149 => 768,  1139 => 760,  1132 => 759,  1129 => 758,  1122 => 757,  1119 => 756,  1116 => 755,  1106 => 752,  1102 => 751,  1099 => 750,  1096 => 749,  1090 => 746,  1086 => 745,  1083 => 744,  1080 => 743,  1078 => 742,  1074 => 740,  1071 => 739,  1066 => 733,  1061 => 731,  1058 => 730,  1055 => 729,  1045 => 726,  1041 => 724,  1038 => 723,  1035 => 722,  1014 => 719,  1008 => 718,  1005 => 717,  987 => 716,  985 => 715,  979 => 714,  975 => 712,  971 => 709,  959 => 707,  955 => 706,  950 => 705,  946 => 704,  942 => 702,  940 => 701,  934 => 698,  931 => 697,  929 => 696,  926 => 695,  923 => 693,  919 => 690,  913 => 687,  910 => 686,  907 => 685,  901 => 680,  894 => 678,  890 => 676,  880 => 672,  870 => 671,  865 => 670,  861 => 669,  858 => 668,  856 => 667,  851 => 665,  841 => 664,  836 => 663,  832 => 662,  827 => 660,  823 => 659,  820 => 658,  818 => 620,  813 => 617,  808 => 613,  805 => 612,  795 => 608,  785 => 607,  780 => 606,  775 => 605,  772 => 592,  770 => 591,  767 => 590,  757 => 586,  747 => 585,  742 => 584,  737 => 583,  735 => 582,  729 => 578,  712 => 563,  708 => 562,  701 => 558,  696 => 556,  690 => 552,  687 => 550,  683 => 547,  680 => 543,  678 => 542,  674 => 540,  664 => 539,  585 => 469,  581 => 468,  556 => 445,  542 => 444,  534 => 443,  517 => 442,  513 => 440,  503 => 439,  73 => 16,  63 => 15,  52 => 11,  50 => 13,  37 => 11,);
  1341.     }
  1342.     public function getSourceContext()
  1343.     {
  1344.         return new Source("{#
  1345. This file is part of EC-CUBE
  1346. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1347. http://www.ec-cube.co.jp/
  1348. For the full copyright and license information, please view the LICENSE
  1349. file that was distributed with this source code.
  1350. #}
  1351. {% extends 'default_frame.twig' %}
  1352. {% set body_class = 'product_page' %}
  1353. {% block stylesheet %}
  1354.     <link rel=\"stylesheet\" href=\"/html/plugins/ion-rangeslider/css/ion.rangeSlider.min.css\">
  1355.     <style>
  1356.         /* ============================================
  1357.            サイドバー付き 2カラムレイアウト
  1358.         ============================================ */
  1359.         .ec-productListLayout {
  1360.             display: flex;
  1361.             gap: 32px;
  1362.             align-items: flex-start;
  1363.         }
  1364.         /* ============================================
  1365.            サイドバー(フィルターパネル)
  1366.         ============================================ */
  1367.         .ec-filterSidebar {
  1368.             position: -webkit-sticky;
  1369.             position: sticky;
  1370.             top: 80px;
  1371.             align-self: flex-start;
  1372.             max-height: calc(100vh - 100px);
  1373.             overflow-y: auto;
  1374.             margin: 20px;
  1375.             width: 240px;
  1376.             flex-shrink: 0;
  1377.         }
  1378.         @media (max-width: 767px) {
  1379.             .ec-filterSidebar {
  1380.                 position: static;
  1381.                 max-height: none;
  1382.                 overflow-y: visible;
  1383.             }
  1384.         }
  1385.         /* Wide desktop: center the main column to align with site grid (1130 + 280 sidebar) */
  1386.         @media (min-width: 1410px) {
  1387. \t\t\t.ec-searchnavRole {
  1388. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  1389. \t\t\t}
  1390. \t\t\t.ec-shelfRole {
  1391. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  1392. \t\t\t}
  1393. \t\t\t.ec-pagerRole {
  1394. \t\t\t\tmargin-left: calc((100% - 1130px - 280px) / 2);
  1395. \t\t\t}
  1396. \t\t}
  1397.         .ec-filterSidebar__section {
  1398.             background: #fff;
  1399.             border: 1px solid #e8e8e8;
  1400.             border-radius: 6px;
  1401.             padding: 18px 16px;
  1402.             margin-bottom: 16px;
  1403.         }
  1404.         .ec-filterSidebar__heading {
  1405.             font-size: 13px;
  1406.             font-weight: bold;
  1407.             color: #222;
  1408.             margin: 0 0 12px;
  1409.             padding-bottom: 10px;
  1410.             border-bottom: 2px solid #222;
  1411.             letter-spacing: 0.05em;
  1412.         }
  1413.         /* カテゴリ: 見出しを上部に固定し、一覧を内部スクロールさせる */
  1414.         .ec-filterSidebar__section--category .ec-filterSidebar__heading {
  1415.             position: -webkit-sticky;
  1416.             position: sticky;
  1417.             top: 0;
  1418.             background: #fff;
  1419.             z-index: 2;
  1420.         }
  1421.         .ec-filterSidebar__section--category .ec-filterSidebar__body {
  1422.             max-height: 60vh;
  1423.             overflow-y: auto;
  1424.         }
  1425.         /* カテゴリリスト */
  1426.         .ec-filterSidebar__categoryList,
  1427.         .ec-filterSidebar__categoryList ul {
  1428.             list-style: none;
  1429.             padding: 0;
  1430.             margin: 0;
  1431.         }
  1432.         .ec-filterSidebar__categoryList li a {
  1433.             display: block;
  1434.             padding: 6px 8px;
  1435.             font-size: 13px;
  1436.             color: #444;
  1437.             text-decoration: none;
  1438.             border-radius: 4px;
  1439.             transition: background 0.15s, color 0.15s;
  1440.         }
  1441.         .ec-filterSidebar__categoryList li a:hover {
  1442.             background: #f5f5f5;
  1443.             color: #222;
  1444.         }
  1445.         .ec-filterSidebar__categoryList li.is-active > a {
  1446.             font-weight: bold;
  1447.             color: #c00;
  1448.             background: #fff5f5;
  1449.         }
  1450.         /* サブカテゴリ */
  1451.         .ec-filterSidebar__categoryList ul {
  1452.             padding-left: 12px;
  1453.             margin-top: 2px;
  1454.         }
  1455.         .ec-filterSidebar__categoryList ul li a {
  1456.             font-size: 12px;
  1457.             color: #666;
  1458.             padding: 4px 8px;
  1459.         }
  1460.         /* メーカーリスト */
  1461.         .ec-filterSidebar__makerList {
  1462.             list-style: none;
  1463.             padding: 0;
  1464.             margin: 0;
  1465.         }
  1466.         .ec-filterSidebar__makerList li {
  1467.             border-bottom: 1px solid #f0f0f0;
  1468.         }
  1469.         .ec-filterSidebar__makerList li:last-child {
  1470.             border-bottom: none;
  1471.         }
  1472.         .ec-filterSidebar__makerList li a {
  1473.             display: flex;
  1474.             align-items: center;
  1475.             gap: 6px;
  1476.             padding: 7px 6px;
  1477.             font-size: 13px;
  1478.             color: #444;
  1479.             text-decoration: none;
  1480.             transition: color 0.15s;
  1481.         }
  1482.         .ec-filterSidebar__makerList li a:hover {
  1483.             color: #c00;
  1484.         }
  1485.         .ec-filterSidebar__makerList li.is-active a {
  1486.             font-weight: bold;
  1487.             color: #c00;
  1488.         }
  1489.         .ec-filterSidebar__makerList li.is-active a::before {
  1490.             content: \"✓\";
  1491.             font-size: 11px;
  1492.             color: #c00;
  1493.         }
  1494.         /* 価格帯フィルター */
  1495.         .ec-filterSidebar__priceDisplay {
  1496.             text-align: center;
  1497.             font-size: 13px;
  1498.             color: #333;
  1499.             margin-bottom: 12px;
  1500.             font-weight: bold;
  1501.         }
  1502.         .ec-filterSidebar__priceDisplay span {
  1503.             color: #c00;
  1504.         }
  1505.         .ec-filterSidebar__priceSliderWrap {
  1506.             /* Side padding holds room for ion-rangeSlider .irs-to / .irs-from labels
  1507.                so the max-value tooltip never spills past the sidebar edge. */
  1508.             padding: 0 14px;
  1509.             margin-bottom: 16px;
  1510.         }
  1511.         .ec-filterSidebar__priceApply {
  1512.             display: block;
  1513.             width: 100%;
  1514.             padding: 8px;
  1515.             background: #222;
  1516.             color: #fff;
  1517.             border: none;
  1518.             border-radius: 4px;
  1519.             font-size: 13px;
  1520.             cursor: pointer;
  1521.             text-align: center;
  1522.             transition: background 0.2s;
  1523.         }
  1524.         .ec-filterSidebar__priceApply:hover {
  1525.             background: #444;
  1526.         }
  1527.         .ec-filterSidebar__pricePreset {
  1528.             list-style: none;
  1529.             padding: 0;
  1530.             margin: 10px 0 0;
  1531.         }
  1532.         .ec-filterSidebar__pricePreset li a {
  1533.             display: block;
  1534.             padding: 5px 6px;
  1535.             font-size: 12px;
  1536.             color: #666;
  1537.             text-decoration: none;
  1538.             border-radius: 4px;
  1539.             transition: background 0.15s;
  1540.         }
  1541.         .ec-filterSidebar__pricePreset li a:hover {
  1542.             background: #f5f5f5;
  1543.             color: #333;
  1544.         }
  1545.         /* 絞り込みリセット */
  1546.         .ec-filterSidebar__reset a {
  1547.             display: block;
  1548.             text-align: center;
  1549.             padding: 8px;
  1550.             font-size: 12px;
  1551.             color: #888;
  1552.             text-decoration: underline;
  1553.             border: 1px solid #ddd;
  1554.             border-radius: 4px;
  1555.             transition: color 0.15s, border-color 0.15s;
  1556.         }
  1557.         .ec-filterSidebar__reset a:hover {
  1558.             color: #c00;
  1559.             border-color: #c00;
  1560.         }
  1561.         /* 現在の絞り込み条件バッジ */
  1562.         .ec-filterActive {
  1563.             display: flex;
  1564.             flex-wrap: wrap;
  1565.             gap: 6px;
  1566.             margin-bottom: 12px;
  1567.             padding: 10px 12px;
  1568.             background: #f9f9f9;
  1569.             border: 1px solid #e8e8e8;
  1570.             border-radius: 6px;
  1571.         }
  1572.         .ec-filterActive__label {
  1573.             font-size: 11px;
  1574.             color: #888;
  1575.             align-self: center;
  1576.             margin-right: 4px;
  1577.         }
  1578.         .ec-filterActive__tag {
  1579.             display: inline-flex;
  1580.             align-items: center;
  1581.             gap: 4px;
  1582.             padding: 3px 8px;
  1583.             background: #222;
  1584.             color: #fff;
  1585.             border-radius: 20px;
  1586.             font-size: 11px;
  1587.         }
  1588.         .ec-filterActive__tag a {
  1589.             color: #aaa;
  1590.             text-decoration: none;
  1591.             font-size: 12px;
  1592.             line-height: 1;
  1593.         }
  1594.         .ec-filterActive__tag a:hover {
  1595.             color: #fff;
  1596.         }
  1597.         /* メインコンテンツ側 */
  1598.         .ec-productListMain {
  1599.             flex: 1;
  1600.             min-width: 0;
  1601.             width: 100%;  
  1602.         }
  1603.         /* ion-rangeslider カスタマイズ */
  1604.         .irs--flat .irs-bar {
  1605.             background-color: #222;
  1606.         }
  1607.         .irs--flat .irs-handle > i:first-child {
  1608.             background-color: #222;
  1609.         }
  1610.         .irs--flat .irs-from,
  1611.         .irs--flat .irs-to,
  1612.         .irs--flat .irs-single {
  1613.             background-color: #222;
  1614.             font-size: 11px;
  1615.         }
  1616.         /* Tablet (768-1199px): stack sidebar above grid to avoid overlap */
  1617.         @media (min-width: 768px) and (max-width: 1199px) {
  1618.             .ec-productListLayout {
  1619.                 flex-direction: column;
  1620.                 gap: 0;
  1621.             }
  1622.             .ec-filterSidebar {
  1623.                 width: 100%;
  1624.                 margin: 0 0 16px;
  1625.             }
  1626.             .ec-productListMain {
  1627.                 width: 100%;
  1628.             }
  1629.             /* Allow CTA to wrap and avoid truncation in 2-col tablet grid */
  1630.             .ec-shelfGrid .ec-blockBtn--action {
  1631.                 white-space: normal;
  1632.                 line-height: 1.3;
  1633.                 height: auto;
  1634.                 min-height: 56px;
  1635.                 padding: 12px 8px;
  1636.                 font-size: 0.8rem;
  1637.             }
  1638.         }
  1639.         /* Price slider tooltip: prevent label overlap when results are empty */
  1640.         .ec-productListMain .ec-shelfRole:empty + .ec-pagerRole,
  1641.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-from,
  1642.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-to,
  1643.         .ec-productListMain:has(.ec-shelfGrid:empty) .ec-filterSidebar__priceSliderWrap .irs-single {
  1644.             visibility: hidden;
  1645.         }
  1646.         .ec-filterSidebar__priceSliderWrap .irs {
  1647.             position: relative;
  1648.             z-index: 1;
  1649.         }
  1650.         .ec-filterSidebar__priceSliderWrap .irs-from,
  1651.         .ec-filterSidebar__priceSliderWrap .irs-to,
  1652.         .ec-filterSidebar__priceSliderWrap .irs-single {
  1653.             white-space: nowrap;
  1654.         }
  1655.         /* モバイル対応 */
  1656.         @media (max-width: 767px) {
  1657.             /* 横スクロール禁止 */
  1658.             body, html {
  1659.                 overflow-x: hidden;
  1660.                 max-width: 100vw;
  1661.             }
  1662.             .ec-productListLayout {
  1663.                 flex-direction: column;
  1664.                 gap: 0;
  1665.             }
  1666.             .ec-filterSidebar {
  1667.                 width: 100%;
  1668.                 margin: 0;
  1669.             }
  1670.             /* スマホで商品一覧を確実に表示 */
  1671.             .ec-productListMain {
  1672.                 width: 100%;
  1673.                 flex: none;
  1674.                 margin: 0;
  1675.             }
  1676.             .ec-filterSidebar__section {
  1677.                 margin-bottom: 10px;
  1678.             }
  1679.             /* Allow CTA to wrap and avoid truncation in narrow mobile cards */
  1680.             .ec-shelfGrid .ec-blockBtn--action {
  1681.                 white-space: normal;
  1682.                 word-break: keep-all;
  1683.                 overflow-wrap: anywhere;
  1684.                 line-height: 1.3;
  1685.                 height: auto;
  1686.                 min-height: 56px;
  1687.                 padding: 12px 8px;
  1688.                 font-size: 0.8rem;
  1689.             }
  1690.             /* モバイルではアコーディオン形式 */
  1691.             .ec-filterSidebar__body {
  1692.                 display: none;
  1693.             }
  1694.             .ec-filterSidebar__body.is-open {
  1695.                 display: block;
  1696.             }
  1697.             .ec-filterSidebar__heading {
  1698.                 cursor: pointer;
  1699.                 display: flex;
  1700.                 justify-content: space-between;
  1701.                 align-items: center;
  1702.                 margin-bottom: 0;
  1703.                 padding-bottom: 0;
  1704.                 border-bottom: none;
  1705.             }
  1706.             .ec-filterSidebar__heading.is-open {
  1707.                 margin-bottom: 12px;
  1708.                 padding-bottom: 10px;
  1709.                 border-bottom: 2px solid #222;
  1710.             }
  1711.             .ec-filterSidebar__heading::after {
  1712.                 content: \"▼\";
  1713.                 font-size: 10px;
  1714.                 color: #888;
  1715.                 transition: transform 0.2s;
  1716.             }
  1717.             .ec-filterSidebar__heading.is-open::after {
  1718.                 transform: rotate(180deg);
  1719.             }
  1720.         }
  1721.     </style>
  1722. {% endblock %}
  1723. {% block javascript %}
  1724.     <script>
  1725.         eccube.productsClassCategories = {
  1726.             {% for Product in pagination %}
  1727.             \"{{ Product.id|escape('js') }}\": {{ class_categories_as_json(Product)|raw }}{% if loop.last == false %}, {% endif %}
  1728.             {% endfor %}
  1729.         };
  1730.         \$(function() {
  1731.             // 表示件数を変更
  1732.             \$('.disp-number').change(function() {
  1733.                 var dispNumber = \$(this).val();
  1734.                 \$('#disp_number').val(dispNumber);
  1735.                 \$('#pageno').val(1);
  1736.                 \$(\"#form1\").submit();
  1737.             });
  1738.             // 並び順を変更
  1739.             \$('.order-by').change(function() {
  1740.                 var orderBy = \$(this).val();
  1741.                 \$('#orderby').val(orderBy);
  1742.                 \$('#pageno').val(1);
  1743.                 \$(\"#form1\").submit();
  1744.             });
  1745.             // ==============================
  1746.             // 価格帯スライダー(ion-rangeslider)
  1747.             // ==============================
  1748.             var priceMin = parseInt('{{ app.request.query.get(\"price_min\") ?: 0 }}') || 0;
  1749.             var priceMax = parseInt('{{ app.request.query.get(\"price_max\") ?: 5000000 }}') || 5000000;
  1750.             \$(\"#price-range-slider\").ionRangeSlider({
  1751.                 type: \"double\",
  1752.                 min: 0,
  1753.                 max: 5000000,
  1754.                 from: priceMin,
  1755.                 to: priceMax,
  1756.                 step: 10000,
  1757.                 prettify_enabled: true,
  1758.                 prettify_separator: \",\",
  1759.                 postfix: \"円\",
  1760.                 onFinish: function(data) {
  1761.                     \$('#price_min_val').val(data.from);
  1762.                     \$('#price_max_val').val(data.to);
  1763.                     // 表示更新
  1764.                     \$('#price-display-min').text(Number(data.from).toLocaleString());
  1765.                     \$('#price-display-max').text(Number(data.to).toLocaleString());
  1766.                 }
  1767.             });
  1768.             // 価格フォーム送信
  1769.             \$('#price-filter-apply').on('click', function() {
  1770.                 var min = \$('#price_min_val').val();
  1771.                 var max = \$('#price_max_val').val();
  1772.                 var url = new URL(window.location.href);
  1773.                 url.searchParams.set('price_min', min);
  1774.                 url.searchParams.set('price_max', max);
  1775.                 url.searchParams.delete('pageno');
  1776.                 window.location.href = url.toString();
  1777.             });
  1778.             // モバイル:アコーディオン(初期状態を閉じる)
  1779.             function initMobileAccordion() {
  1780.                 if (\$(window).width() <= 767) {
  1781.                     \$('.ec-filterSidebar__heading').removeClass('is-open');
  1782.                     \$('.ec-filterSidebar__body').removeClass('is-open');
  1783.                 }
  1784.             }
  1785.             initMobileAccordion();
  1786.             \$(window).on('resize', initMobileAccordion);
  1787.             \$('.ec-filterSidebar__heading').on('click', function() {
  1788.                 if (\$(window).width() <= 767) {
  1789.                     \$(this).toggleClass('is-open');
  1790.                     \$(this).next('.ec-filterSidebar__body').toggleClass('is-open');
  1791.                 }
  1792.             });
  1793.         });
  1794.         \$('.ec-modal-wrap').on('click', function(e) {
  1795.             e.stopPropagation();
  1796.         });
  1797.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  1798.             \$('.ec-modal').hide()
  1799.         });
  1800. \t    // 価格プリセットのクイック適用
  1801. \t    function applyPrice(min, max) {
  1802. \t        var url = new URL(window.location.href);
  1803. \t        url.searchParams.set('price_min', min);
  1804. \t        url.searchParams.set('price_max', max);
  1805. \t        url.searchParams.delete('pageno');
  1806. \t        window.location.href = url.toString();
  1807. \t    }
  1808.     </script>
  1809.     <script src=\"/html/plugins/ion-rangeslider/js/ion.rangeSlider.min.js\"></script>
  1810. {% endblock %}
  1811. {% block main %}
  1812.         {% set hasFilter = app.request.query.get('category_id') or app.request.query.get('maker_id') or app.request.query.get('price_min') or app.request.query.get('price_max') %}
  1813.         {# ==============================
  1814.            2カラムレイアウト本体
  1815.         ============================== #}
  1816.         <div class=\"ec-productListLayout\">
  1817.             {# ===== サイドバー(左カラム)===== #}
  1818.             <aside class=\"ec-filterSidebar\">
  1819.                 {# ----- 価格帯 ----- #}
  1820.                 <div class=\"ec-filterSidebar__section\">
  1821.                     <h3 class=\"ec-filterSidebar__heading\">価格帯</h3>
  1822.                     <div class=\"ec-filterSidebar__body is-open\">
  1823.                         <div class=\"ec-filterSidebar__priceDisplay\">
  1824.                             <span id=\"price-display-min\">{{ app.request.query.get('price_min') ? app.request.query.get('price_min')|number_format : '0' }}</span>円
  1825.                             〜
  1826.                             <span id=\"price-display-max\">{{ app.request.query.get('price_max') ? app.request.query.get('price_max')|number_format : '5,000,000' }}</span>円
  1827.                         </div>
  1828.                         <div class=\"ec-filterSidebar__priceSliderWrap\">
  1829.                             <input type=\"text\" id=\"price-range-slider\" style=\"display:none;\">
  1830.                             <input type=\"hidden\" id=\"price_min_val\" value=\"{{ app.request.query.get('price_min') ?: 0 }}\">
  1831.                             <input type=\"hidden\" id=\"price_max_val\" value=\"{{ app.request.query.get('price_max') ?: 5000000 }}\">
  1832.                         </div>
  1833.                         <button id=\"price-filter-apply\" class=\"ec-filterSidebar__priceApply\">この価格帯で絞り込む</button>
  1834.                         <ul class=\"ec-filterSidebar__pricePreset\">
  1835.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(0, 300000)\">〜30万円</a></li>
  1836.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(300000, 600000)\">30万円〜60万円</a></li>
  1837.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(600000, 1000000)\">60万円〜100万円</a></li>
  1838.                             <li><a href=\"javascript:void(0);\" onclick=\"applyPrice(1000000, 5000000)\">100万円〜</a></li>
  1839.                         </ul>
  1840.                     </div>
  1841.                 </div>
  1842.                 {# ----- メーカー(ブランド)----- #}
  1843.                 <div class=\"ec-filterSidebar__section\">
  1844.                     <h3 class=\"ec-filterSidebar__heading\">ブランド</h3>
  1845.                     <div class=\"ec-filterSidebar__body is-open\">
  1846.                         <ul class=\"ec-filterSidebar__makerList\">
  1847.                             {% if Makers is defined %}
  1848.                                 {% for MakerItem in Makers %}
  1849.                                     <li class=\"{{ Maker is not null and Maker.id == MakerItem.id ? 'is-active' : '' }}\">
  1850.                                         <a href=\"{{ url('product_list') }}?maker_id={{ MakerItem.id }}{% if app.request.query.get('category_id') %}&category_id={{ app.request.query.get('category_id') }}{% endif %}\">
  1851.                                             {{ MakerItem.name }}
  1852.                                         </a>
  1853.                                     </li>
  1854.                                 {% endfor %}
  1855.                             {% else %}
  1856.                                 {# Makersがコントローラから渡されない場合は静的リストで対応 #}
  1857.                                 {% set makerList = [
  1858.                                     {id: 1,  name: 'LIXIL'},
  1859.                                     {id: 2,  name: 'YKK AP'},
  1860.                                     {id: 3,  name: '三協アルミ'},
  1861.                                     {id: 4,  name: '四国化成'},
  1862.                                     {id: 5,  name: 'タカショー'},
  1863.                                     {id: 6,  name: 'ユニソン'},
  1864.                                     {id: 7,  name: 'エスビック'},
  1865.                                     {id: 8,  name: 'パナソニック'},
  1866.                                     {id: 9,  name: 'イナバ'},
  1867.                                     {id: 10, name: 'ヨドコウ'},
  1868.                                     {id: 13, name: 'タクボ'}
  1869.                                 ] %}
  1870.                                 {% for maker in makerList %}
  1871.                                     <li class=\"{{ Maker is not null and Maker.id == maker.id ? 'is-active' : '' }}\">
  1872.                                         <a href=\"{{ url('product_list') }}?maker_id={{ maker.id }}{% if app.request.query.get('category_id') %}&category_id={{ app.request.query.get('category_id') }}{% endif %}\">
  1873.                                             {{ maker.name }}
  1874.                                         </a>
  1875.                                     </li>
  1876.                                 {% endfor %}
  1877.                             {% endif %}
  1878.                         </ul>
  1879.                     </div>
  1880.                 </div>
  1881.                 {# ----- カテゴリ ----- #}
  1882.                 <div class=\"ec-filterSidebar__section ec-filterSidebar__section--category\">
  1883.                     <h3 class=\"ec-filterSidebar__heading\">カテゴリ</h3>
  1884.                     <div class=\"ec-filterSidebar__body is-open\">
  1885.                         {% set categoryList = [
  1886.                             {id: 7,  name: 'カーポート・車庫',         children: []},
  1887.                             {id: 16, name: 'ガレージ・倉庫',           children: []},
  1888.                             {id: 8,  name: 'サイクルポート・駐輪場',   children: []},
  1889.                             {id: 9,  name: 'ゲート',                   children: [
  1890.                                 {id: 30, name: '跳ね上げ式ゲート'},
  1891.                                 {id: 29, name: '伸縮ゲート'},
  1892.                                 {id: 31, name: 'ガレージシャッター'}
  1893.                             ]},
  1894.                             {id: 12, name: 'テラス',                   children: [
  1895.                                 {id: 33, name: 'テラス囲い'},
  1896.                                 {id: 32, name: 'テラス屋根'}
  1897.                             ]},
  1898.                             {id: 19, name: 'ベランダ・バルコニー',     children: []},
  1899.                             {id: 35, name: 'バルコニー屋根',           children: []},
  1900.                             {id: 18, name: 'オーニング・日よけ',       children: []},
  1901.                             {id: 11, name: 'ウッドデッキ',             children: [
  1902.                                 {id: 37, name: 'タイルデッキ'},
  1903.                                 {id: 36, name: 'ウッドデッキ'}
  1904.                             ]},
  1905.                             {id: 14, name: 'フェンス・柵',             children: []},
  1906.                             {id: 25, name: '門扉',                     children: []},
  1907.                             {id: 13, name: 'ポスト・門柱宅配ボックス', children: []},
  1908.                             {id: 15, name: '物置・収納・屋外倉庫',     children: []},
  1909.                             {id: 20, name: 'ガーデンファニチャー',     children: []},
  1910.                             {id: 22, name: '人工芝',                   children: []},
  1911.                             {id: 17, name: '内窓・二重窓',             children: []},
  1912.                             {id: 26, name: 'その他',                   children: [
  1913.                                 {id: 38, name: 'パーゴラ'},
  1914.                                 {id: 39, name: '立水栓・ガーデンシンク'},
  1915.                                 {id: 40, name: '手すり'},
  1916.                                 {id: 10, name: 'ストックヤード'},
  1917.                                 {id: 27, name: 'ゴミステーション'},
  1918.                                 {id: 42, name: '面格子・窓格子'},
  1919.                                 {id: 41, name: '窓シャッター'},
  1920.                                 {id: 43, name: '玄関ドア'}
  1921.                             ]}
  1922.                         ] %}
  1923.                         <ul class=\"ec-filterSidebar__categoryList\">
  1924.                             <li class=\"{{ app.request.query.get('category_id') is empty and Maker is null ? 'is-active' : '' }}\">
  1925.                                 <a href=\"{{ url('product_list') }}\">すべて</a>
  1926.                             </li>
  1927.                             {% for cat in categoryList %}
  1928.                                 <li class=\"{{ app.request.query.get('category_id') == cat.id ? 'is-active' : '' }}\">
  1929.                                     <a href=\"{{ url('product_list') }}?category_id={{ cat.id }}{% if app.request.query.get('maker_id') %}&maker_id={{ app.request.query.get('maker_id') }}{% endif %}\">
  1930.                                         {{ cat.name }}
  1931.                                     </a>
  1932.                                     {% if cat.children|length > 0 %}
  1933.                                         <ul>
  1934.                                             {% for child in cat.children %}
  1935.                                                 <li class=\"{{ app.request.query.get('category_id') == child.id ? 'is-active' : '' }}\">
  1936.                                                     <a href=\"{{ url('product_list') }}?category_id={{ child.id }}{% if app.request.query.get('maker_id') %}&maker_id={{ app.request.query.get('maker_id') }}{% endif %}\">
  1937.                                                         {{ child.name }}
  1938.                                                     </a>
  1939.                                                 </li>
  1940.                                             {% endfor %}
  1941.                                         </ul>
  1942.                                     {% endif %}
  1943.                                 </li>
  1944.                             {% endfor %}
  1945.                         </ul>
  1946.                     </div>
  1947.                 </div>
  1948.                 {# ----- リセット ----- #}
  1949.                 {% if hasFilter %}
  1950.                     <div class=\"ec-filterSidebar__reset\">
  1951.                         <a href=\"{{ url('product_list') }}\">絞り込みをすべてリセット</a>
  1952.                     </div>
  1953.                 {% endif %}
  1954.             </aside>
  1955.             {# / サイドバー #}
  1956.             {# ===== 商品一覧(右カラム)===== #}
  1957.             <div class=\"ec-productListMain\">
  1958.     {% if search_form.category_id.vars.errors|length > 0 %}
  1959.         <div class=\"ec-searchnavRole\">
  1960.             <p class=\"errormsg text-danger\">{{ 'ご指定のカテゴリは存在しません'|trans }}</p>
  1961.         </div>
  1962.     {% else %}
  1963.         {# 検索フォーム(hidden) #}
  1964.         <div class=\"ec-searchnavRole\">
  1965.             <form name=\"form1\" id=\"form1\" method=\"get\" action=\"?\">
  1966.                 {% for item in search_form %}
  1967.                     <input type=\"hidden\" id=\"{{ item.vars.id }}\"
  1968.                            name=\"{{ item.vars.full_name }}\"
  1969.                            {% if item.vars.value is not empty %}value=\"{{ item.vars.value }}\" {% endif %}/>
  1970.                 {% endfor %}
  1971.             </form>
  1972.             {# パンくずリスト #}
  1973.             <div class=\"ec-searchnavRole__topicpath\">
  1974.                 <ol class=\"ec-topicpath\">
  1975.                     <li class=\"ec-topicpath__item\"><a href=\"{{ url('product_list') }}\">{{ '全て'|trans }}</a></li>
  1976.                     {% if Category is not null %}
  1977.                         {% for Path in Category.path %}
  1978.                             <li class=\"ec-topicpath__divider\">|</li>
  1979.                             <li class=\"ec-topicpath__item{% if loop.last %}--active{% endif %}\">
  1980.                                 <a href=\"{{ url('product_list') }}?category_id={{ Path.id }}\">{{ Path.name }}</a>
  1981.                             </li>
  1982.                         {% endfor %}
  1983.                     {% endif %}
  1984.                     {% if Maker is not null %}
  1985.                         <li class=\"ec-topicpath__divider\">|</li>
  1986.                         <li class=\"ec-topicpath__item--active\">
  1987.                             <a href=\"{{ url('product_list') }}?maker_id={{ Maker.id }}\">{{ Maker.name }}</a>
  1988.                         </li>
  1989.                     {% endif %}
  1990.                     {% if search_form.vars.value and search_form.vars.value.name %}
  1991.                         <li class=\"ec-topicpath__divider\">|</li>
  1992.                         <li class=\"ec-topicpath__item\">{{ '「%name%」の検索結果'|trans({ '%name%': search_form.vars.value.name }) }}</li>
  1993.                     {% endif %}
  1994.                 </ol>
  1995.             </div>
  1996.         {# ==============================
  1997.            現在の絞り込み条件バッジ
  1998.         ============================== #}
  1999.         {% if hasFilter %}
  2000.             <div class=\"ec-filterActive\">
  2001.                 <span class=\"ec-filterActive__label\">絞り込み中:</span>
  2002.                 {% if Category is not null %}
  2003.                     {% set removeCategoryParam = 'category_id=' ~ app.request.query.get('category_id') %}
  2004.                     <span class=\"ec-filterActive__tag\">
  2005.                         {{ Category.name }}
  2006.                         <a href=\"{{ app.request.uri|replace({(removeCategoryParam): ''}) }}\" title=\"解除\">✕</a>
  2007.                     </span>
  2008.                 {% endif %}
  2009.                 {% if Maker is not null %}
  2010.                     <span class=\"ec-filterActive__tag\">
  2011.                         {{ Maker.name }}
  2012.                         <a href=\"{{ url('product_list') }}{% if app.request.query.get('category_id') %}?category_id={{ app.request.query.get('category_id') }}{% endif %}\" title=\"解除\">✕</a>
  2013.                     </span>
  2014.                 {% endif %}
  2015.                 {% if app.request.query.get('price_min') or app.request.query.get('price_max') %}
  2016.                     <span class=\"ec-filterActive__tag\">
  2017.                         {% if app.request.query.get('price_min') %}{{ app.request.query.get('price_min')|number_format }}円{% else %}0円{% endif %}
  2018.                         〜
  2019.                         {% if app.request.query.get('price_max') %}{{ app.request.query.get('price_max')|number_format }}円{% else %}上限なし{% endif %}
  2020.                         <a href=\"javascript:void(0);\" onclick=\"
  2021.                             var url = new URL(window.location.href);
  2022.                             url.searchParams.delete('price_min');
  2023.                             url.searchParams.delete('price_max');
  2024.                             window.location.href = url.toString();
  2025.                         \" title=\"解除\">✕</a>
  2026.                     </span>
  2027.                 {% endif %}
  2028.             </div>
  2029.         {% endif %}
  2030.             {# 件数・並び順 #}
  2031.             <div class=\"ec-searchnavRole__infos\">
  2032.                 <div class=\"ec-searchnavRole__counter\">
  2033.                     {% if pagination.totalItemCount > 0 %}
  2034.                         {{ '<span class=\"ec-font-bold\">%count%件</span><span>の商品が見つかりました</span>'|trans({ '%count%': pagination.totalItemCount })|raw }}
  2035.                     {% else %}
  2036.                         <span>{{ 'お探しの商品は見つかりませんでした'|trans }}</span>
  2037.                     {% endif %}
  2038.                 </div>
  2039.                 {% if pagination.totalItemCount > 0 %}
  2040.                     <div class=\"ec-searchnavRole__actions\">
  2041.                         <div class=\"ec-select\">
  2042.                             {{ form_widget(search_form.disp_number, {'id': '', 'attr': {'class': 'disp-number'}}) }}
  2043.                             {{ form_widget(search_form.orderby, {'id': '', 'attr': {'class': 'order-by'}}) }}
  2044.                         </div>
  2045.                     </div>
  2046.                 {% endif %}
  2047.             </div>
  2048.         </div>
  2049.                 {% if pagination.totalItemCount > 0 %}
  2050.                     <div class=\"ec-shelfRole\">
  2051.                         <ul class=\"ec-shelfGrid\">
  2052.                             {% for Product in pagination %}
  2053.                                 <li class=\"ec-shelfGrid__item\" style=\"position:relative;\">
  2054.                                     {% if BaseInfo.option_favorite_product %}
  2055.                                         <div style=\"position:absolute;top:8px;right:20px;z-index:10;\">
  2056.                                             <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  2057.                                                 <button type=\"submit\" id=\"favorite\" class=\"favorite\">&#9825;</button>
  2058.                                             </form>
  2059.                                         </div>
  2060.                                     {% endif %}
  2061.                                     <a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  2062.                                         <p class=\"ec-shelfGrid__item-image\">
  2063.                                             <img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"{{ Product.name }}\" width=\"180\" height=\"180\"{% if loop.index > 5 %} loading=\"lazy\"{% endif %}>
  2064.                                         </p>
  2065.                                         {% if Product.Maker and Product.Maker.name %}
  2066.                                             <p class=\"ec-shelfGrid__item-maker\" style=\"font-size:12px;color:#666;margin:2px 0 4px;\">{{ Product.Maker.name }}</p>
  2067.                                         {% endif %}
  2068.                                         <h5><strong>{{ getProduct_field(Product.id,\"related_keyword\") }}</strong></h5>
  2069.                                         <p class=\"price02-default\">
  2070.                                             {% if Product.getPrice02Max is null or Product.getPrice02Max == 0 %}
  2071.                                                 現地調査見積
  2072.                                             {% elseif Product.hasProductClass %}
  2073.                                                 {% if Product.getPrice02Min == Product.getPrice02Max %}
  2074.                                                     {{ Product.getPrice02IncTaxMin|number_format }}円
  2075.                                                 {% else %}
  2076.                                                     {{ Product.getPrice02IncTaxMin|number_format }}円  ~ {{ Product.getPrice02IncTaxMax|number_format }}円
  2077.                                                 {% endif %}
  2078.                                             {% else %}
  2079.                                                 {{ Product.getPrice02IncTaxMin|number_format }}円 ~
  2080.                                             {% endif %}
  2081.                                         </p>
  2082.                                     </a>
  2083.                                     {% if Product.stock_find %}
  2084.                                         {% set form = forms[Product.id] %}
  2085.                                         <form name=\"form{{ Product.id }}\" id=\"productForm{{ Product.id }}\" action=\"{{ url('product_detail', {id:Product.id}) }}\" method=\"get\">
  2086.                                             <div class=\"ec-productRole__actions\">
  2087.                                                 {% if form.classcategory_id1 is defined %}
  2088.                                                     <div class=\"ec-select\">
  2089.                                                         {{ form_widget(form.classcategory_id1) }}
  2090.                                                         {{ form_errors(form.classcategory_id1) }}
  2091.                                                     </div>
  2092.                                                     {% if form.classcategory_id2 is defined %}
  2093.                                                         <div class=\"ec-select\">
  2094.                                                             {{ form_widget(form.classcategory_id2) }}
  2095.                                                             {{ form_errors(form.classcategory_id2) }}
  2096.                                                         </div>
  2097.                                                     {% endif %}
  2098.                                                 {% endif %}
  2099.                                                 <div class=\"ec-numberInput\" style=\"display:none;\"><span>{{ '数量'|trans }}</span>
  2100.                                                     {{ form_errors(form.quantity) }}
  2101.                                                 </div>
  2102.                                             </div>
  2103.                                             <div class=\"ec-productRole__btn\">
  2104.                                                 <button class=\"ec-blockBtn--action\">
  2105.                                                     {{ 'お見積もりはこちら'|trans }}
  2106.                                                 </button>
  2107.                                             </div>
  2108.                                         </form>
  2109.                                     {% else %}
  2110.                                         <div class=\"ec-productRole__btn\">
  2111.                                             <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  2112.                                                 {{ 'ただいま品切れ中です。'|trans }}
  2113.                                             </button>
  2114.                                         </div>
  2115.                                     {% endif %}
  2116.                                 </li>
  2117.                             {% endfor %}
  2118.                         </ul>
  2119.                     </div>
  2120.                     <div class=\"ec-pagerRole\">
  2121.                         {% include \"pager.twig\" with {'pages': pagination.paginationData} %}
  2122.                     </div>
  2123.                 {% endif %}
  2124.             </div>
  2125.             {# / 商品一覧 #}
  2126.         </div>
  2127.         {# / ec-productListLayout #}
  2128.     {% endif %}
  2129. {% endblock %}
  2130. ""Product/list.twig""/home/xs538259/exterior-plus.jp/public_html/app/template/default/Product/list.twig");
  2131.     }
  2132. }