var/cache/dev/twig/b9/b94e1fc3bbbda54d1bb55bddd42dddc0624a3fcfd3e316b1e3b389eacd86781a.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_a1c22a5134989ebb4424ba7d4b0f3f6bc64e159f18340f1cfb465c9d5f181113 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 product_list";
  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=\"";
  60.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/css/game-category-layout.css""user_data"), "html"nulltrue);
  61.         echo "\">
  62. ";
  63.         
  64.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  65.         
  66.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  67.     }
  68.     // line 19
  69.     public function block_javascript($context, array $blocks = [])
  70.     {
  71.         $macros $this->macros;
  72.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  73.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  74.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  75.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  76.         // line 20
  77.         echo "    <script>
  78.         eccube.productsClassCategories = {
  79.             ";
  80.         // line 22
  81.         $context['_parent'] = $context;
  82.         $context['_seq'] = twig_ensure_traversable((isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'22$this->source); })()));
  83.         $context['loop'] = [
  84.           'parent' => $context['_parent'],
  85.           'index0' => 0,
  86.           'index'  => 1,
  87.           'first'  => true,
  88.         ];
  89.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  90.             $length count($context['_seq']);
  91.             $context['loop']['revindex0'] = $length 1;
  92.             $context['loop']['revindex'] = $length;
  93.             $context['loop']['length'] = $length;
  94.             $context['loop']['last'] = === $length;
  95.         }
  96.         foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  97.             // line 23
  98.             echo "            \"";
  99.             echo twig_escape_filter($this->envtwig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse23), "js"), "html"nulltrue);
  100.             echo "\": ";
  101.             echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($context["Product"]);
  102.             if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse23) == false)) {
  103.                 echo ", ";
  104.             }
  105.             // line 24
  106.             echo "            ";
  107.             ++$context['loop']['index0'];
  108.             ++$context['loop']['index'];
  109.             $context['loop']['first'] = false;
  110.             if (isset($context['loop']['length'])) {
  111.                 --$context['loop']['revindex0'];
  112.                 --$context['loop']['revindex'];
  113.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  114.             }
  115.         }
  116.         $_parent $context['_parent'];
  117.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  118.         $context array_intersect_key($context$_parent) + $_parent;
  119.         // line 25
  120.         echo "        };
  121.         \$(function() {
  122.             // 表示件数を変更
  123.             \$('.disp-number').change(function() {
  124.                 var dispNumber = \$(this).val();
  125.                 \$('#disp_number').val(dispNumber);
  126.                 \$('#pageno').val(1);
  127.                 \$(\"#form1\").submit();
  128.             });
  129.             // 並び順を変更
  130.             \$('.order-by').change(function() {
  131.                 var orderBy = \$(this).val();
  132.                 \$('#orderby').val(orderBy);
  133.                 \$('#pageno').val(1);
  134.                 \$(\"#form1\").submit();
  135.             });
  136.             \$('.add-cart').on('click', function(e) {
  137.                 var \$form = \$(this).parents('li').find('form');
  138.                 // 個数フォームのチェック
  139.                 var \$quantity = \$form.parent().find('.quantity');
  140.                 if (\$quantity.val() < 1) {
  141.                     \$quantity[0].setCustomValidity('";
  142.         // line 51
  143.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  144.         echo "');
  145.                     setTimeout(function() {
  146.                         loadingOverlay('hide');
  147.                     }, 100);
  148.                     return true;
  149.                 } else {
  150.                     \$quantity[0].setCustomValidity('');
  151.                 }
  152.                 e.preventDefault();
  153.                 \$.ajax({
  154.                     url: \$form.attr('action'),
  155.                     type: \$form.attr('method'),
  156.                     data: \$form.serialize(),
  157.                     dataType: 'json',
  158.                     beforeSend: function(xhr, settings) {
  159.                         // Buttonを無効にする
  160.                         \$('.add-cart').prop('disabled', true);
  161.                     }
  162.                 }).done(function(data) {
  163.                     // レスポンス内のメッセージをalertで表示
  164.                     \$.each(data.messages, function() {
  165.                         \$('#ec-modal-header').html(this);
  166.                     });
  167.                     \$('.ec-modal').show()
  168.                     // カートブロックを更新する
  169.                     \$.ajax({
  170.                         url: '";
  171.         // line 79
  172.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  173.         echo "',
  174.                         type: 'GET',
  175.                         dataType: 'html'
  176.                     }).done(function(html) {
  177.                         \$('.ec-headerRole__cart').html(html);
  178.                     });
  179.                 }).fail(function(data) {
  180.                     alert('";
  181.         // line 86
  182.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  183.         echo "');
  184.                 }).always(function(data) {
  185.                     // Buttonを有効にする
  186.                     \$('.add-cart').prop('disabled', false);
  187.                 });
  188.             });
  189.         });
  190.         \$('.ec-modal-wrap').on('click', function(e) {
  191.             // モーダル内の処理は外側にバブリングさせない
  192.             e.stopPropagation();
  193.         });
  194.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  195.             \$('.ec-modal').hide()
  196.         });
  197.         // ゲーム別おすすめPC 親カテゴリ専用レイアウト (ID=46)
  198.         ";
  199.         // line 103
  200.         if (((isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'103$this->source); })()) && (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.'103$this->source); })()), "id", [], "any"falsefalsefalse103) == 46))) {
  201.             // line 104
  202.             echo "        (function() {
  203.             console.log('=== Game category parent layout: Started ===');
  204.             
  205.             // 子カテゴリの定義
  206.             var gameCategories = [
  207.                 {
  208.                     id: 47,
  209.                     name: 'ARC Raiders',
  210.                     icon: '/html/user_data/game_icons/arc_raiders.jpg'
  211.                 },
  212.                 {
  213.                     id: 48,
  214.                     name: 'APEX LEGENDS',
  215.                     icon: '/html/user_data/game_icons/apex_legends.jpg'
  216.                 },
  217.                 {
  218.                     id: 49,
  219.                     name: 'Valorant',
  220.                     icon: '/html/user_data/game_icons/valorant.jpg'
  221.                 },
  222.                 {
  223.                     id: 50,
  224.                     name: '原神',
  225.                     icon: '/html/user_data/game_icons/genshin.jpg'
  226.                 }
  227.             ];
  228.             
  229.             var \$shelfGrid = \$('.ec-shelfGrid');
  230.             var \$items = \$shelfGrid.find('.ec-shelfGrid__item');
  231.             
  232.             if (\$items.length === 0) {
  233.                 console.warn('No products found');
  234.                 return;
  235.             }
  236.             
  237.             // 商品をカテゴリごとに分類
  238.             var productsByCategory = {};
  239.             
  240.             \$items.each(function() {
  241.                 var \$item = \$(this);
  242.                 var categoryIds = \$item.attr('data-category-ids');
  243.                 
  244.                 if (!categoryIds) return;
  245.                 
  246.                 var categories = categoryIds.split(',').map(function(id) {
  247.                     return parseInt(id.trim());
  248.                 });
  249.                 
  250.                 gameCategories.forEach(function(game) {
  251.                     if (categories.indexOf(game.id) !== -1) {
  252.                         if (!productsByCategory[game.id]) {
  253.                             productsByCategory[game.id] = [];
  254.                         }
  255.                         productsByCategory[game.id].push(\$item.clone());
  256.                     }
  257.                 });
  258.             });
  259.             
  260.             // 新しいレイアウトを構築
  261.             var \$newLayout = \$('<div class=\"game-category-parent-layout\"></div>');
  262.             
  263.             gameCategories.forEach(function(game) {
  264.                 var products = productsByCategory[game.id] || [];
  265.                 
  266.                 var \$section = \$('<div class=\"game-section\" data-game-id=\"' + game.id + '\"></div>');
  267.                 var \$title = \$('<h2 class=\"game-section-title\">' + 
  268.                     '<a href=\"";
  269.             // line 170
  270.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  271.             echo "?category_id=' + game.id + '\">' + 
  272.                     game.name + ' 推奨PC</a>' +
  273.                     '</h2>');
  274.                 
  275.                 var \$layout = \$('<div class=\"game-section-layout\"></div>');
  276.                 var \$iconSection = \$('<a href=\"";
  277.             // line 175
  278.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  279.             echo "?category_id=' + game.id + '\" class=\"game-icon-section\">' +
  280.                     '<img src=\"' + game.icon + '\" alt=\"' + game.name + '\" class=\"game-icon-image\">' +
  281.                     '</a>');
  282.                 
  283.                 var \$productsSection = \$('<div class=\"game-products-section\"></div>');
  284.                 var \$slider = \$('<div class=\"game-products-slider slider-' + game.id + '\"></div>');
  285.                 
  286.                 if (products.length > 0) {
  287.                     products.forEach(function(\$product) {
  288.                         \$slider.append(\$product);
  289.                     });
  290.                 } else {
  291.                     \$slider.html('<div class=\"no-products\"><p>商品準備中です</p></div>');
  292.                 }
  293.                 
  294.                 \$productsSection.append(\$slider);
  295.                 \$layout.append(\$iconSection);
  296.                 \$layout.append(\$productsSection);
  297.                 \$section.append(\$title);
  298.                 \$section.append(\$layout);
  299.                 \$newLayout.append(\$section);
  300.             });
  301.             
  302.             \$shelfGrid.replaceWith(\$newLayout);
  303.             
  304.             // スライダー初期化
  305.             setTimeout(function() {
  306.                 gameCategories.forEach(function(game) {
  307.                     var \$sliderElement = \$('.slider-' + game.id);
  308.                     var itemCount = \$sliderElement.find('.ec-shelfGrid__item').length;
  309.                     
  310.                     if (itemCount > 0) {
  311.                         if (\$sliderElement.hasClass('slick-initialized')) {
  312.                             \$sliderElement.slick('unslick');
  313.                         }
  314.                         
  315.                         \$sliderElement.slick({
  316.                             slidesToShow: 4,
  317.                             slidesToScroll: 1,
  318.                             infinite: false,
  319.                             arrows: true,
  320.                             dots: false,
  321.                             prevArrow: '<button type=\"button\" class=\"slick-prev\"><img src=\"";
  322.             // line 217
  323.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/slick-arrow-left-white.svg"), "html"nulltrue);
  324.             echo "\" alt=\"前へ\" /></button>',
  325.                             nextArrow: '<button type=\"button\" class=\"slick-next\"><img src=\"";
  326.             // line 218
  327.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/slick-arrow-right-white.svg"), "html"nulltrue);
  328.             echo "\" alt=\"次へ\" /></button>',
  329.                             responsive: [
  330.                                 {
  331.                                     breakpoint: 1200,
  332.                                     settings: { slidesToShow: 3, dots: false }
  333.                                 },
  334.                                 {
  335.                                     breakpoint: 768,
  336.                                     settings: { slidesToShow: 1, slidesToScroll: 1, arrows: false, dots: false }
  337.                                 },
  338.                                 {
  339.                                     breakpoint: 480,
  340.                                     settings: { slidesToShow: 1, slidesToScroll: 1, arrows: false, dots: false }
  341.                                 }
  342.                             ]
  343.                         });
  344.                         
  345.                         // スマホでスライド状態を監視
  346.                         if (\$(window).width() <= 768) {
  347.                             \$sliderElement.on('afterChange', function(event, slick, currentSlide) {
  348.                                 var isLast = (currentSlide >= slick.slideCount - 1);
  349.                                 
  350.                                 if (isLast) {
  351.                                     \$(this).closest('.game-products-section').addClass('no-more-slides');
  352.                                 } else {
  353.                                     \$(this).closest('.game-products-section').removeClass('no-more-slides');
  354.                                 }
  355.                             });
  356.                         }
  357.                     }
  358.                 });
  359.             }, 300);
  360.             
  361.             console.log('=== Game category parent layout: Complete ===');
  362.         })();
  363.         ";
  364.         }
  365.         // line 254
  366.         echo "
  367.     </script>
  368. ";
  369.         
  370.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  371.         
  372.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  373.     }
  374.     // line 258
  375.     public function block_main($context, array $blocks = [])
  376.     {
  377.         $macros $this->macros;
  378.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  379.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  380.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  381.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  382.         // line 259
  383.         echo "    ";
  384.         if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, ($context["search_form"] ?? null), "vars", [], "any"falsetruefalse259), "value", [], "any"falsetruefalse259), "category_id", [], "any"falsetruefalse259), "id", [], "any"truetruefalse259)) {
  385.             // line 260
  386.             echo "    ";
  387.             echo twig_include($this->env$context, (("Block/category" twig_get_attribute($this->env$this->sourcetwig_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.'260$this->source); })()), "vars", [], "any"falsefalsefalse260), "value", [], "any"falsefalsefalse260), "category_id", [], "any"falsefalsefalse260), "id", [], "any"falsefalsefalse260)) . ".twig"), array(), truetrue);
  388.             echo "
  389.     ";
  390.         }
  391.         // line 262
  392.         echo "    ";
  393.         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.'262$this->source); })()), "category_id", [], "any"falsefalsefalse262), "vars", [], "any"falsefalsefalse262), "errors", [], "any"falsefalsefalse262)) > 0)) {
  394.             // line 263
  395.             echo "        <div class=\"ec-searchnavRole\">
  396.             <p class=\"errormsg text-danger\">";
  397.             // line 264
  398.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ご指定のカテゴリは存在しません"), "html"nulltrue);
  399.             echo "</p>
  400.         </div>
  401.     ";
  402.         } else {
  403.             // line 267
  404.             echo "        <div class=\"ec-searchnavRole\">
  405.             <form name=\"form1\" id=\"form1\" method=\"get\" action=\"?\">
  406.                 ";
  407.             // line 269
  408.             $context['_parent'] = $context;
  409.             $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.'269$this->source); })()));
  410.             foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
  411.                 // line 270
  412.                 echo "                    <input type=\"hidden\" id=\"";
  413.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse270), "id", [], "any"falsefalsefalse270), "html"nulltrue);
  414.                 echo "\"
  415.                            name=\"";
  416.                 // line 271
  417.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse271), "full_name", [], "any"falsefalsefalse271), "html"nulltrue);
  418.                 echo "\"
  419.                            ";
  420.                 // line 272
  421.                 if ( !twig_test_empty(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse272), "value", [], "any"falsefalsefalse272))) {
  422.                     echo "value=\"";
  423.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["item"], "vars", [], "any"falsefalsefalse272), "value", [], "any"falsefalsefalse272), "html"nulltrue);
  424.                     echo "\" ";
  425.                 }
  426.                 echo "/>
  427.                 ";
  428.             }
  429.             $_parent $context['_parent'];
  430.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
  431.             $context array_intersect_key($context$_parent) + $_parent;
  432.             // line 274
  433.             echo "            </form>
  434.             <div class=\"ec-searchnavRole__topicpath\">
  435.                 <ol class=\"ec-topicpath\">
  436.                     <li class=\"ec-topicpath__item\"><a href=\"";
  437.             // line 277
  438.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  439.             echo "\">";
  440.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("全て"), "html"nulltrue);
  441.             echo "</a>
  442.                     </li>
  443.                     ";
  444.             // line 279
  445.             if ( !(null === (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'279$this->source); })()))) {
  446.                 // line 280
  447.                 echo "                        ";
  448.                 $context['_parent'] = $context;
  449.                 $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.'280$this->source); })()), "path", [], "any"falsefalsefalse280));
  450.                 $context['loop'] = [
  451.                   'parent' => $context['_parent'],
  452.                   'index0' => 0,
  453.                   'index'  => 1,
  454.                   'first'  => true,
  455.                 ];
  456.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  457.                     $length count($context['_seq']);
  458.                     $context['loop']['revindex0'] = $length 1;
  459.                     $context['loop']['revindex'] = $length;
  460.                     $context['loop']['length'] = $length;
  461.                     $context['loop']['last'] = === $length;
  462.                 }
  463.                 foreach ($context['_seq'] as $context["_key"] => $context["Path"]) {
  464.                     // line 281
  465.                     echo "                            <li class=\"ec-topicpath__divider\">|</li>
  466.                             <li class=\"ec-topicpath__item";
  467.                     // line 282
  468.                     if (twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse282)) {
  469.                         echo "--active";
  470.                     }
  471.                     echo "\"><a
  472.                                         href=\"";
  473.                     // line 283
  474.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  475.                     echo "?category_id=";
  476.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Path"], "id", [], "any"falsefalsefalse283), "html"nulltrue);
  477.                     echo "\">";
  478.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Path"], "name", [], "any"falsefalsefalse283), "html"nulltrue);
  479.                     echo "</a>
  480.                             </li>
  481.                         ";
  482.                     ++$context['loop']['index0'];
  483.                     ++$context['loop']['index'];
  484.                     $context['loop']['first'] = false;
  485.                     if (isset($context['loop']['length'])) {
  486.                         --$context['loop']['revindex0'];
  487.                         --$context['loop']['revindex'];
  488.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  489.                     }
  490.                 }
  491.                 $_parent $context['_parent'];
  492.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Path'], $context['_parent'], $context['loop']);
  493.                 $context array_intersect_key($context$_parent) + $_parent;
  494.                 // line 286
  495.                 echo "                    ";
  496.             }
  497.             // line 287
  498.             echo "                    ";
  499.             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.'287$this->source); })()), "vars", [], "any"falsefalsefalse287), "value", [], "any"falsefalsefalse287) && 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.'287$this->source); })()), "vars", [], "any"falsefalsefalse287), "value", [], "any"falsefalsefalse287), "name", [], "any"falsefalsefalse287))) {
  500.                 // line 288
  501.                 echo "                        <li class=\"ec-topicpath__divider\">|</li>
  502.                         <li class=\"ec-topicpath__item\">";
  503.                 // line 289
  504.                 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.'289$this->source); })()), "vars", [], "any"falsefalsefalse289), "value", [], "any"falsefalsefalse289), "name", [], "any"falsefalsefalse289)]), "html"nulltrue);
  505.                 echo "</li>
  506.                     ";
  507.             }
  508.             // line 291
  509.             echo "                </ol>
  510.             </div>
  511.             <div class=\"ec-searchnavRole__infos\">
  512.                 <div class=\"ec-searchnavRole__counter\">
  513.                     ";
  514.             // line 295
  515.             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.'295$this->source); })()), "totalItemCount", [], "any"falsefalsefalse295) > 0)) {
  516.                 // line 296
  517.                 echo "                        ";
  518.                 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.'296$this->source); })()), "totalItemCount", [], "any"falsefalsefalse296)]);
  519.                 echo "
  520.                     ";
  521.             } else {
  522.                 // line 298
  523.                 echo "                        <span>";
  524.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お探しの商品は見つかりませんでした"), "html"nulltrue);
  525.                 echo "</span>
  526.                     ";
  527.             }
  528.             // line 300
  529.             echo "                </div>
  530.                 ";
  531.             // line 301
  532.             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.'301$this->source); })()), "totalItemCount", [], "any"falsefalsefalse301) > 0)) {
  533.                 // line 302
  534.                 echo "                    <div class=\"ec-searchnavRole__actions\">
  535.                         <div class=\"ec-select\">
  536.                             ";
  537.                 // line 304
  538.                 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.'304$this->source); })()), "disp_number", [], "any"falsefalsefalse304), 'widget', ["id" => """attr" => ["class" => "disp-number"]]);
  539.                 echo "
  540.                             ";
  541.                 // line 305
  542.                 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.'305$this->source); })()), "orderby", [], "any"falsefalsefalse305), 'widget', ["id" => """attr" => ["class" => "order-by"]]);
  543.                 echo "
  544.                         </div>
  545.                     </div>
  546.                 ";
  547.             }
  548.             // line 309
  549.             echo "            </div>
  550.         </div>
  551.         ";
  552.             // line 311
  553.             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.'311$this->source); })()), "totalItemCount", [], "any"falsefalsefalse311) > 0)) {
  554.                 // line 312
  555.                 echo "            <div class=\"ec-shelfRole\">
  556.                 <ul class=\"ec-shelfGrid\">
  557.                     ";
  558.                 // line 314
  559.                 $context['_parent'] = $context;
  560.                 $context['_seq'] = twig_ensure_traversable((isset($context["pagination"]) || array_key_exists("pagination"$context) ? $context["pagination"] : (function () { throw new RuntimeError('Variable "pagination" does not exist.'314$this->source); })()));
  561.                 $context['loop'] = [
  562.                   'parent' => $context['_parent'],
  563.                   'index0' => 0,
  564.                   'index'  => 1,
  565.                   'first'  => true,
  566.                 ];
  567.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  568.                     $length count($context['_seq']);
  569.                     $context['loop']['revindex0'] = $length 1;
  570.                     $context['loop']['revindex'] = $length;
  571.                     $context['loop']['length'] = $length;
  572.                     $context['loop']['last'] = === $length;
  573.                 }
  574.                 foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  575.                     // line 315
  576.                     echo "                        <li class=\"ec-shelfGrid__item\" 
  577.                             data-product-id=\"";
  578.                     // line 316
  579.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsefalse316), "html"nulltrue);
  580.                     echo "\"
  581.                             ";
  582.                     // line 317
  583.                     if ((twig_length_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "ProductCategories", [], "any"falsefalsefalse317)) > 0)) {
  584.                         // line 318
  585.                         echo "                                data-category-ids=\"";
  586.                         $context['_parent'] = $context;
  587.                         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source$context["Product"], "ProductCategories", [], "any"falsefalsefalse318));
  588.                         $context['loop'] = [
  589.                           'parent' => $context['_parent'],
  590.                           'index0' => 0,
  591.                           'index'  => 1,
  592.                           'first'  => true,
  593.                         ];
  594.                         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  595.                             $length count($context['_seq']);
  596.                             $context['loop']['revindex0'] = $length 1;
  597.                             $context['loop']['revindex'] = $length;
  598.                             $context['loop']['length'] = $length;
  599.                             $context['loop']['last'] = === $length;
  600.                         }
  601.                         foreach ($context['_seq'] as $context["_key"] => $context["pc"]) {
  602.                             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["pc"], "Category", [], "any"falsefalsefalse318), "id", [], "any"falsefalsefalse318), "html"nulltrue);
  603.                             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse318)) {
  604.                                 echo ",";
  605.                             }
  606.                             ++$context['loop']['index0'];
  607.                             ++$context['loop']['index'];
  608.                             $context['loop']['first'] = false;
  609.                             if (isset($context['loop']['length'])) {
  610.                                 --$context['loop']['revindex0'];
  611.                                 --$context['loop']['revindex'];
  612.                                 $context['loop']['last'] = === $context['loop']['revindex0'];
  613.                             }
  614.                         }
  615.                         $_parent $context['_parent'];
  616.                         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['pc'], $context['_parent'], $context['loop']);
  617.                         $context array_intersect_key($context$_parent) + $_parent;
  618.                         echo "\"
  619.                             ";
  620.                     }
  621.                     // line 319
  622.                     echo ">
  623.                             <a href=\"";
  624.                     // line 320
  625.                     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"falsefalsefalse320)]), "html"nulltrue);
  626.                     echo "\">
  627.                                 <p class=\"ec-shelfGrid__item-image\">
  628.                                     <img src=\"";
  629.                     // line 322
  630.                     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"falsefalsefalse322)), "save_image"), "html"nulltrue);
  631.                     echo "\" alt=\"";
  632.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsefalse322), "html"nulltrue);
  633.                     echo "\" loading=\"lazy\">
  634.                                 </p>
  635.                                 <ul class=\"ec-shelfRole__tags\">
  636.                                     ";
  637.                     // line 325
  638.                     $context['_parent'] = $context;
  639.                     $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source$context["Product"], "ProductTag", [], "any"falsefalsefalse325));
  640.                     $context['loop'] = [
  641.                       'parent' => $context['_parent'],
  642.                       'index0' => 0,
  643.                       'index'  => 1,
  644.                       'first'  => true,
  645.                     ];
  646.                     if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  647.                         $length count($context['_seq']);
  648.                         $context['loop']['revindex0'] = $length 1;
  649.                         $context['loop']['revindex'] = $length;
  650.                         $context['loop']['length'] = $length;
  651.                         $context['loop']['last'] = === $length;
  652.                     }
  653.                     foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  654.                         // line 326
  655.                         echo "                                    ";
  656.                         echo twig_include($this->env$context"@DesignTag42/tag_list.twig", array(), truetrue);
  657.                         echo "
  658.                                         ";
  659.                         // line 327
  660.                         if ($context["Tag"]) {
  661.                             // line 328
  662.                             echo "                                            <li class=\"ec-shelfRole__tag\">";
  663.                             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Tag"], "Tag", [], "any"falsefalsefalse328), "html"nulltrue);
  664.                             echo "</li>
  665.                                         ";
  666.                         }
  667.                         // line 330
  668.                         echo "                                    ";
  669.                         ++$context['loop']['index0'];
  670.                         ++$context['loop']['index'];
  671.                         $context['loop']['first'] = false;
  672.                         if (isset($context['loop']['length'])) {
  673.                             --$context['loop']['revindex0'];
  674.                             --$context['loop']['revindex'];
  675.                             $context['loop']['last'] = === $context['loop']['revindex0'];
  676.                         }
  677.                     }
  678.                     $_parent $context['_parent'];
  679.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  680.                     $context array_intersect_key($context$_parent) + $_parent;
  681.                     // line 331
  682.                     echo "                                </ul>
  683.                                 <p class=\"ec-shelfGrid__item-name\">";
  684.                     // line 332
  685.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsefalse332), "html"nulltrue);
  686.                     echo "</p>
  687.                                 ";
  688.                     // line 333
  689.                     if (twig_get_attribute($this->env$this->source$context["Product"], "description_list", [], "any"falsefalsefalse333)) {
  690.                         // line 334
  691.                         echo "                                    <p>";
  692.                         echo twig_nl2br(twig_get_attribute($this->env$this->source$context["Product"], "description_list", [], "any"falsefalsefalse334));
  693.                         echo "</p>
  694.                                 ";
  695.                     }
  696.                     // line 336
  697.                     echo "                                <p class=\"price02-default\">
  698.                                     ";
  699.                     // line 337
  700.                     if (twig_get_attribute($this->env$this->source$context["Product"], "hasProductClass", [], "any"falsefalsefalse337)) {
  701.                         // line 338
  702.                         echo "                                        ";
  703.                         if ((twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Min", [], "any"falsefalsefalse338) == twig_get_attribute($this->env$this->source$context["Product"], "getPrice02Max", [], "any"falsefalsefalse338))) {
  704.                             // line 339
  705.                             echo "                                            ";
  706.                             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse339)), "html"nulltrue);
  707.                             echo "
  708.                                         ";
  709.                         } else {
  710.                             // line 341
  711.                             echo "                                            ";
  712.                             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse341)), "html"nulltrue);
  713.                             echo " ~ ";
  714.                             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMax", [], "any"falsefalsefalse341)), "html"nulltrue);
  715.                             echo "
  716.                                         ";
  717.                         }
  718.                         // line 343
  719.                         echo "                                    ";
  720.                     } else {
  721.                         // line 344
  722.                         echo "                                        ";
  723.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsefalse344)), "html"nulltrue);
  724.                         echo "
  725.                                     ";
  726.                     }
  727.                     // line 346
  728.                     echo "                                </p>
  729.                             </a>
  730.                         </li>
  731.                     ";
  732.                     ++$context['loop']['index0'];
  733.                     ++$context['loop']['index'];
  734.                     $context['loop']['first'] = false;
  735.                     if (isset($context['loop']['length'])) {
  736.                         --$context['loop']['revindex0'];
  737.                         --$context['loop']['revindex'];
  738.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  739.                     }
  740.                 }
  741.                 $_parent $context['_parent'];
  742.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  743.                 $context array_intersect_key($context$_parent) + $_parent;
  744.                 // line 350
  745.                 echo "                </ul>
  746.             </div>
  747.             <div class=\"ec-modal\">
  748.                 <div class=\"ec-modal-overlay\">
  749.                     <div class=\"ec-modal-wrap\">
  750.                         <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  751.                 // line 355
  752.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  753.                 echo "\" alt=\"\"/></span></span>
  754.                         <div id=\"ec-modal-header\" class=\"text-center\">";
  755.                 // line 356
  756.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  757.                 echo "</div>
  758.                         <div class=\"ec-modal-box\">
  759.                             <div class=\"ec-role\">
  760.                                 <span class=\"ec-inlineBtn--cancel\">";
  761.                 // line 359
  762.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  763.                 echo "</span>
  764.                                 <a href=\"";
  765.                 // line 360
  766.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  767.                 echo "\" class=\"ec-inlineBtn--action\">";
  768.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  769.                 echo "</a>
  770.                             </div>
  771.                         </div>
  772.                     </div>
  773.                 </div>
  774.             </div>
  775.             <div class=\"ec-pagerRole\">
  776.                 ";
  777.                 // line 367
  778.                 $this->loadTemplate("pager.twig""Product/list.twig"367)->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.'367$this->source); })()), "paginationData", [], "any"falsefalsefalse367)]));
  779.                 // line 368
  780.                 echo "            </div>
  781.         ";
  782.             }
  783.             // line 370
  784.             echo "    ";
  785.         }
  786.         
  787.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  788.         
  789.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  790.     }
  791.     public function getTemplateName()
  792.     {
  793.         return "Product/list.twig";
  794.     }
  795.     public function isTraitable()
  796.     {
  797.         return false;
  798.     }
  799.     public function getDebugInfo()
  800.     {
  801.         return array (  817 => 370,  813 => 368,  811 => 367,  799 => 360,  795 => 359,  789 => 356,  785 => 355,  778 => 350,  761 => 346,  755 => 344,  752 => 343,  744 => 341,  738 => 339,  735 => 338,  733 => 337,  730 => 336,  724 => 334,  722 => 333,  718 => 332,  715 => 331,  701 => 330,  695 => 328,  693 => 327,  688 => 326,  671 => 325,  663 => 322,  658 => 320,  655 => 319,  618 => 318,  616 => 317,  612 => 316,  609 => 315,  592 => 314,  588 => 312,  586 => 311,  582 => 309,  575 => 305,  571 => 304,  567 => 302,  565 => 301,  562 => 300,  556 => 298,  550 => 296,  548 => 295,  542 => 291,  537 => 289,  534 => 288,  531 => 287,  528 => 286,  507 => 283,  501 => 282,  498 => 281,  480 => 280,  478 => 279,  471 => 277,  466 => 274,  454 => 272,  450 => 271,  445 => 270,  441 => 269,  437 => 267,  431 => 264,  428 => 263,  425 => 262,  419 => 260,  416 => 259,  406 => 258,  394 => 254,  355 => 218,  351 => 217,  306 => 175,  298 => 170,  230 => 104,  228 => 103,  208 => 86,  198 => 79,  167 => 51,  139 => 25,  125 => 24,  117 => 23,  100 => 22,  96 => 20,  86 => 19,  73 => 16,  63 => 15,  52 => 11,  50 => 13,  37 => 11,);
  802.     }
  803.     public function getSourceContext()
  804.     {
  805.         return new Source("{#
  806. This file is part of EC-CUBE
  807. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  808. http://www.ec-cube.co.jp/
  809. For the full copyright and license information, please view the LICENSE
  810. file that was distributed with this source code.
  811. #}
  812. {% extends 'default_frame.twig' %}
  813. {% set body_class = 'product_page product_list' %}
  814. {% block stylesheet %}
  815.     <link rel=\"stylesheet\" href=\"{{ asset('assets/css/game-category-layout.css', 'user_data') }}\">
  816. {% endblock %}
  817. {% block javascript %}
  818.     <script>
  819.         eccube.productsClassCategories = {
  820.             {% for Product in pagination %}
  821.             \"{{ Product.id|escape('js') }}\": {{ class_categories_as_json(Product)|raw }}{% if loop.last == false %}, {% endif %}
  822.             {% endfor %}
  823.         };
  824.         \$(function() {
  825.             // 表示件数を変更
  826.             \$('.disp-number').change(function() {
  827.                 var dispNumber = \$(this).val();
  828.                 \$('#disp_number').val(dispNumber);
  829.                 \$('#pageno').val(1);
  830.                 \$(\"#form1\").submit();
  831.             });
  832.             // 並び順を変更
  833.             \$('.order-by').change(function() {
  834.                 var orderBy = \$(this).val();
  835.                 \$('#orderby').val(orderBy);
  836.                 \$('#pageno').val(1);
  837.                 \$(\"#form1\").submit();
  838.             });
  839.             \$('.add-cart').on('click', function(e) {
  840.                 var \$form = \$(this).parents('li').find('form');
  841.                 // 個数フォームのチェック
  842.                 var \$quantity = \$form.parent().find('.quantity');
  843.                 if (\$quantity.val() < 1) {
  844.                     \$quantity[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  845.                     setTimeout(function() {
  846.                         loadingOverlay('hide');
  847.                     }, 100);
  848.                     return true;
  849.                 } else {
  850.                     \$quantity[0].setCustomValidity('');
  851.                 }
  852.                 e.preventDefault();
  853.                 \$.ajax({
  854.                     url: \$form.attr('action'),
  855.                     type: \$form.attr('method'),
  856.                     data: \$form.serialize(),
  857.                     dataType: 'json',
  858.                     beforeSend: function(xhr, settings) {
  859.                         // Buttonを無効にする
  860.                         \$('.add-cart').prop('disabled', true);
  861.                     }
  862.                 }).done(function(data) {
  863.                     // レスポンス内のメッセージをalertで表示
  864.                     \$.each(data.messages, function() {
  865.                         \$('#ec-modal-header').html(this);
  866.                     });
  867.                     \$('.ec-modal').show()
  868.                     // カートブロックを更新する
  869.                     \$.ajax({
  870.                         url: '{{ url('block_cart') }}',
  871.                         type: 'GET',
  872.                         dataType: 'html'
  873.                     }).done(function(html) {
  874.                         \$('.ec-headerRole__cart').html(html);
  875.                     });
  876.                 }).fail(function(data) {
  877.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  878.                 }).always(function(data) {
  879.                     // Buttonを有効にする
  880.                     \$('.add-cart').prop('disabled', false);
  881.                 });
  882.             });
  883.         });
  884.         \$('.ec-modal-wrap').on('click', function(e) {
  885.             // モーダル内の処理は外側にバブリングさせない
  886.             e.stopPropagation();
  887.         });
  888.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  889.             \$('.ec-modal').hide()
  890.         });
  891.         // ゲーム別おすすめPC 親カテゴリ専用レイアウト (ID=46)
  892.         {% if Category and Category.id == 46 %}
  893.         (function() {
  894.             console.log('=== Game category parent layout: Started ===');
  895.             
  896.             // 子カテゴリの定義
  897.             var gameCategories = [
  898.                 {
  899.                     id: 47,
  900.                     name: 'ARC Raiders',
  901.                     icon: '/html/user_data/game_icons/arc_raiders.jpg'
  902.                 },
  903.                 {
  904.                     id: 48,
  905.                     name: 'APEX LEGENDS',
  906.                     icon: '/html/user_data/game_icons/apex_legends.jpg'
  907.                 },
  908.                 {
  909.                     id: 49,
  910.                     name: 'Valorant',
  911.                     icon: '/html/user_data/game_icons/valorant.jpg'
  912.                 },
  913.                 {
  914.                     id: 50,
  915.                     name: '原神',
  916.                     icon: '/html/user_data/game_icons/genshin.jpg'
  917.                 }
  918.             ];
  919.             
  920.             var \$shelfGrid = \$('.ec-shelfGrid');
  921.             var \$items = \$shelfGrid.find('.ec-shelfGrid__item');
  922.             
  923.             if (\$items.length === 0) {
  924.                 console.warn('No products found');
  925.                 return;
  926.             }
  927.             
  928.             // 商品をカテゴリごとに分類
  929.             var productsByCategory = {};
  930.             
  931.             \$items.each(function() {
  932.                 var \$item = \$(this);
  933.                 var categoryIds = \$item.attr('data-category-ids');
  934.                 
  935.                 if (!categoryIds) return;
  936.                 
  937.                 var categories = categoryIds.split(',').map(function(id) {
  938.                     return parseInt(id.trim());
  939.                 });
  940.                 
  941.                 gameCategories.forEach(function(game) {
  942.                     if (categories.indexOf(game.id) !== -1) {
  943.                         if (!productsByCategory[game.id]) {
  944.                             productsByCategory[game.id] = [];
  945.                         }
  946.                         productsByCategory[game.id].push(\$item.clone());
  947.                     }
  948.                 });
  949.             });
  950.             
  951.             // 新しいレイアウトを構築
  952.             var \$newLayout = \$('<div class=\"game-category-parent-layout\"></div>');
  953.             
  954.             gameCategories.forEach(function(game) {
  955.                 var products = productsByCategory[game.id] || [];
  956.                 
  957.                 var \$section = \$('<div class=\"game-section\" data-game-id=\"' + game.id + '\"></div>');
  958.                 var \$title = \$('<h2 class=\"game-section-title\">' + 
  959.                     '<a href=\"{{ url(\"product_list\") }}?category_id=' + game.id + '\">' + 
  960.                     game.name + ' 推奨PC</a>' +
  961.                     '</h2>');
  962.                 
  963.                 var \$layout = \$('<div class=\"game-section-layout\"></div>');
  964.                 var \$iconSection = \$('<a href=\"{{ url(\"product_list\") }}?category_id=' + game.id + '\" class=\"game-icon-section\">' +
  965.                     '<img src=\"' + game.icon + '\" alt=\"' + game.name + '\" class=\"game-icon-image\">' +
  966.                     '</a>');
  967.                 
  968.                 var \$productsSection = \$('<div class=\"game-products-section\"></div>');
  969.                 var \$slider = \$('<div class=\"game-products-slider slider-' + game.id + '\"></div>');
  970.                 
  971.                 if (products.length > 0) {
  972.                     products.forEach(function(\$product) {
  973.                         \$slider.append(\$product);
  974.                     });
  975.                 } else {
  976.                     \$slider.html('<div class=\"no-products\"><p>商品準備中です</p></div>');
  977.                 }
  978.                 
  979.                 \$productsSection.append(\$slider);
  980.                 \$layout.append(\$iconSection);
  981.                 \$layout.append(\$productsSection);
  982.                 \$section.append(\$title);
  983.                 \$section.append(\$layout);
  984.                 \$newLayout.append(\$section);
  985.             });
  986.             
  987.             \$shelfGrid.replaceWith(\$newLayout);
  988.             
  989.             // スライダー初期化
  990.             setTimeout(function() {
  991.                 gameCategories.forEach(function(game) {
  992.                     var \$sliderElement = \$('.slider-' + game.id);
  993.                     var itemCount = \$sliderElement.find('.ec-shelfGrid__item').length;
  994.                     
  995.                     if (itemCount > 0) {
  996.                         if (\$sliderElement.hasClass('slick-initialized')) {
  997.                             \$sliderElement.slick('unslick');
  998.                         }
  999.                         
  1000.                         \$sliderElement.slick({
  1001.                             slidesToShow: 4,
  1002.                             slidesToScroll: 1,
  1003.                             infinite: false,
  1004.                             arrows: true,
  1005.                             dots: false,
  1006.                             prevArrow: '<button type=\"button\" class=\"slick-prev\"><img src=\"{{ asset(\"assets/icon/slick-arrow-left-white.svg\") }}\" alt=\"前へ\" /></button>',
  1007.                             nextArrow: '<button type=\"button\" class=\"slick-next\"><img src=\"{{ asset(\"assets/icon/slick-arrow-right-white.svg\") }}\" alt=\"次へ\" /></button>',
  1008.                             responsive: [
  1009.                                 {
  1010.                                     breakpoint: 1200,
  1011.                                     settings: { slidesToShow: 3, dots: false }
  1012.                                 },
  1013.                                 {
  1014.                                     breakpoint: 768,
  1015.                                     settings: { slidesToShow: 1, slidesToScroll: 1, arrows: false, dots: false }
  1016.                                 },
  1017.                                 {
  1018.                                     breakpoint: 480,
  1019.                                     settings: { slidesToShow: 1, slidesToScroll: 1, arrows: false, dots: false }
  1020.                                 }
  1021.                             ]
  1022.                         });
  1023.                         
  1024.                         // スマホでスライド状態を監視
  1025.                         if (\$(window).width() <= 768) {
  1026.                             \$sliderElement.on('afterChange', function(event, slick, currentSlide) {
  1027.                                 var isLast = (currentSlide >= slick.slideCount - 1);
  1028.                                 
  1029.                                 if (isLast) {
  1030.                                     \$(this).closest('.game-products-section').addClass('no-more-slides');
  1031.                                 } else {
  1032.                                     \$(this).closest('.game-products-section').removeClass('no-more-slides');
  1033.                                 }
  1034.                             });
  1035.                         }
  1036.                     }
  1037.                 });
  1038.             }, 300);
  1039.             
  1040.             console.log('=== Game category parent layout: Complete ===');
  1041.         })();
  1042.         {% endif %}
  1043.     </script>
  1044. {% endblock %}
  1045. {% block main %}
  1046.     {% if search_form.vars.value.category_id.id is defined %}
  1047.     {{ include('Block/category'~search_form.vars.value.category_id.id~'.twig', ignore_missing = true) }}
  1048.     {% endif %}
  1049.     {% if search_form.category_id.vars.errors|length > 0 %}
  1050.         <div class=\"ec-searchnavRole\">
  1051.             <p class=\"errormsg text-danger\">{{ 'ご指定のカテゴリは存在しません'|trans }}</p>
  1052.         </div>
  1053.     {% else %}
  1054.         <div class=\"ec-searchnavRole\">
  1055.             <form name=\"form1\" id=\"form1\" method=\"get\" action=\"?\">
  1056.                 {% for item in search_form %}
  1057.                     <input type=\"hidden\" id=\"{{ item.vars.id }}\"
  1058.                            name=\"{{ item.vars.full_name }}\"
  1059.                            {% if item.vars.value is not empty %}value=\"{{ item.vars.value }}\" {% endif %}/>
  1060.                 {% endfor %}
  1061.             </form>
  1062.             <div class=\"ec-searchnavRole__topicpath\">
  1063.                 <ol class=\"ec-topicpath\">
  1064.                     <li class=\"ec-topicpath__item\"><a href=\"{{ url('product_list') }}\">{{ '全て'|trans }}</a>
  1065.                     </li>
  1066.                     {% if Category is not null %}
  1067.                         {% for Path in Category.path %}
  1068.                             <li class=\"ec-topicpath__divider\">|</li>
  1069.                             <li class=\"ec-topicpath__item{% if loop.last %}--active{% endif %}\"><a
  1070.                                         href=\"{{ url('product_list') }}?category_id={{ Path.id }}\">{{ Path.name }}</a>
  1071.                             </li>
  1072.                         {% endfor %}
  1073.                     {% endif %}
  1074.                     {% if search_form.vars.value and search_form.vars.value.name %}
  1075.                         <li class=\"ec-topicpath__divider\">|</li>
  1076.                         <li class=\"ec-topicpath__item\">{{ '「%name%」の検索結果'|trans({ '%name%': search_form.vars.value.name }) }}</li>
  1077.                     {% endif %}
  1078.                 </ol>
  1079.             </div>
  1080.             <div class=\"ec-searchnavRole__infos\">
  1081.                 <div class=\"ec-searchnavRole__counter\">
  1082.                     {% if pagination.totalItemCount > 0 %}
  1083.                         {{ '<span class=\"ec-font-bold\">%count%件</span><span>の商品が見つかりました</span>'|trans({ '%count%': pagination.totalItemCount })|raw }}
  1084.                     {% else %}
  1085.                         <span>{{ 'お探しの商品は見つかりませんでした'|trans }}</span>
  1086.                     {% endif %}
  1087.                 </div>
  1088.                 {% if pagination.totalItemCount > 0 %}
  1089.                     <div class=\"ec-searchnavRole__actions\">
  1090.                         <div class=\"ec-select\">
  1091.                             {{ form_widget(search_form.disp_number, {'id': '', 'attr': {'class': 'disp-number'}}) }}
  1092.                             {{ form_widget(search_form.orderby, {'id': '', 'attr': {'class': 'order-by'}}) }}
  1093.                         </div>
  1094.                     </div>
  1095.                 {% endif %}
  1096.             </div>
  1097.         </div>
  1098.         {% if pagination.totalItemCount > 0 %}
  1099.             <div class=\"ec-shelfRole\">
  1100.                 <ul class=\"ec-shelfGrid\">
  1101.                     {% for Product in pagination %}
  1102.                         <li class=\"ec-shelfGrid__item\" 
  1103.                             data-product-id=\"{{ Product.id }}\"
  1104.                             {% if Product.ProductCategories|length > 0 %}
  1105.                                 data-category-ids=\"{% for pc in Product.ProductCategories %}{{ pc.Category.id }}{% if not loop.last %},{% endif %}{% endfor %}\"
  1106.                             {% endif %}>
  1107.                             <a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  1108.                                 <p class=\"ec-shelfGrid__item-image\">
  1109.                                     <img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"{{ Product.name }}\" loading=\"lazy\">
  1110.                                 </p>
  1111.                                 <ul class=\"ec-shelfRole__tags\">
  1112.                                     {% for Tag in Product.ProductTag %}
  1113.                                     {{ include('@DesignTag42/tag_list.twig', ignore_missing = true) }}
  1114.                                         {% if Tag %}
  1115.                                             <li class=\"ec-shelfRole__tag\">{{ Tag.Tag }}</li>
  1116.                                         {% endif %}
  1117.                                     {% endfor %}
  1118.                                 </ul>
  1119.                                 <p class=\"ec-shelfGrid__item-name\">{{ Product.name }}</p>
  1120.                                 {% if Product.description_list %}
  1121.                                     <p>{{ Product.description_list|raw|nl2br }}</p>
  1122.                                 {% endif %}
  1123.                                 <p class=\"price02-default\">
  1124.                                     {% if Product.hasProductClass %}
  1125.                                         {% if Product.getPrice02Min == Product.getPrice02Max %}
  1126.                                             {{ Product.getPrice02IncTaxMin|price }}
  1127.                                         {% else %}
  1128.                                             {{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}
  1129.                                         {% endif %}
  1130.                                     {% else %}
  1131.                                         {{ Product.getPrice02IncTaxMin|price }}
  1132.                                     {% endif %}
  1133.                                 </p>
  1134.                             </a>
  1135.                         </li>
  1136.                     {% endfor %}
  1137.                 </ul>
  1138.             </div>
  1139.             <div class=\"ec-modal\">
  1140.                 <div class=\"ec-modal-overlay\">
  1141.                     <div class=\"ec-modal-wrap\">
  1142.                         <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  1143.                         <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1144.                         <div class=\"ec-modal-box\">
  1145.                             <div class=\"ec-role\">
  1146.                                 <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1147.                                 <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  1148.                             </div>
  1149.                         </div>
  1150.                     </div>
  1151.                 </div>
  1152.             </div>
  1153.             <div class=\"ec-pagerRole\">
  1154.                 {% include \"pager.twig\" with {'pages': pagination.paginationData} %}
  1155.             </div>
  1156.         {% endif %}
  1157.     {% endif %}
  1158. {% endblock %}
  1159. ""Product/list.twig""/home/noie373zam/public_html/noiezam-ec/app/template/bynoiezam/Product/list.twig");
  1160.     }
  1161. }