var/cache/dev/twig/f6/f61f9a08d8c306a7fe7a13d20b7abc1d.php line 55

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/detail.twig */
  14. class __TwigTemplate_f8323847ccbfc05f7213b846afe26efc 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.         $this->sandbox $this->env->getExtension('\Twig\Extension\SandboxExtension');
  28.         $this->checkSecurity();
  29.     }
  30.     protected function doGetParent(array $context)
  31.     {
  32.         // line 11
  33.         return "default_frame.twig";
  34.     }
  35.     protected function doDisplay(array $context, array $blocks = [])
  36.     {
  37.         $macros $this->macros;
  38.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  39.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  41.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  42.         // line 13
  43.         $context["body_class"] = "product_page";
  44.         // line 11
  45.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  46.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  49.         
  50.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  51.     }
  52.     // line 15
  53.     public function block_stylesheet($context, array $blocks = [])
  54.     {
  55.         $macros $this->macros;
  56.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  57.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  59.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  60.         // line 16
  61.         echo "    <style>
  62.         .slick-slider {
  63.             margin-bottom: 30px;
  64.         }
  65.         .slick-dots {
  66.             position: absolute;
  67.             bottom: -45px;
  68.             display: block;
  69.             width: 100%;
  70.             padding: 0;
  71.             list-style: none;
  72.             text-align: center;
  73.         }
  74.         .slick-dots li {
  75.             position: relative;
  76.             display: inline-block;
  77.             width: 20px;
  78.             height: 20px;
  79.             margin: 0 5px;
  80.             padding: 0;
  81.             cursor: pointer;
  82.         }
  83.         .slick-dots li button {
  84.             font-size: 0;
  85.             line-height: 0;
  86.             display: block;
  87.             width: 20px;
  88.             height: 20px;
  89.             padding: 5px;
  90.             cursor: pointer;
  91.             color: transparent;
  92.             border: 0;
  93.             outline: none;
  94.             background: transparent;
  95.         }
  96.         .slick-dots li button:hover,
  97.         .slick-dots li button:focus {
  98.             outline: none;
  99.         }
  100.         .slick-dots li button:hover:before,
  101.         .slick-dots li button:focus:before {
  102.             opacity: 1;
  103.         }
  104.         .slick-dots li button:before {
  105.             content: \" \";
  106.             line-height: 20px;
  107.             position: absolute;
  108.             top: 0;
  109.             left: 0;
  110.             width: 12px;
  111.             height: 12px;
  112.             text-align: center;
  113.             opacity: .25;
  114.             background-color: black;
  115.             border-radius: 50%;
  116.         }
  117.         .slick-dots li.slick-active button:before {
  118.             opacity: .75;
  119.             background-color: black;
  120.         }
  121.         .slick-dots li button.thumbnail img {
  122.             width: 0;
  123.             height: 0;
  124.         }
  125.     </style>
  126.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css\" />
  127.     <link rel=\"stylesheet\" href=\"/html/template/default/assets/css/swiper-customize.min.css\">
  128.     <style>
  129.         #modalWrapAlert {
  130.             display: none;
  131.             background: 0 0;
  132.             width: 100%;
  133.             height: 100%;
  134.             position: fixed;
  135.             top: 0;
  136.             left: 0;
  137.             z-index: 100;
  138.             overflow: hidden
  139.         }
  140.         .modalBoxAlert {
  141.             position: fixed;
  142.             width: 85%;
  143.             max-width: 420px;
  144.             height: 0;
  145.             top: 0;
  146.             bottom: 0;
  147.             left: 0;
  148.             right: 0;
  149.             margin: auto;
  150.             overflow: hidden;
  151.             opacity: 1;
  152.             display: none;
  153.             border-radius: 3px;
  154.             z-index: 1000
  155.         }
  156.         .modalInnerAlert {
  157.             padding: 10px;
  158.             text-align: center;
  159.             box-sizing: border-box;
  160.             background: rgba(0, 0, 0, .7);
  161.             color: #fff
  162.         }
  163.     </style>
  164. ";
  165.         
  166.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  167.         
  168.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  169.     }
  170.     // line 135
  171.     public function block_javascript($context, array $blocks = [])
  172.     {
  173.         $macros $this->macros;
  174.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  175.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  176.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  177.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  178.         // line 136
  179.         echo "    ";
  180.         // line 137
  181.         echo "    ";
  182.         $context["rootCategoryId"] = null;
  183.         // line 138
  184.         echo "    ";
  185.         $context['_parent'] = $context;
  186.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'138$this->source); })()), "ProductCategories", [], "any"falsefalsetrue138));
  187.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  188.             // line 139
  189.             echo "        ";
  190.             $context["Category"] = twig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue139);
  191.             // line 140
  192.             echo "        ";
  193.             $context["rootCategory"] = (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'140$this->source); })());
  194.             // line 141
  195.             echo "        ";
  196.             $context['_parent'] = $context;
  197.             $context['_seq'] = twig_ensure_traversable(range(110));
  198.             foreach ($context['_seq'] as $context["_key"] => $context["i"]) {
  199.                 if (twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'141$this->source); })()), "Parent", [], "any"falsefalsetrue141)) {
  200.                     // line 142
  201.                     echo "            ";
  202.                     $context["rootCategory"] = twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'142$this->source); })()), "Parent", [], "any"falsefalsetrue142);
  203.                     // line 143
  204.                     echo "        ";
  205.                 }
  206.             }
  207.             $_parent $context['_parent'];
  208.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']);
  209.             $context array_intersect_key($context$_parent) + $_parent;
  210.             // line 144
  211.             echo "        ";
  212.             $context["rootCategoryId"] = twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'144$this->source); })()), "id", [], "any"falsefalsetrue144);
  213.             // line 145
  214.             echo "    ";
  215.         }
  216.         $_parent $context['_parent'];
  217.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  218.         $context array_intersect_key($context$_parent) + $_parent;
  219.         // line 146
  220.         echo "    <script>
  221.         eccube.classCategories = ";
  222.         // line 147
  223.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($this->sandbox->ensureToStringAllowed((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'147$this->source); })()), 147$this->source));
  224.         echo ";
  225.         // 規格2に選択肢を割り当てる。
  226.         function fnSetClassCategories(form, classcat_id2_selected) {
  227.             var \$form = \$(form);
  228.             var product_id = \$form.find('input[name=product_id]').val();
  229.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  230.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  231.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  232.         }
  233. ";
  234.         // line 159
  235.         echo "    ";
  236.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'159$this->source); })()) == 7)) {
  237.             // line 160
  238.             echo "        window.addEventListener('load', () => {
  239.             const selectElement = document.getElementById('classcategory_id1');
  240.             if (selectElement) {
  241.                 selectElement.selectedIndex = 1;\t// 2番目のoptionを選択
  242.                 // 規格1の選択後に規格2の選択肢を設定
  243.                 fnSetClassCategories(\$('#form1'), null);
  244.                 // イベント発火処理(ネイティブ+jQuery)
  245.                 const triggerChangeEvents = () => {
  246.                     // 規格1の変更イベントを発火
  247.                     \$(selectElement).trigger('change');
  248.                 };
  249.                 // 規格1の変更イベントを発火(300msの遅延を追加)
  250.                 setTimeout(triggerChangeEvents, 300);
  251.             }
  252.             ";
  253.             // line 178
  254.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue178)) {
  255.                 // line 179
  256.                 echo "            fnSetClassCategories(
  257.                 \$('#form1'), ";
  258.                 // line 180
  259.                 echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'180$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue180), "vars", [], "any"falsefalsetrue180), "value", [], "any"falsefalsetrue180), 180$this->source));
  260.                 echo "
  261.             );
  262.             ";
  263.             } elseif (twig_get_attribute($this->env$this->source,             // line 182
  264. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue182)) {
  265.                 // line 183
  266.                 echo "            eccube.checkStock(\$('#form1'), ";
  267.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'183$this->source); })()), "id", [], "any"falsefalsetrue183), 183$this->source), "html"nulltrue);
  268.                 echo ", ";
  269.                 echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'183$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue183), "vars", [], "any"falsefalsetrue183), "value", [], "any"falsefalsetrue183), 183$this->source));
  270.                 echo ", null);
  271.             ";
  272.             } else {
  273.                 // line 185
  274.                 echo "            // 規格が存在しない場合の処理
  275.             eccube.checkStock(\$('#form1'), ";
  276.                 // line 186
  277.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'186$this->source); })()), "id", [], "any"falsefalsetrue186), 186$this->source), "html"nulltrue);
  278.                 echo ", null, null);
  279.             ";
  280.             }
  281.             // line 188
  282.             echo "        });
  283.     ";
  284.         } elseif ((        // line 189
  285. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'189$this->source); })()) == 8)) {
  286.             // line 190
  287.             echo "    ";
  288.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'190$this->source); })()) == 9)) {
  289.             // line 191
  290.             echo "    ";
  291.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'191$this->source); })()) == 10)) {
  292.             // line 192
  293.             echo "
  294.         ";
  295.             // line 193
  296.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue193)) {
  297.                 // line 194
  298.                 echo "        fnSetClassCategories(
  299.             \$('#form1'), ";
  300.                 // line 195
  301.                 echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'195$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue195), "vars", [], "any"falsefalsetrue195), "value", [], "any"falsefalsetrue195), 195$this->source));
  302.                 echo "
  303.         );
  304.         ";
  305.             } elseif (twig_get_attribute($this->env$this->source,             // line 197
  306. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue197)) {
  307.                 // line 198
  308.                 echo "        eccube.checkStock(\$('#form1'), ";
  309.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'198$this->source); })()), "id", [], "any"falsefalsetrue198), 198$this->source), "html"nulltrue);
  310.                 echo ", ";
  311.                 echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'198$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue198), "vars", [], "any"falsefalsetrue198), "value", [], "any"falsefalsetrue198), 198$this->source));
  312.                 echo ", null);
  313.         ";
  314.             }
  315.             // line 200
  316.             echo "    ";
  317.         }
  318.         // line 202
  319.         echo "    </script>
  320.     <script>
  321.         \$(function() {
  322.             // bfcache無効化
  323.             \$(window).bind('pageshow', function(event) {
  324.                 if (event.originalEvent.persisted) {
  325.                     location.reload(true);
  326.                 }
  327.             });
  328.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  329.             // img タグに width, height が付与されている.
  330.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  331.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  332.             \$('.ec-grid2__cell').hide();
  333.             var removeSize = function () {
  334.                 \$('.slide-item').height('');
  335.                 \$('.slide-item img')
  336.                     .removeAttr('width')
  337.                     .removeAttr('height')
  338.                     .removeAttr('style');
  339.             };
  340.             var slickInitial = function(slick) {
  341.                 \$('.ec-grid2__cell').fadeIn(1500);
  342.                 var baseHeight = \$(slick.target).height();
  343.                 var baseWidth = \$(slick.target).width();
  344.                 var rate = baseWidth / baseHeight;
  345.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  346.                 // transform を使用することでCLSの影響を受けないようにする
  347.                 \$('.slide-item img')
  348.                     .css(
  349.                         {
  350.                             'transform-origin': 'top left',
  351.                             'transform': 'scaleY(' + rate + ')',
  352.                             'transition': 'transform .1s'
  353.                         }
  354.                     );
  355.                 // 正しいサイズに近くなったら属性を解除する
  356.                 setTimeout(removeSize, 500);
  357.             };
  358.             \$('.item_visual').on('init', slickInitial);
  359.             // リサイズ時は CLS の影響を受けないため属性を解除する
  360.             \$(window).resize(removeSize);
  361.             \$('.item_visual').slick({
  362.                 dots: false,
  363.                 arrows: false,
  364.                 responsive: [{
  365.                     breakpoint: 768,
  366.                     settings: {
  367.                         dots: true
  368.                     }
  369.                 }]
  370.             });
  371.             \$('.slideThumb').on('click', function() {
  372.                 var index = \$(this).attr('data-index');
  373.                 \$('.item_visual').slick('slickGoTo', index, false);
  374.             })
  375.         });
  376.     </script>
  377.     <script>
  378.         \$(function() {
  379.             \$('.add-cart').on('click', function(event) {
  380.                 ";
  381.         // line 266
  382.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue266)) {
  383.             // line 267
  384.             echo "                // 規格1フォームの必須チェック
  385.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  386.                     \$('#classcategory_id1')[0].setCustomValidity('";
  387.             // line 269
  388.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  389.             echo "');
  390.                     return true;
  391.                 } else {
  392.                     \$('#classcategory_id1')[0].setCustomValidity('');
  393.                 }
  394.                 ";
  395.         }
  396.         // line 275
  397.         echo "
  398.                 ";
  399.         // line 276
  400.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue276)) {
  401.             // line 277
  402.             echo "                // 規格2フォームの必須チェック
  403.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  404.                     \$('#classcategory_id2')[0].setCustomValidity('";
  405.             // line 279
  406.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  407.             echo "');
  408.                     return true;
  409.                 } else {
  410.                     \$('#classcategory_id2')[0].setCustomValidity('');
  411.                 }
  412.                 ";
  413.         }
  414.         // line 285
  415.         echo "
  416.                 // 個数フォームのチェック
  417.                 if (\$('#quantity').val() < 1) {
  418.                     \$('#quantity')[0].setCustomValidity('";
  419.         // line 288
  420.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  421.         echo "');
  422.                     return true;
  423.                 } else {
  424.                     \$('#quantity')[0].setCustomValidity('');
  425.                 }
  426.                 event.preventDefault();
  427.                 \$form = \$('#form1');
  428.                 \$.ajax({
  429.                     url: \$form.attr('action'),
  430.                     type: \$form.attr('method'),
  431.                     data: \$form.serialize(),
  432.                     dataType: 'json',
  433.                     beforeSend: function(xhr, settings) {
  434.                         // Buttonを無効にする
  435.                         \$('.add-cart').prop('disabled', true);
  436.                     }
  437.                 }).done(function(data) {
  438.                     // レスポンス内のメッセージをalertで表示
  439.                     \$.each(data.messages, function() {
  440.                         \$('#ec-modal-header').text(this);
  441.                     });
  442.                     \$('.ec-modal').show()
  443.                     // カートブロックを更新する
  444.                     \$.ajax({
  445.                         url: \"";
  446.         // line 315
  447.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  448.         echo "\",
  449.                         type: 'GET',
  450.                         dataType: 'html'
  451.                     }).done(function(html) {
  452.                         \$('.ec-headerRole__cart').html(html);
  453.                     });
  454.                 }).fail(function(data) {
  455.                     alert('";
  456.         // line 322
  457.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  458.         echo "');
  459.                 }).always(function(data) {
  460.                     // Buttonを有効にする
  461.                     \$('.add-cart').prop('disabled', false);
  462.                 });
  463.             });
  464.         });
  465.         \$('.ec-modal-wrap').on('click', function(e) {
  466.             // モーダル内の処理は外側にバブリングさせない
  467.             e.stopPropagation();
  468.         });
  469.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .inlineBtn--cancel').on('click', function() {
  470.             \$('.ec-modal').hide()
  471.         });
  472.     </script>
  473.     <script type=\"application/ld+json\">
  474.     {
  475.         \"@context\": \"https://schema.org/\",
  476.         \"@type\": \"Product\",
  477.         \"name\": \"";
  478.         // line 342
  479.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'342$this->source); })()), "name", [], "any"falsefalsetrue342), 342$this->source), "html"nulltrue);
  480.         echo "\",
  481.         \"image\": [
  482.             ";
  483.         // line 344
  484.         $context['_parent'] = $context;
  485.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'344$this->source); })()), "ProductImage", [], "any"falsefalsetrue344));
  486.         $context['_iterated'] = false;
  487.         $context['loop'] = [
  488.           'parent' => $context['_parent'],
  489.           'index0' => 0,
  490.           'index'  => 1,
  491.           'first'  => true,
  492.         ];
  493.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  494.             $length count($context['_seq']);
  495.             $context['loop']['revindex0'] = $length 1;
  496.             $context['loop']['revindex'] = $length;
  497.             $context['loop']['length'] = $length;
  498.             $context['loop']['last'] = === $length;
  499.         }
  500.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  501.             // line 345
  502.             echo "                \"";
  503.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(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.'345$this->source); })()), "request", [], "any"falsefalsetrue345), "schemeAndHttpHost", [], "any"falsefalsetrue345), 345$this->source), "html"nulltrue);
  504.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 345$this->source), "save_image"), "html"nulltrue);
  505.             echo "\"";
  506.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue345)) {
  507.                 echo ",";
  508.             }
  509.             // line 346
  510.             echo "
  511.             ";
  512.             $context['_iterated'] = true;
  513.             ++$context['loop']['index0'];
  514.             ++$context['loop']['index'];
  515.             $context['loop']['first'] = false;
  516.             if (isset($context['loop']['length'])) {
  517.                 --$context['loop']['revindex0'];
  518.                 --$context['loop']['revindex'];
  519.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  520.             }
  521.         }
  522.         if (!$context['_iterated']) {
  523.             // line 348
  524.             echo "                \"";
  525.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(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.'348$this->source); })()), "request", [], "any"falsefalsetrue348), "schemeAndHttpHost", [], "any"falsefalsetrue348), 348$this->source), "html"nulltrue);
  526.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  527.             echo "\"
  528.             ";
  529.         }
  530.         $_parent $context['_parent'];
  531.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  532.         $context array_intersect_key($context$_parent) + $_parent;
  533.         // line 350
  534.         echo "        ],
  535.         \"description\": \"";
  536.         // line 351
  537.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruetrue351)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsetrue351), 351$this->source), $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'351$this->source); })()), "description_detail", [], "any"falsefalsetrue351), 351$this->source))) : (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'351$this->source); })()), "description_detail", [], "any"falsefalsetrue351))), ["
  538. => """ " => ""]), 0300), "html"nulltrue);
  539.         echo "\",
  540.         ";
  541.         // line 352
  542.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'352$this->source); })()), "code_min", [], "any"falsefalsetrue352)) {
  543.             // line 353
  544.             echo "        \"sku\": \"";
  545.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'353$this->source); })()), "code_min", [], "any"falsefalsetrue353), 353$this->source), "html"nulltrue);
  546.             echo "\",
  547.         ";
  548.         }
  549.         // line 355
  550.         echo "        \"offers\": {
  551.             \"@type\": \"Offer\",
  552.             \"url\": \"";
  553.         // line 357
  554.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'357$this->source); })()), "id", [], "any"falsefalsetrue357)]), "html"nulltrue);
  555.         echo "\",
  556.             \"priceCurrency\": \"";
  557.         // line 358
  558.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["eccube_config"]) || array_key_exists("eccube_config"$context) ? $context["eccube_config"] : (function () { throw new RuntimeError('Variable "eccube_config" does not exist.'358$this->source); })()), "currency", [], "any"falsefalsetrue358), 358$this->source), "html"nulltrue);
  559.         echo "\",
  560.             \"price\": ";
  561.         // line 359
  562.         ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'359$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue359)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'359$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue359), "html"nulltrue))) : (print (0)));
  563.         echo ",
  564.             \"availability\": \"";
  565.         // line 360
  566.         echo ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'360$this->source); })()), "stock_find", [], "any"falsefalsetrue360)) ? ("InStock") : ("OutOfStock"));
  567.         echo "\"
  568.         }
  569.     }
  570.     </script>
  571.     <script src=\"https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js\"></script>
  572.     <script>
  573.         // swiperを生成
  574.         var swiperMain = new Swiper('.swiper-container', {
  575.             effect: 'fade', // フェードエフェクトを適用
  576.             speed: 600,
  577.             loop: true,
  578.             pagination: {
  579.             el: '.swiper-pagination',
  580.             clickable: true,
  581.             },
  582.             navigation: { // コメントアウトまたは削除
  583.             nextEl: '.swiper-button-next',
  584.             prevEl: '.swiper-button-prev',
  585.             },
  586.         });
  587.         // slideToメソッドを実行する関数を定義
  588.         function slideThumb(index) {
  589.             swiperMain.slideTo(index);
  590.         }
  591.     </script>
  592.     <script>
  593.     ";
  594.         // line 386
  595.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'386$this->source); })()) == 7)) {
  596.             // line 387
  597.             echo "        \$(function() {
  598.             \$('.ball_type').change(function() {
  599.                 let selCnt = 0;
  600.                 const ballType = document.forms.formSelPC.ball_type;
  601.                 for( let i=0; i < ballType.length; i++ ) {
  602.                     if( ballType[i].checked ) {
  603.                         selCnt++;
  604.                     }
  605.                 }
  606.                 if( selCnt == ballType.length ) {
  607.                     for( let i=0; i < ballType.length; i++ ) {
  608.                         ballType[i].checked = false;
  609.                     }
  610.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  611.                     selAlert();
  612.                 }
  613.             });
  614.             \$('.ball_nums').change(function() {
  615.                 let selCnt = 0;
  616.                 const ballNums = document.forms.formSelPC.ball_nums;
  617.                 for( let i=0; i < ballNums.length; i++ ) {
  618.                     if( ballNums[i].checked ) {
  619.                         selCnt++;
  620.                     }
  621.                 }
  622.                 if( selCnt == ballNums.length ) {
  623.                     for( let i=0; i < ballNums.length; i++ ) {
  624.                         ballNums[i].checked = false;
  625.                     }
  626.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  627.                     selAlert();
  628.                 }
  629.             });
  630.             \$('.ball_price').change(function() {
  631.                 let selCnt = 0;
  632.                 const ballPrice = document.forms.formSelPC.ball_price;
  633.                 for( let i=0; i < ballPrice.length; i++ ) {
  634.                     if( ballPrice[i].checked ) {
  635.                         selCnt++;
  636.                     }
  637.                 }
  638.                 if( selCnt == ballPrice.length ) {
  639.                     for( let i=0; i < ballPrice.length; i++ ) {
  640.                         ballPrice[i].checked = false;
  641.                     }
  642.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  643.                     selAlert();
  644.                 }
  645.             });
  646.             \$('.ball_type_sp').change(function() {
  647.                 let selCnt = 0;
  648.                 const ballType = document.forms.formSelSP.ball_type;
  649.                 for( let i=0; i < ballType.length; i++ ) {
  650.                     if( ballType[i].checked ) {
  651.                         selCnt++;
  652.                     }
  653.                 }
  654.                 if( selCnt == ballType.length ) {
  655.                     for( let i=0; i < ballType.length; i++ ) {
  656.                         ballType[i].checked = false;
  657.                     }
  658.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  659.                     selAlert();
  660.                 }
  661.             });
  662.             \$('.ball_nums_sp').change(function() {
  663.                 let selCnt = 0;
  664.                 const ballNums = document.forms.formSelSP.ball_nums;
  665.                 for( let i=0; i < ballNums.length; i++ ) {
  666.                     if( ballNums[i].checked ) {
  667.                         selCnt++;
  668.                     }
  669.                 }
  670.                 if( selCnt == ballNums.length ) {
  671.                     for( let i=0; i < ballNums.length; i++ ) {
  672.                         ballNums[i].checked = false;
  673.                     }
  674.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  675.                     selAlert();
  676.                 }
  677.             });
  678.             \$('.ball_price_sp').change(function() {
  679.                 let selCnt = 0;
  680.                 const ballPrice = document.forms.formSelSP.ball_price;
  681.                 for( let i=0; i < ballPrice.length; i++ ) {
  682.                     if( ballPrice[i].checked ) {
  683.                         selCnt++;
  684.                     }
  685.                 }
  686.                 if( selCnt == ballPrice.length ) {
  687.                     for( let i=0; i < ballPrice.length; i++ ) {
  688.                         ballPrice[i].checked = false;
  689.                     }
  690.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  691.                     selAlert();
  692.                 }
  693.             });
  694.         });
  695.         function setValPC() {
  696.             let sels_type = '';
  697.             const ballType = document.forms.formSelPC.ball_type;
  698.             for( let i=0; i < ballType.length; i++ ) {
  699.                 if( ballType[i].checked ) {
  700.                     if( sels_type ) {
  701.                         sels_type = sels_type + ',';
  702.                     }
  703.                     sels_type = sels_type + ballType[i].value;
  704.                 }
  705.             }
  706.             document.forms.formSelPC2.elements['ball-type'].value = sels_type;
  707.             let sels_nums = '';
  708.             const ballNums = document.forms.formSelPC.ball_nums;
  709.             for( let i=0; i < ballNums.length; i++ ) {
  710.                 if( ballNums[i].checked ) {
  711.                     if( sels_nums ) {
  712.                         sels_nums = sels_nums + ',';
  713.                     }
  714.                     sels_nums = sels_nums + ballNums[i].value;
  715.                 }
  716.             }
  717.             document.forms.formSelPC2.elements['ball-nums'].value = sels_nums;
  718.             let sels_price = '';
  719.             const ballPrice = document.forms.formSelPC.ball_price;
  720.             for( let i=0; i < ballPrice.length; i++ ) {
  721.                 if( ballPrice[i].checked ) {
  722.                     if( sels_price ) {
  723.                         sels_price = sels_price + ',';
  724.                     }
  725.                     sels_price = sels_price + ballPrice[i].value;
  726.                 }
  727.             }
  728.             document.forms.formSelPC2.elements['ball-price'].value = sels_price;
  729.             document.forms.formSelPC2.submit();
  730.         }
  731.         function setValSP() {
  732.             let sels_type = '';
  733.             const ballType = document.forms.formSelSP.ball_type;
  734.             for( let i=0; i < ballType.length; i++ ) {
  735.                 if( ballType[i].checked ) {
  736.                     if( sels_type ) {
  737.                         sels_type = sels_type + ',';
  738.                     }
  739.                     sels_type = sels_type + ballType[i].value;
  740.                 }
  741.             }
  742.             document.forms.formSelSP2.elements['ball-type'].value = sels_type;
  743.             let sels_nums = '';
  744.             const ballNums = document.forms.formSelSP.ball_nums;
  745.             for( let i=0; i < ballNums.length; i++ ) {
  746.                 if( ballNums[i].checked ) {
  747.                     if( sels_nums ) {
  748.                         sels_nums = sels_nums + ',';
  749.                     }
  750.                     sels_nums = sels_nums + ballNums[i].value;
  751.                 }
  752.             }
  753.             document.forms.formSelSP2.elements['ball-nums'].value = sels_nums;
  754.             let sels_price = '';
  755.             const ballPrice = document.forms.formSelSP.ball_price;
  756.             for( let i=0; i < ballPrice.length; i++ ) {
  757.                 if( ballPrice[i].checked ) {
  758.                     if( sels_price ) {
  759.                         sels_price = sels_price + ',';
  760.                     }
  761.                     sels_price = sels_price + ballPrice[i].value;
  762.                 }
  763.             }
  764.             document.forms.formSelSP2.elements['ball-price'].value = sels_price;
  765.             document.forms.formSelSP2.submit();
  766.         }
  767.     ";
  768.         } elseif ((        // line 564
  769. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'564$this->source); })()) == 8)) {
  770.             // line 565
  771.             echo "    ";
  772.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'565$this->source); })()) == 9)) {
  773.             // line 566
  774.             echo "        \$(function() {
  775.             \$('.design_cate').change(function() {
  776.                 let selCnt = 0;
  777.                 const designCate = document.forms.formSelPC.design_cate;
  778.                 for( let i=0; i < designCate.length; i++ ) {
  779.                     if( designCate[i].checked ) {
  780.                         selCnt++;
  781.                     }
  782.                 }
  783.                 if( selCnt == designCate.length ) {
  784.                     for( let i=0; i < designCate.length; i++ ) {
  785.                         designCate[i].checked = false;
  786.                     }
  787.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  788.                     selAlert();
  789.                 }
  790.             });
  791.             \$('.design_cate_sp').change(function() {
  792.                 let selCnt = 0;
  793.                 const designCate = document.forms.formSelSP.design_cate;
  794.                 for( let i=0; i < designCate.length; i++ ) {
  795.                     if( designCate[i].checked ) {
  796.                         selCnt++;
  797.                     }
  798.                 }
  799.                 if( selCnt == designCate.length ) {
  800.                     for( let i=0; i < designCate.length; i++ ) {
  801.                         designCate[i].checked = false;
  802.                     }
  803.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  804.                     selAlert();
  805.                 }
  806.             });
  807.         });
  808.         function setValPC() {
  809.             let sels_design = '';
  810.             const designCate = document.forms.formSelPC.design_cate;
  811.             for( let i=0; i < designCate.length; i++ ) {
  812.                 if( designCate[i].checked ) {
  813.                     if( sels_design ) {
  814.                         sels_design = sels_design + ',';
  815.                     }
  816.                     sels_design = sels_design + designCate[i].value;
  817.                 }
  818.             }
  819.             document.forms.formSelPC2.elements['design-cate'].value = sels_design;
  820.             document.forms.formSelPC2.submit();
  821.         }
  822.         function setValSP() {
  823.             let sels_design = '';
  824.             const designCate = document.forms.formSelSP.design_cate;
  825.             for( let i=0; i < designCate.length; i++ ) {
  826.                 if( designCate[i].checked ) {
  827.                     if( sels_design ) {
  828.                         sels_design = sels_design + ',';
  829.                     }
  830.                     sels_design = sels_design + designCate[i].value;
  831.                 }
  832.             }
  833.             document.forms.formSelSP2.elements['design-cate'].value = sels_design;
  834.             document.forms.formSelSP2.submit();
  835.         }
  836.     ";
  837.         } elseif ((        // line 631
  838. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'631$this->source); })()) == 10)) {
  839.             // line 632
  840.             echo "    ";
  841.         }
  842.         // line 633
  843.         echo "    </script>
  844.     <script>
  845.         function selAlert() {
  846.             var modalThis = \$('body').find('#alert01');
  847.             //bodyの最下にwrapを作る 
  848.             \$('body').append('<div id=\"modalWrapAlert\" />');
  849.             var wrap = \$('#modalWrapAlert');
  850.             wrap.fadeIn('200');
  851.             modalThis.fadeIn('200');
  852.             //モーダルの高さを取ってくる 
  853.             function mdlHeight() {
  854.                 var wh = \$(window).innerHeight();
  855.                 var attH = modalThis.find('.modalInnerAlert').innerHeight();
  856.                 modalThis.css({
  857.                     height: attH
  858.                 });
  859.             }
  860.             mdlHeight();
  861.             \$(window).on('resize', function () {
  862.                 mdlHeight();
  863.             });
  864.             function clickAction() {
  865.                 modalThis.fadeOut('200');
  866.                 wrap.fadeOut('200', function () {
  867.                     wrap.remove();
  868.                 });
  869.             }
  870.             //wrapクリックされたら 
  871.             wrap.on('click', function () {
  872.                 clickAction();
  873.                 return false;
  874.             });
  875.             //2秒後に消える 
  876.             setTimeout(clickAction, 2000);
  877.             return false;
  878.         }
  879.     </script>
  880. ";
  881.         
  882.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  883.         
  884.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  885.     }
  886.     // line 676
  887.     public function block_main($context, array $blocks = [])
  888.     {
  889.         $macros $this->macros;
  890.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  891.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  892.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  893.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  894.         // line 677
  895.         echo "    ";
  896.         // line 678
  897.         echo "    ";
  898.         $context["rootCategoryId"] = null;
  899.         // line 679
  900.         echo "    ";
  901.         $context['_parent'] = $context;
  902.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'679$this->source); })()), "ProductCategories", [], "any"falsefalsetrue679));
  903.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  904.             // line 680
  905.             echo "        ";
  906.             $context["Category"] = twig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue680);
  907.             // line 681
  908.             echo "        ";
  909.             $context["rootCategory"] = (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'681$this->source); })());
  910.             // line 682
  911.             echo "        ";
  912.             $context['_parent'] = $context;
  913.             $context['_seq'] = twig_ensure_traversable(range(110));
  914.             foreach ($context['_seq'] as $context["_key"] => $context["i"]) {
  915.                 if (twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'682$this->source); })()), "Parent", [], "any"falsefalsetrue682)) {
  916.                     // line 683
  917.                     echo "            ";
  918.                     $context["rootCategory"] = twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'683$this->source); })()), "Parent", [], "any"falsefalsetrue683);
  919.                     // line 684
  920.                     echo "        ";
  921.                 }
  922.             }
  923.             $_parent $context['_parent'];
  924.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['i'], $context['_parent'], $context['loop']);
  925.             $context array_intersect_key($context$_parent) + $_parent;
  926.             // line 685
  927.             echo "        ";
  928.             $context["rootCategoryId"] = twig_get_attribute($this->env$this->source, (isset($context["rootCategory"]) || array_key_exists("rootCategory"$context) ? $context["rootCategory"] : (function () { throw new RuntimeError('Variable "rootCategory" does not exist.'685$this->source); })()), "id", [], "any"falsefalsetrue685);
  929.             // line 686
  930.             echo "    ";
  931.         }
  932.         $_parent $context['_parent'];
  933.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  934.         $context array_intersect_key($context$_parent) + $_parent;
  935.         // line 687
  936.         echo "    <div class=\"container\">
  937.         <!-- パンくずリスト -->
  938.         <nav aria-label=\"breadcrumb\" class=\"my-3\">
  939.             <ol class=\"breadcrumb\">
  940.                 <li class=\"breadcrumb-item\"><a href=\"";
  941.         // line 691
  942.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("homepage");
  943.         echo "\">ホーム</a></li>
  944.                 ";
  945.         // line 692
  946.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'692$this->source); })()) == 7)) {
  947.             // line 693
  948.             echo "                    <li class=\"breadcrumb-item\"><a href=\"";
  949.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list", ["category_id" => 7]);
  950.             echo "\">ボールを選ぶ</a></li>
  951.                     <li class=\"breadcrumb-item active\" aria-current=\"page\">";
  952.             // line 694
  953.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'694$this->source); })()), "name", [], "any"falsefalsetrue694), 694$this->source), "html"nulltrue);
  954.             echo "</li>
  955.                 ";
  956.         } elseif ((        // line 695
  957. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'695$this->source); })()) == 8)) {
  958.             // line 696
  959.             echo "                ";
  960.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'696$this->source); })()) == 9)) {
  961.             // line 697
  962.             echo "                    <li class=\"breadcrumb-item\"><a href=\"";
  963.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list", ["category_id" => 9]);
  964.             echo "\">デザインを選ぶ</a></li>
  965.                     <li class=\"breadcrumb-item active\" aria-current=\"page\">";
  966.             // line 698
  967.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'698$this->source); })()), "name", [], "any"falsefalsetrue698), 698$this->source), "html"nulltrue);
  968.             echo "</li>
  969.                 ";
  970.         } elseif ((        // line 699
  971. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'699$this->source); })()) == 10)) {
  972.             // line 700
  973.             echo "                ";
  974.         }
  975.         // line 701
  976.         echo "            </ol>
  977.         </nav>
  978.         <div class=\"layout-2colmun\">
  979.             ";
  980.         // line 704
  981.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'704$this->source); })()) == 7)) {
  982.             // line 705
  983.             echo "                ";
  984.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/aside_ball.twig");
  985.             echo "
  986.             ";
  987.         } elseif ((        // line 706
  988. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'706$this->source); })()) == 8)) {
  989.             // line 707
  990.             echo "            ";
  991.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'707$this->source); })()) == 9)) {
  992.             // line 708
  993.             echo "                ";
  994.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/aside_design.twig");
  995.             echo "
  996.             ";
  997.         } elseif ((        // line 709
  998. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'709$this->source); })()) == 10)) {
  999.             // line 710
  1000.             echo "            ";
  1001.         }
  1002.         // line 711
  1003.         echo "            <main class=\"main\">
  1004.                 <div class=\"row mb-5\">
  1005.                     <div class=\"col-md-6\">
  1006.                         <div id=\"product-detail\">
  1007.                             <!-- main -->
  1008.                             <div class=\"swiper-container\">
  1009.                                 <div class=\"swiper-wrapper\">
  1010.                                     ";
  1011.         // line 718
  1012.         $context['_parent'] = $context;
  1013.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'718$this->source); })()), "ProductImage", [], "any"falsefalsetrue718));
  1014.         $context['_iterated'] = false;
  1015.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  1016.             // line 719
  1017.             echo "                                        <div class=\"swiper-slide\" style=\"background-image: url('";
  1018.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 719$this->source), "save_image"), "html"nulltrue);
  1019.             echo "'); background-size: contain; background-repeat: no-repeat;\"></div>
  1020.                                     ";
  1021.             $context['_iterated'] = true;
  1022.         }
  1023.         if (!$context['_iterated']) {
  1024.             // line 721
  1025.             echo "                                        <div class=\"swiper-slide\" style=\"background-image: url('";
  1026.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  1027.             echo "'); background-size: contain; background-repeat: no-repeat;\"></div>
  1028.                                     ";
  1029.         }
  1030.         $_parent $context['_parent'];
  1031.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  1032.         $context array_intersect_key($context$_parent) + $_parent;
  1033.         // line 723
  1034.         echo "                                </div>
  1035.                                 <div class=\"swiper-button-prev\"></div>
  1036.                                 <div class=\"swiper-button-next\"></div>
  1037.                             </div>
  1038.                             <!-- thumbnail -->
  1039.                             <ul class=\"thumb-list\">
  1040.                                 ";
  1041.         // line 729
  1042.         $context['_parent'] = $context;
  1043.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'729$this->source); })()), "ProductImage", [], "any"falsefalsetrue729));
  1044.         $context['loop'] = [
  1045.           'parent' => $context['_parent'],
  1046.           'index0' => 0,
  1047.           'index'  => 1,
  1048.           'first'  => true,
  1049.         ];
  1050.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1051.             $length count($context['_seq']);
  1052.             $context['loop']['revindex0'] = $length 1;
  1053.             $context['loop']['revindex'] = $length;
  1054.             $context['loop']['length'] = $length;
  1055.             $context['loop']['last'] = === $length;
  1056.         }
  1057.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  1058.             // line 730
  1059.             echo "                                    <li class=\"thumb-item\">
  1060.                                         <a class=\"thumb-link\" href=\"javascript:void(0);\" onclick=\"slideThumb(";
  1061.             // line 731
  1062.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsetrue731), 731$this->source), "html"nulltrue);
  1063.             echo ")\" style=\"background-image: url('";
  1064.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 731$this->source), "save_image"), "html"nulltrue);
  1065.             echo "')\"></a>
  1066.                                     </li>
  1067.                                 ";
  1068.             ++$context['loop']['index0'];
  1069.             ++$context['loop']['index'];
  1070.             $context['loop']['first'] = false;
  1071.             if (isset($context['loop']['length'])) {
  1072.                 --$context['loop']['revindex0'];
  1073.                 --$context['loop']['revindex'];
  1074.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  1075.             }
  1076.         }
  1077.         $_parent $context['_parent'];
  1078.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  1079.         $context array_intersect_key($context$_parent) + $_parent;
  1080.         // line 734
  1081.         echo "                            </ul>
  1082.                         </div>
  1083.                     </div>
  1084.                     <div class=\"col-md-6\">
  1085.                         <h1 class=\"fw-bold _fs-5 mb-3\">";
  1086.         // line 738
  1087.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'738$this->source); })()), "name", [], "any"falsefalsetrue738), 738$this->source), "html"nulltrue);
  1088.         echo "</h1>
  1089.                         <div class=\"item-thumb mb-3\">
  1090.                             ";
  1091.         // line 740
  1092.         $context['_parent'] = $context;
  1093.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'740$this->source); })()), "Tags", [], "any"falsefalsetrue740));
  1094.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  1095.             // line 741
  1096.             echo "                                ";
  1097.             if ((twig_get_attribute($this->env$this->source$context["Tag"], "name", [], "any"falsefalsetrue741) == "一番人気")) {
  1098.                 // line 742
  1099.                 echo "                                    <span class=\"icon -popular -large\">一番人気</span>
  1100.                                 ";
  1101.             } elseif ((twig_get_attribute($this->env$this->source,             // line 743
  1102. $context["Tag"], "name", [], "any"falsefalsetrue743) == "即日配送")) {
  1103.                 // line 744
  1104.                 echo "                                    <span class=\"icon -rapid -large\">即日配送</span>
  1105.                                 ";
  1106.             } elseif ((twig_get_attribute($this->env$this->source,             // line 745
  1107. $context["Tag"], "name", [], "any"falsefalsetrue745) == "代引手数料無料")) {
  1108.                 // line 746
  1109.                 echo "                                    <span class=\"icon -free -large\">代引手数料無料</span>
  1110.                                 ";
  1111.             } elseif ((twig_get_attribute($this->env$this->source,             // line 747
  1112. $context["Tag"], "name", [], "any"falsefalsetrue747) == "送料無料")) {
  1113.                 // line 748
  1114.                 echo "                                    <span class=\"icon -free -large\">送料無料</span>
  1115.                                 ";
  1116.             } elseif ((twig_get_attribute($this->env$this->source,             // line 749
  1117. $context["Tag"], "name", [], "any"falsefalsetrue749) == "3%還元")) {
  1118.                 // line 750
  1119.                 echo "                                    <span class=\"icon -point -large\">3%還元</span>
  1120.                                 ";
  1121.             } elseif ((twig_get_attribute($this->env$this->source,             // line 751
  1122. $context["Tag"], "name", [], "any"falsefalsetrue751) == "人気")) {
  1123.                 // line 752
  1124.                 echo "                                    <span class=\"icon -popular -large\">人気</span>
  1125.                                 ";
  1126.             }
  1127.             // line 754
  1128.             echo "                            ";
  1129.         }
  1130.         $_parent $context['_parent'];
  1131.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  1132.         $context array_intersect_key($context$_parent) + $_parent;
  1133.         // line 755
  1134.         echo "                            ";
  1135.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'755$this->source); })()) == 7)) {
  1136.             // line 756
  1137.             echo "                            ";
  1138.             if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'756$this->source); })()), "hasProductClass", [], "any"falsefalsetrue756)) {
  1139.                 // line 757
  1140.                 if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'757$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue757) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'757$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue757))) {
  1141.                     // line 758
  1142.                     echo "                                    <div class=\"price -large\"><span class=\"price02-default\">&yen;";
  1143.                     echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'758$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue758), 758$this->source)), "html"nulltrue);
  1144.                     echo "</span> <span>(税込)</span></div>
  1145.                                 ";
  1146.                 } else {
  1147.                     // line 760
  1148.                     echo "                                    <div class=\"price -large\"><span class=\"price02-default\">&yen;";
  1149.                     echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'760$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue760), 760$this->source)), "html"nulltrue);
  1150.                     echo " ~ &yen;";
  1151.                     echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'760$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue760), 760$this->source)), "html"nulltrue);
  1152.                     echo "</span> <span>(税込)</span></div>
  1153.                                 ";
  1154.                 }
  1155.                 // line 762
  1156.                 echo "                            ";
  1157.             } else {
  1158.                 // line 763
  1159.                 echo "                                <div class=\"price -large\"><span class=\"price02-default\">&yen;";
  1160.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'763$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue763), 763$this->source)), "html"nulltrue);
  1161.                 echo "</span> <span>(税込)</span></div>
  1162.                             ";
  1163.             }
  1164.             // line 765
  1165.             echo "                            ";
  1166.         }
  1167.         // line 766
  1168.         echo "                        </div>
  1169.                         <form action=\"";
  1170.         // line 767
  1171.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_cart", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'767$this->source); })()), "id", [], "any"falsefalsetrue767)]), "html"nulltrue);
  1172.         echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  1173.                             ";
  1174.         // line 768
  1175.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'768$this->source); })()) == 7)) {
  1176.             // line 769
  1177.             echo "                            <div class=\"border-top border-bottom py-3 mb-4\">
  1178.                                 <div class=\"d-flex align-items-center pb-3\">
  1179.                                     <div class=\"w-25 text-end\">";
  1180.             // line 771
  1181.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  1182.             echo ":</div>
  1183.                                     <div class=\"ps-3\">";
  1184.             // line 772
  1185.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'772$this->source); })()), "code_min", [], "any"falsefalsetrue772), 772$this->source), "html"nulltrue);
  1186.             if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'772$this->source); })()), "code_min", [], "any"falsefalsetrue772) != twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'772$this->source); })()), "code_max", [], "any"falsefalsetrue772))) {
  1187.                 echo " ~ ";
  1188.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'772$this->source); })()), "code_max", [], "any"falsefalsetrue772), 772$this->source), "html"nulltrue);
  1189.             }
  1190.             echo "</div>
  1191.                                 </div>
  1192.                                 ";
  1193.             // line 774
  1194.             if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'774$this->source); })()), "stock_find", [], "any"falsefalsetrue774)) {
  1195.                 // line 775
  1196.                 echo "                                    ";
  1197.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue775)) {
  1198.                     // line 776
  1199.                     echo "                                        <div class=\"d-flex align-items-center pb-1 d-none\">
  1200.                                             ";
  1201.                     // line 777
  1202.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'777$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue777), 777$this->source), 'row');
  1203.                     echo "
  1204.                                             ";
  1205.                     // line 778
  1206.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'778$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue778), 778$this->source), 'errors');
  1207.                     echo "
  1208.                                         </div>
  1209.                                         ";
  1210.                     // line 780
  1211.                     if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue780)) {
  1212.                         // line 781
  1213.                         echo "                                            <div class=\"detail-color pb-1\">
  1214.                                                 ";
  1215.                         // line 782
  1216.                         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'782$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue782), 782$this->source), 'row');
  1217.                         echo "
  1218.                                                 ";
  1219.                         // line 783
  1220.                         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'783$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue783), 783$this->source), 'errors');
  1221.                         echo "
  1222.                                             </div>
  1223.                                         ";
  1224.                     }
  1225.                     // line 786
  1226.                     echo "                                    ";
  1227.                 }
  1228.                 // line 787
  1229.                 echo "                                    <div class=\"d-flex align-items-center py-1\">
  1230.                                         <div class=\"w-25 text-end\">";
  1231.                 // line 788
  1232.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  1233.                 echo "</div>
  1234.                                         <div class=\"ps-3\">
  1235.                                             ";
  1236.                 // line 790
  1237.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'790$this->source); })()), "quantity", [], "any"falsefalsetrue790), 790$this->source), 'widget');
  1238.                 echo "
  1239.                                             ";
  1240.                 // line 791
  1241.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'791$this->source); })()), "quantity", [], "any"falsefalsetrue791), 791$this->source), 'errors');
  1242.                 echo "
  1243.                                         </div>
  1244.                                     </div>
  1245.                                 ";
  1246.             }
  1247.             // line 795
  1248.             echo "                            </div>
  1249.                             ";
  1250.         } elseif ((        // line 796
  1251. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'796$this->source); })()) == 8)) {
  1252.             // line 797
  1253.             echo "                            ";
  1254.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'797$this->source); })()) == 9)) {
  1255.             // line 798
  1256.             echo "                            <div class=\"d-flex align-items-center pb-3\">
  1257.                                 <div class=\"text-start\">";
  1258.             // line 799
  1259.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  1260.             echo ":</div>
  1261.                                 <div class=\"ps-3\">";
  1262.             // line 800
  1263.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'800$this->source); })()), "code_min", [], "any"falsefalsetrue800), 800$this->source), "html"nulltrue);
  1264.             if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'800$this->source); })()), "code_min", [], "any"falsefalsetrue800) != twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'800$this->source); })()), "code_max", [], "any"falsefalsetrue800))) {
  1265.                 echo " ~ ";
  1266.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'800$this->source); })()), "code_max", [], "any"falsefalsetrue800), 800$this->source), "html"nulltrue);
  1267.             }
  1268.             echo "</div>
  1269.                             </div>
  1270.                             ";
  1271.             // line 802
  1272.             if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'802$this->source); })()), "stock_find", [], "any"falsefalsetrue802)) {
  1273.                 // line 803
  1274.                 echo "                                ";
  1275.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue803)) {
  1276.                     // line 804
  1277.                     echo "                                    ";
  1278.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'804$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue804), 804$this->source), 'row', ["attr" => ["type" => "hidden"]]);
  1279.                     echo "
  1280.                                     ";
  1281.                     // line 805
  1282.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'805$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue805), 805$this->source), 'errors');
  1283.                     echo "
  1284.                                     ";
  1285.                     // line 806
  1286.                     if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue806)) {
  1287.                         // line 807
  1288.                         echo "                                        ";
  1289.                         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'807$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue807), 807$this->source), 'row', ["attr" => ["type" => "hidden"]]);
  1290.                         echo "
  1291.                                         ";
  1292.                         // line 808
  1293.                         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'808$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue808), 808$this->source), 'errors');
  1294.                         echo "
  1295.                                     ";
  1296.                     }
  1297.                     // line 810
  1298.                     echo "                                ";
  1299.                 }
  1300.                 // line 811
  1301.                 echo "                                ";
  1302.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'811$this->source); })()), "quantity", [], "any"falsefalsetrue811), 811$this->source), 'widget', ["type" => "hidden"]);
  1303.                 echo "
  1304.                                 ";
  1305.                 // line 812
  1306.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(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.'812$this->source); })()), "quantity", [], "any"falsefalsetrue812), 812$this->source), 'errors');
  1307.                 echo "
  1308.                             ";
  1309.             }
  1310.             // line 814
  1311.             echo "                            ";
  1312.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'814$this->source); })()) == 10)) {
  1313.             // line 815
  1314.             echo "                            ";
  1315.         }
  1316.         // line 816
  1317.         echo "                            <div class=\"d-flex justify-content-between\">
  1318.                                 ";
  1319.         // line 817
  1320.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'817$this->source); })()), "stock_find", [], "any"falsefalsetrue817)) {
  1321.             // line 818
  1322.             echo "                                    <a href=\"javascript:void(0);\" class=\"me-1 btn btn-danger btn-lg rounded-0 w-100 add-cart\"><i class=\"icon-shopping_cart\"></i>";
  1323.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1324.             echo "</a>
  1325.                                 ";
  1326.         } else {
  1327.             // line 820
  1328.             echo "                                    <button type=\"button\" class=\"me-1 btn btn-danger btn-lg rounded-0 w-100\" disabled=\"disabled\">";
  1329.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  1330.             echo "</button>
  1331.                                 ";
  1332.         }
  1333.         // line 822
  1334.         echo "                                ";
  1335.         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.'822$this->source); })()), "option_favorite_product", [], "any"falsefalsetrue822)) {
  1336.             // line 823
  1337.             echo "                                    ";
  1338.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'823$this->source); })()) == false)) {
  1339.                 // line 824
  1340.                 echo "                                        <a href=\"javascript:void(0);\" onclick=\"document.forms.formFavorite.submit();\" class=\"ms-1 btn btn-dark btn-lg rounded-0 w-100\">";
  1341.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1342.                 echo "</a>
  1343.                                     ";
  1344.             } else {
  1345.                 // line 826
  1346.                 echo "                                        <button type=\"button\" id=\"favorite\" class=\"ms-1 btn btn-dark btn-lg rounded-0 w-100\" disabled=\"disabled\">";
  1347.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入り登録済"), "html"nulltrue);
  1348.                 echo "</button>
  1349.                                     ";
  1350.             }
  1351.             // line 828
  1352.             echo "                                ";
  1353.         }
  1354.         // line 829
  1355.         echo "                            </div>
  1356.                             ";
  1357.         // line 830
  1358.         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'830$this->source); })()), 830$this->source), 'rest');
  1359.         echo "
  1360.                         </form>
  1361.                         ";
  1362.         // line 833
  1363.         echo "                        <form action=\"";
  1364.         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, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'833$this->source); })()), "id", [], "any"falsefalsetrue833)]), "html"nulltrue);
  1365.         echo "\" method=\"post\" id=\"formFavorite\" name=\"formFavorite\"></form>
  1366. ";
  1367.         // line 835
  1368.         echo "                        <div class=\"ec-modal\">
  1369.                             <div class=\"ec-modal-overlay\">
  1370.                                 <div class=\"ec-modal-wrap\">
  1371.                                     <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  1372.         // line 838
  1373.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  1374.         echo "\" alt=\"\"/></span></span>
  1375.                                     <div id=\"ec-modal-header\" class=\"text-center\">";
  1376.         // line 839
  1377.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  1378.         echo "</div>
  1379.                                     <div class=\"ec-modal-box\">
  1380.                                         <div class=\"ec-role\">
  1381.                                             <span class=\"btn btn-dark btn-lg me-2 mb-3 inlineBtn--cancel\">";
  1382.         // line 842
  1383.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  1384.         echo "</span>
  1385.                                             <a href=\"";
  1386.         // line 843
  1387.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  1388.         echo "\" class=\"btn btn-danger btn-lg mb-3\"><i class=\"icon-shopping_cart\"></i>";
  1389.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  1390.         echo "</a>
  1391.                                         </div>
  1392.                                     </div>
  1393.                                 </div>
  1394.                             </div>
  1395.                         </div>
  1396. ";
  1397.         // line 850
  1398.         echo "                        <div class=\"_bg-gray p-3 mt-4\">
  1399.                             ";
  1400.         // line 851
  1401.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'851$this->source); })()) == 7)) {
  1402.             // line 852
  1403.             echo "                                <ul class=\"list-unstyled mb-0\">
  1404.                                     <li>※価格は【印刷代込み(税込)】です。</li>
  1405.                                     <li>※パッケージは予告なく変更になる場合がございます。</li>
  1406.                                     <li>※3球単位で 1 デザイン印刷可能です。</li>
  1407.                                 </ul>
  1408.                             ";
  1409.         } elseif ((        // line 857
  1410. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'857$this->source); })()) == 8)) {
  1411.             // line 858
  1412.             echo "                            ";
  1413.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'858$this->source); })()) == 9)) {
  1414.             // line 859
  1415.             echo "                                <ul class=\"list-unstyled mb-0\">
  1416.                                     <li>※3球単位で 1 デザイン印刷可能です。</li>
  1417.                                 </ul>
  1418.                             ";
  1419.         } elseif ((        // line 862
  1420. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'862$this->source); })()) == 10)) {
  1421.             // line 863
  1422.             echo "                            ";
  1423.         }
  1424.         // line 864
  1425.         echo "                        </div>
  1426.                     </div>
  1427.                 </div>
  1428.                 <div class=\"me-2 d-block d-lg-none\">
  1429.                     <a href=\"\" class=\"btn btn-outline-dark btn-lg w-100\" data-bs-toggle=\"modal\" data-bs-target=\"#filterModal\">別の商品を見る</a>
  1430.                 </div>
  1431.                 
  1432.                 <hr class=\"my-5\">
  1433. ";
  1434.         // line 874
  1435.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'874$this->source); })()), "freearea", [], "any"falsefalsetrue874)) {
  1436.             // line 875
  1437.             echo "                <div class=\"ec-productRole__description\">";
  1438.             echo twig_nl2br($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'875$this->source); })()), "freearea", [], "any"falsefalsetrue875), 875$this->source));
  1439.             echo "</div>
  1440. ";
  1441.         }
  1442.         // line 877
  1443.         echo "
  1444. ";
  1445.         // line 890
  1446.         echo "                ";
  1447.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'890$this->source); })()) == 7)) {
  1448.             // line 891
  1449.             echo "                    ";
  1450.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Block/product_detail.twig");
  1451.             // line 892
  1452.             echo "                ";
  1453.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'892$this->source); })()) == 8)) {
  1454.             // line 893
  1455.             echo "                ";
  1456.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'893$this->source); })()) == 9)) {
  1457.             // line 894
  1458.             echo "                    ";
  1459.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Block/product_detail.twig");
  1460.             // line 895
  1461.             echo "                ";
  1462.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'895$this->source); })()) == 10)) {
  1463.             // line 896
  1464.             echo "                ";
  1465.         }
  1466.         // line 897
  1467.         echo "                <form name=\"formSelSP2\" id=\"formSelSP2\" method=\"get\" action=\"";
  1468.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  1469.         echo "\">
  1470.                     <input type=\"hidden\" name=\"mode\">
  1471.                     ";
  1472.         // line 899
  1473.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'899$this->source); })()) == 7)) {
  1474.             // line 900
  1475.             echo "                    <input type=\"hidden\" name=\"category_id\" value=\"7\">
  1476.                     ";
  1477.         } elseif ((        // line 901
  1478. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'901$this->source); })()) == 8)) {
  1479.             // line 902
  1480.             echo "                    ";
  1481.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'902$this->source); })()) == 9)) {
  1482.             // line 903
  1483.             echo "                    <input type=\"hidden\" name=\"category_id\" value=\"9\">
  1484.                     ";
  1485.         } elseif ((        // line 904
  1486. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'904$this->source); })()) == 10)) {
  1487.             // line 905
  1488.             echo "                    ";
  1489.         }
  1490.         // line 906
  1491.         echo "                    <input type=\"hidden\" name=\"name\">
  1492.                     <input type=\"hidden\" name=\"pageno\" value=\"1\">
  1493.                     <input type=\"hidden\" name=\"disp_number\" value=\"21\">
  1494.                     <input type=\"hidden\" name=\"orderby\" value=\"2\">
  1495.                     ";
  1496.         // line 910
  1497.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'910$this->source); })()) == 7)) {
  1498.             // line 911
  1499.             echo "                    <input type=\"hidden\" id=\"ball-type\" name=\"ball-type\">
  1500.                     <input type=\"hidden\" id=\"ball-nums\" name=\"ball-nums\">
  1501.                     <input type=\"hidden\" id=\"ball-price\" name=\"ball-price\">
  1502.                     ";
  1503.         } elseif ((        // line 914
  1504. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'914$this->source); })()) == 8)) {
  1505.             // line 915
  1506.             echo "                    ";
  1507.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'915$this->source); })()) == 9)) {
  1508.             // line 916
  1509.             echo "                    <input type=\"hidden\" id=\"design-cate\" name=\"design-cate\">
  1510.                     ";
  1511.         } elseif ((        // line 917
  1512. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'917$this->source); })()) == 10)) {
  1513.             // line 918
  1514.             echo "                    ";
  1515.         }
  1516.         // line 919
  1517.         echo "                </form>
  1518.                 <div class=\"modalBoxAlert\" id=\"alert01\">
  1519.                     <div class=\"modalInnerAlert\">
  1520.                         絞り込みたい項目がある場合のみチェックしてください。
  1521.                     </div>
  1522.                 </div>
  1523.             </main>
  1524.         </div>
  1525.     </div>
  1526.     <!-- modal -->
  1527.     <div class=\"modal fade\" id=\"filterModal\" tabindex=\"-1\" aria-labelledby=\"filterModalLabel\" aria-hidden=\"true\">
  1528.         <div class=\"modal-dialog\">
  1529.             <div class=\"modal-content\">
  1530.                 <div class=\"modal-header\">
  1531.                     <h5 class=\"modal-title\" id=\"filterModalLabel\">絞り込み</h5>
  1532.                     <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>
  1533.                 </div>
  1534.                 <form name=\"formSelSP\" id=\"formSelSP\">
  1535.                 <div class=\"modal-body\">
  1536.                     <!-- 絞り込みフォームの内容をここに追加 -->
  1537.                     ";
  1538.         // line 940
  1539.         if (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'940$this->source); })()) == 7)) {
  1540.             // line 941
  1541.             echo "                    <div class=\"aside-filter _modal\">
  1542.                         <div class=\"title\">
  1543.                             ボールの種類から選ぶ
  1544.                         </div>
  1545.                         <ul class=\"list-unstyled mb-0 list\">
  1546.                             <li>
  1547.                                 <label>
  1548.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"14\">
  1549.                                     持ち込みボール
  1550.                                 </label>
  1551.                             </li>
  1552.                             <li>
  1553.                                 <label>
  1554.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"11\">
  1555.                                     スリクソン
  1556.                                 </label>
  1557.                             </li>
  1558.                             <li>
  1559.                                 <label>
  1560.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"12\">
  1561.                                     ゼクシオ
  1562.                                 </label>
  1563.                             </li>
  1564.                             <li>
  1565.                                 <label>
  1566.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"13\">
  1567.                                     ツアースペシャル
  1568.                                 </label>
  1569.                             </li>
  1570.                         </ul>
  1571.                         <div class=\"title\">
  1572.                             ボールの球数から選ぶ
  1573.                         </div>
  1574.                         <ul class=\"list-unstyled mb-0 list\">
  1575.                             <li>
  1576.                                 <label>
  1577.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"8,13\">
  1578.                                     3球
  1579.                                 </label>
  1580.                             </li>
  1581.                             <li>
  1582.                                 <label>
  1583.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"11,14\">
  1584.                                     6球
  1585.                                 </label>
  1586.                             </li>
  1587.                             <li>
  1588.                                 <label>
  1589.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"12,15\">
  1590.                                     12球
  1591.                                 </label>
  1592.                             </li>
  1593.                         </ul>
  1594.                         <div class=\"title\">
  1595.                             価格で選ぶ
  1596.                         </div>
  1597.                         <ul class=\"list-unstyled mb-0 list\">
  1598.                             <li>
  1599.                                 <label>
  1600.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"1\">
  1601.                                     ~2,999円
  1602.                                 </label>
  1603.                             </li>
  1604.                             <li>
  1605.                                 <label>
  1606.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"2\">
  1607.                                     3,000円~4,999円
  1608.                                 </label>
  1609.                             </li>
  1610.                             <li>
  1611.                                 <label>
  1612.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"3\">
  1613.                                     5,000円~9,999円
  1614.                                 </label>
  1615.                             </li>
  1616.                             <li>
  1617.                                 <label>
  1618.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"4\">
  1619.                                     10,000円以上
  1620.                                 </label>
  1621.                             </li>
  1622.                         </ul>
  1623.                     </div>
  1624.                     ";
  1625.         } elseif ((        // line 1024
  1626. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'1024$this->source); })()) == 8)) {
  1627.             // line 1025
  1628.             echo "                    ";
  1629.         } elseif (((isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'1025$this->source); })()) == 9)) {
  1630.             // line 1026
  1631.             echo "                    <div class=\"aside-filter _modal\">
  1632.                         <div class=\"title\">
  1633.                         カテゴリから選ぶ
  1634.                         </div>
  1635.                         <ul class=\"list-unstyled mb-0 list\">
  1636.                             <li>
  1637.                                 <label>
  1638.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"15\">
  1639.                                     誕生日祝い
  1640.                                 </label>
  1641.                             </li>
  1642.                             <li>
  1643.                                 <label>
  1644.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"16\">
  1645.                                     定年退職祝い
  1646.                                 </label>
  1647.                             </li>
  1648.                             <li>
  1649.                                 <label>
  1650.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"17\">
  1651.                                     還暦祝い
  1652.                                 </label>
  1653.                             </li>
  1654.                             <li>
  1655.                                 <label>
  1656.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"18\">
  1657.                                     コンペ景品
  1658.                                 </label>
  1659.                             </li>
  1660.                             <li>
  1661.                                 <label>
  1662.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"19\">
  1663.                                     父の日祝い
  1664.                                 </label>
  1665.                             </li>
  1666.                             <li>
  1667.                                 <label>
  1668.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"20\">
  1669.                                     母の日祝い
  1670.                                 </label>
  1671.                             </li>
  1672.                             <li>
  1673.                                 <label>
  1674.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"21\">
  1675.                                     GOLFPRINT オリジナル
  1676.                                 </label>
  1677.                             </li>
  1678.                         </ul>
  1679.                     </div>
  1680.                     ";
  1681.         } elseif ((        // line 1075
  1682. (isset($context["rootCategoryId"]) || array_key_exists("rootCategoryId"$context) ? $context["rootCategoryId"] : (function () { throw new RuntimeError('Variable "rootCategoryId" does not exist.'1075$this->source); })()) == 10)) {
  1683.             // line 1076
  1684.             echo "                    ";
  1685.         }
  1686.         // line 1077
  1687.         echo "                </div>
  1688.                 <div class=\"modal-footer\">
  1689.                     <button type=\"button\" class=\"btn btn-outline-dark\" data-bs-dismiss=\"modal\">閉じる</button>
  1690.                     <button type=\"button\" class=\"btn btn-outline-dark\" onclick=\"location.href='";
  1691.         // line 1080
  1692.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'1080$this->source); })()), "id", [], "any"falsefalsetrue1080)]), "html"nulltrue);
  1693.         echo "'\">クリア</button>
  1694.                     <button type=\"button\" onclick=\"setValSP()\" class=\"btn btn-primary\">絞り込む</button>
  1695.                 </div>
  1696.                 </form>
  1697.             </div>
  1698.         </div>
  1699.     </div>
  1700. ";
  1701.         
  1702.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1703.         
  1704.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1705.     }
  1706.     public function getTemplateName()
  1707.     {
  1708.         return "Product/detail.twig";
  1709.     }
  1710.     public function isTraitable()
  1711.     {
  1712.         return false;
  1713.     }
  1714.     public function getDebugInfo()
  1715.     {
  1716.         return array (  1760 => 1080,  1755 => 1077,  1752 => 1076,  1750 => 1075,  1699 => 1026,  1696 => 1025,  1694 => 1024,  1609 => 941,  1607 => 940,  1584 => 919,  1581 => 918,  1579 => 917,  1576 => 916,  1573 => 915,  1571 => 914,  1566 => 911,  1564 => 910,  1558 => 906,  1555 => 905,  1553 => 904,  1550 => 903,  1547 => 902,  1545 => 901,  1542 => 900,  1540 => 899,  1534 => 897,  1531 => 896,  1528 => 895,  1525 => 894,  1522 => 893,  1519 => 892,  1516 => 891,  1513 => 890,  1510 => 877,  1504 => 875,  1502 => 874,  1490 => 864,  1487 => 863,  1485 => 862,  1480 => 859,  1477 => 858,  1475 => 857,  1468 => 852,  1466 => 851,  1463 => 850,  1452 => 843,  1448 => 842,  1442 => 839,  1438 => 838,  1433 => 835,  1428 => 833,  1423 => 830,  1420 => 829,  1417 => 828,  1411 => 826,  1405 => 824,  1402 => 823,  1399 => 822,  1393 => 820,  1387 => 818,  1385 => 817,  1382 => 816,  1379 => 815,  1376 => 814,  1371 => 812,  1366 => 811,  1363 => 810,  1358 => 808,  1353 => 807,  1351 => 806,  1347 => 805,  1342 => 804,  1339 => 803,  1337 => 802,  1328 => 800,  1324 => 799,  1321 => 798,  1318 => 797,  1316 => 796,  1313 => 795,  1306 => 791,  1302 => 790,  1297 => 788,  1294 => 787,  1291 => 786,  1285 => 783,  1281 => 782,  1278 => 781,  1276 => 780,  1271 => 778,  1267 => 777,  1264 => 776,  1261 => 775,  1259 => 774,  1250 => 772,  1246 => 771,  1242 => 769,  1240 => 768,  1236 => 767,  1233 => 766,  1230 => 765,  1224 => 763,  1221 => 762,  1213 => 760,  1207 => 758,  1205 => 757,  1202 => 756,  1199 => 755,  1193 => 754,  1189 => 752,  1187 => 751,  1184 => 750,  1182 => 749,  1179 => 748,  1177 => 747,  1174 => 746,  1172 => 745,  1169 => 744,  1167 => 743,  1164 => 742,  1161 => 741,  1157 => 740,  1152 => 738,  1146 => 734,  1127 => 731,  1124 => 730,  1107 => 729,  1099 => 723,  1090 => 721,  1082 => 719,  1077 => 718,  1068 => 711,  1065 => 710,  1063 => 709,  1058 => 708,  1055 => 707,  1053 => 706,  1048 => 705,  1046 => 704,  1041 => 701,  1038 => 700,  1036 => 699,  1032 => 698,  1027 => 697,  1024 => 696,  1022 => 695,  1018 => 694,  1013 => 693,  1011 => 692,  1007 => 691,  1001 => 687,  995 => 686,  992 => 685,  985 => 684,  982 => 683,  976 => 682,  973 => 681,  970 => 680,  965 => 679,  962 => 678,  960 => 677,  950 => 676,  899 => 633,  896 => 632,  894 => 631,  827 => 566,  824 => 565,  822 => 564,  643 => 387,  641 => 386,  612 => 360,  608 => 359,  604 => 358,  600 => 357,  596 => 355,  590 => 353,  588 => 352,  583 => 351,  580 => 350,  570 => 348,  556 => 346,  548 => 345,  530 => 344,  525 => 342,  502 => 322,  492 => 315,  462 => 288,  457 => 285,  448 => 279,  444 => 277,  442 => 276,  439 => 275,  430 => 269,  426 => 267,  424 => 266,  358 => 202,  355 => 200,  347 => 198,  345 => 197,  340 => 195,  337 => 194,  335 => 193,  332 => 192,  329 => 191,  326 => 190,  324 => 189,  321 => 188,  316 => 186,  313 => 185,  305 => 183,  303 => 182,  298 => 180,  295 => 179,  293 => 178,  273 => 160,  270 => 159,  256 => 147,  253 => 146,  247 => 145,  244 => 144,  237 => 143,  234 => 142,  228 => 141,  225 => 140,  222 => 139,  217 => 138,  214 => 137,  212 => 136,  202 => 135,  75 => 16,  65 => 15,  54 => 11,  52 => 13,  39 => 11,);
  1717.     }
  1718.     public function getSourceContext()
  1719.     {
  1720.         return new Source("{#
  1721. This file is part of EC-CUBE
  1722. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1723. http://www.ec-cube.co.jp/
  1724. For the full copyright and license information, please view the LICENSE
  1725. file that was distributed with this source code.
  1726. #}
  1727. {% extends 'default_frame.twig' %}
  1728. {% set body_class = 'product_page' %}
  1729. {% block stylesheet %}
  1730.     <style>
  1731.         .slick-slider {
  1732.             margin-bottom: 30px;
  1733.         }
  1734.         .slick-dots {
  1735.             position: absolute;
  1736.             bottom: -45px;
  1737.             display: block;
  1738.             width: 100%;
  1739.             padding: 0;
  1740.             list-style: none;
  1741.             text-align: center;
  1742.         }
  1743.         .slick-dots li {
  1744.             position: relative;
  1745.             display: inline-block;
  1746.             width: 20px;
  1747.             height: 20px;
  1748.             margin: 0 5px;
  1749.             padding: 0;
  1750.             cursor: pointer;
  1751.         }
  1752.         .slick-dots li button {
  1753.             font-size: 0;
  1754.             line-height: 0;
  1755.             display: block;
  1756.             width: 20px;
  1757.             height: 20px;
  1758.             padding: 5px;
  1759.             cursor: pointer;
  1760.             color: transparent;
  1761.             border: 0;
  1762.             outline: none;
  1763.             background: transparent;
  1764.         }
  1765.         .slick-dots li button:hover,
  1766.         .slick-dots li button:focus {
  1767.             outline: none;
  1768.         }
  1769.         .slick-dots li button:hover:before,
  1770.         .slick-dots li button:focus:before {
  1771.             opacity: 1;
  1772.         }
  1773.         .slick-dots li button:before {
  1774.             content: \" \";
  1775.             line-height: 20px;
  1776.             position: absolute;
  1777.             top: 0;
  1778.             left: 0;
  1779.             width: 12px;
  1780.             height: 12px;
  1781.             text-align: center;
  1782.             opacity: .25;
  1783.             background-color: black;
  1784.             border-radius: 50%;
  1785.         }
  1786.         .slick-dots li.slick-active button:before {
  1787.             opacity: .75;
  1788.             background-color: black;
  1789.         }
  1790.         .slick-dots li button.thumbnail img {
  1791.             width: 0;
  1792.             height: 0;
  1793.         }
  1794.     </style>
  1795.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css\" />
  1796.     <link rel=\"stylesheet\" href=\"/html/template/default/assets/css/swiper-customize.min.css\">
  1797.     <style>
  1798.         #modalWrapAlert {
  1799.             display: none;
  1800.             background: 0 0;
  1801.             width: 100%;
  1802.             height: 100%;
  1803.             position: fixed;
  1804.             top: 0;
  1805.             left: 0;
  1806.             z-index: 100;
  1807.             overflow: hidden
  1808.         }
  1809.         .modalBoxAlert {
  1810.             position: fixed;
  1811.             width: 85%;
  1812.             max-width: 420px;
  1813.             height: 0;
  1814.             top: 0;
  1815.             bottom: 0;
  1816.             left: 0;
  1817.             right: 0;
  1818.             margin: auto;
  1819.             overflow: hidden;
  1820.             opacity: 1;
  1821.             display: none;
  1822.             border-radius: 3px;
  1823.             z-index: 1000
  1824.         }
  1825.         .modalInnerAlert {
  1826.             padding: 10px;
  1827.             text-align: center;
  1828.             box-sizing: border-box;
  1829.             background: rgba(0, 0, 0, .7);
  1830.             color: #fff
  1831.         }
  1832.     </style>
  1833. {% endblock %}
  1834. {% block javascript %}
  1835.     {# この商品の最上位カテゴリidを取得 #}
  1836.     {% set rootCategoryId = null %}
  1837.     {% for ProductCategory in Product.ProductCategories %}
  1838.         {% set Category = ProductCategory.Category %}
  1839.         {% set rootCategory = Category %}
  1840.         {% for i in 1..10 if rootCategory.Parent %}
  1841.             {% set rootCategory = rootCategory.Parent %}
  1842.         {% endfor %}
  1843.         {% set rootCategoryId = rootCategory.id %}
  1844.     {% endfor %}
  1845.     <script>
  1846.         eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1847.         // 規格2に選択肢を割り当てる。
  1848.         function fnSetClassCategories(form, classcat_id2_selected) {
  1849.             var \$form = \$(form);
  1850.             var product_id = \$form.find('input[name=product_id]').val();
  1851.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1852.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1853.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1854.         }
  1855. {# ▼▼▼GOLFPRINT:▼▼▼ #}
  1856.     {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  1857.         window.addEventListener('load', () => {
  1858.             const selectElement = document.getElementById('classcategory_id1');
  1859.             if (selectElement) {
  1860.                 selectElement.selectedIndex = 1;\t// 2番目のoptionを選択
  1861.                 // 規格1の選択後に規格2の選択肢を設定
  1862.                 fnSetClassCategories(\$('#form1'), null);
  1863.                 // イベント発火処理(ネイティブ+jQuery)
  1864.                 const triggerChangeEvents = () => {
  1865.                     // 規格1の変更イベントを発火
  1866.                     \$(selectElement).trigger('change');
  1867.                 };
  1868.                 // 規格1の変更イベントを発火(300msの遅延を追加)
  1869.                 setTimeout(triggerChangeEvents, 300);
  1870.             }
  1871.             {% if form.classcategory_id2 is defined %}
  1872.             fnSetClassCategories(
  1873.                 \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1874.             );
  1875.             {% elseif form.classcategory_id1 is defined %}
  1876.             eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1877.             {% else %}
  1878.             // 規格が存在しない場合の処理
  1879.             eccube.checkStock(\$('#form1'), {{ Product.id }}, null, null);
  1880.             {% endif %}
  1881.         });
  1882.     {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  1883.     {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  1884.     {% elseif rootCategoryId == 10 %}{# ラッピング #}
  1885.         {% if form.classcategory_id2 is defined %}
  1886.         fnSetClassCategories(
  1887.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1888.         );
  1889.         {% elseif form.classcategory_id1 is defined %}
  1890.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1891.         {% endif %}
  1892.     {% endif %}
  1893. {# ▲▲▲GOLFPRINT:▲▲▲ #}
  1894.     </script>
  1895.     <script>
  1896.         \$(function() {
  1897.             // bfcache無効化
  1898.             \$(window).bind('pageshow', function(event) {
  1899.                 if (event.originalEvent.persisted) {
  1900.                     location.reload(true);
  1901.                 }
  1902.             });
  1903.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1904.             // img タグに width, height が付与されている.
  1905.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1906.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1907.             \$('.ec-grid2__cell').hide();
  1908.             var removeSize = function () {
  1909.                 \$('.slide-item').height('');
  1910.                 \$('.slide-item img')
  1911.                     .removeAttr('width')
  1912.                     .removeAttr('height')
  1913.                     .removeAttr('style');
  1914.             };
  1915.             var slickInitial = function(slick) {
  1916.                 \$('.ec-grid2__cell').fadeIn(1500);
  1917.                 var baseHeight = \$(slick.target).height();
  1918.                 var baseWidth = \$(slick.target).width();
  1919.                 var rate = baseWidth / baseHeight;
  1920.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1921.                 // transform を使用することでCLSの影響を受けないようにする
  1922.                 \$('.slide-item img')
  1923.                     .css(
  1924.                         {
  1925.                             'transform-origin': 'top left',
  1926.                             'transform': 'scaleY(' + rate + ')',
  1927.                             'transition': 'transform .1s'
  1928.                         }
  1929.                     );
  1930.                 // 正しいサイズに近くなったら属性を解除する
  1931.                 setTimeout(removeSize, 500);
  1932.             };
  1933.             \$('.item_visual').on('init', slickInitial);
  1934.             // リサイズ時は CLS の影響を受けないため属性を解除する
  1935.             \$(window).resize(removeSize);
  1936.             \$('.item_visual').slick({
  1937.                 dots: false,
  1938.                 arrows: false,
  1939.                 responsive: [{
  1940.                     breakpoint: 768,
  1941.                     settings: {
  1942.                         dots: true
  1943.                     }
  1944.                 }]
  1945.             });
  1946.             \$('.slideThumb').on('click', function() {
  1947.                 var index = \$(this).attr('data-index');
  1948.                 \$('.item_visual').slick('slickGoTo', index, false);
  1949.             })
  1950.         });
  1951.     </script>
  1952.     <script>
  1953.         \$(function() {
  1954.             \$('.add-cart').on('click', function(event) {
  1955.                 {% if form.classcategory_id1 is defined %}
  1956.                 // 規格1フォームの必須チェック
  1957.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1958.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1959.                     return true;
  1960.                 } else {
  1961.                     \$('#classcategory_id1')[0].setCustomValidity('');
  1962.                 }
  1963.                 {% endif %}
  1964.                 {% if form.classcategory_id2 is defined %}
  1965.                 // 規格2フォームの必須チェック
  1966.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1967.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1968.                     return true;
  1969.                 } else {
  1970.                     \$('#classcategory_id2')[0].setCustomValidity('');
  1971.                 }
  1972.                 {% endif %}
  1973.                 // 個数フォームのチェック
  1974.                 if (\$('#quantity').val() < 1) {
  1975.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1976.                     return true;
  1977.                 } else {
  1978.                     \$('#quantity')[0].setCustomValidity('');
  1979.                 }
  1980.                 event.preventDefault();
  1981.                 \$form = \$('#form1');
  1982.                 \$.ajax({
  1983.                     url: \$form.attr('action'),
  1984.                     type: \$form.attr('method'),
  1985.                     data: \$form.serialize(),
  1986.                     dataType: 'json',
  1987.                     beforeSend: function(xhr, settings) {
  1988.                         // Buttonを無効にする
  1989.                         \$('.add-cart').prop('disabled', true);
  1990.                     }
  1991.                 }).done(function(data) {
  1992.                     // レスポンス内のメッセージをalertで表示
  1993.                     \$.each(data.messages, function() {
  1994.                         \$('#ec-modal-header').text(this);
  1995.                     });
  1996.                     \$('.ec-modal').show()
  1997.                     // カートブロックを更新する
  1998.                     \$.ajax({
  1999.                         url: \"{{ url('block_cart') }}\",
  2000.                         type: 'GET',
  2001.                         dataType: 'html'
  2002.                     }).done(function(html) {
  2003.                         \$('.ec-headerRole__cart').html(html);
  2004.                     });
  2005.                 }).fail(function(data) {
  2006.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  2007.                 }).always(function(data) {
  2008.                     // Buttonを有効にする
  2009.                     \$('.add-cart').prop('disabled', false);
  2010.                 });
  2011.             });
  2012.         });
  2013.         \$('.ec-modal-wrap').on('click', function(e) {
  2014.             // モーダル内の処理は外側にバブリングさせない
  2015.             e.stopPropagation();
  2016.         });
  2017.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .inlineBtn--cancel').on('click', function() {
  2018.             \$('.ec-modal').hide()
  2019.         });
  2020.     </script>
  2021.     <script type=\"application/ld+json\">
  2022.     {
  2023.         \"@context\": \"https://schema.org/\",
  2024.         \"@type\": \"Product\",
  2025.         \"name\": \"{{ Product.name }}\",
  2026.         \"image\": [
  2027.             {% for img in Product.ProductImage %}
  2028.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  2029.             {% else %}
  2030.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  2031.             {% endfor %}
  2032.         ],
  2033.         \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  2034.         {% if Product.code_min %}
  2035.         \"sku\": \"{{ Product.code_min }}\",
  2036.         {% endif %}
  2037.         \"offers\": {
  2038.             \"@type\": \"Offer\",
  2039.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  2040.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  2041.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  2042.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  2043.         }
  2044.     }
  2045.     </script>
  2046.     <script src=\"https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js\"></script>
  2047.     <script>
  2048.         // swiperを生成
  2049.         var swiperMain = new Swiper('.swiper-container', {
  2050.             effect: 'fade', // フェードエフェクトを適用
  2051.             speed: 600,
  2052.             loop: true,
  2053.             pagination: {
  2054.             el: '.swiper-pagination',
  2055.             clickable: true,
  2056.             },
  2057.             navigation: { // コメントアウトまたは削除
  2058.             nextEl: '.swiper-button-next',
  2059.             prevEl: '.swiper-button-prev',
  2060.             },
  2061.         });
  2062.         // slideToメソッドを実行する関数を定義
  2063.         function slideThumb(index) {
  2064.             swiperMain.slideTo(index);
  2065.         }
  2066.     </script>
  2067.     <script>
  2068.     {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2069.         \$(function() {
  2070.             \$('.ball_type').change(function() {
  2071.                 let selCnt = 0;
  2072.                 const ballType = document.forms.formSelPC.ball_type;
  2073.                 for( let i=0; i < ballType.length; i++ ) {
  2074.                     if( ballType[i].checked ) {
  2075.                         selCnt++;
  2076.                     }
  2077.                 }
  2078.                 if( selCnt == ballType.length ) {
  2079.                     for( let i=0; i < ballType.length; i++ ) {
  2080.                         ballType[i].checked = false;
  2081.                     }
  2082.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2083.                     selAlert();
  2084.                 }
  2085.             });
  2086.             \$('.ball_nums').change(function() {
  2087.                 let selCnt = 0;
  2088.                 const ballNums = document.forms.formSelPC.ball_nums;
  2089.                 for( let i=0; i < ballNums.length; i++ ) {
  2090.                     if( ballNums[i].checked ) {
  2091.                         selCnt++;
  2092.                     }
  2093.                 }
  2094.                 if( selCnt == ballNums.length ) {
  2095.                     for( let i=0; i < ballNums.length; i++ ) {
  2096.                         ballNums[i].checked = false;
  2097.                     }
  2098.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2099.                     selAlert();
  2100.                 }
  2101.             });
  2102.             \$('.ball_price').change(function() {
  2103.                 let selCnt = 0;
  2104.                 const ballPrice = document.forms.formSelPC.ball_price;
  2105.                 for( let i=0; i < ballPrice.length; i++ ) {
  2106.                     if( ballPrice[i].checked ) {
  2107.                         selCnt++;
  2108.                     }
  2109.                 }
  2110.                 if( selCnt == ballPrice.length ) {
  2111.                     for( let i=0; i < ballPrice.length; i++ ) {
  2112.                         ballPrice[i].checked = false;
  2113.                     }
  2114.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2115.                     selAlert();
  2116.                 }
  2117.             });
  2118.             \$('.ball_type_sp').change(function() {
  2119.                 let selCnt = 0;
  2120.                 const ballType = document.forms.formSelSP.ball_type;
  2121.                 for( let i=0; i < ballType.length; i++ ) {
  2122.                     if( ballType[i].checked ) {
  2123.                         selCnt++;
  2124.                     }
  2125.                 }
  2126.                 if( selCnt == ballType.length ) {
  2127.                     for( let i=0; i < ballType.length; i++ ) {
  2128.                         ballType[i].checked = false;
  2129.                     }
  2130.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2131.                     selAlert();
  2132.                 }
  2133.             });
  2134.             \$('.ball_nums_sp').change(function() {
  2135.                 let selCnt = 0;
  2136.                 const ballNums = document.forms.formSelSP.ball_nums;
  2137.                 for( let i=0; i < ballNums.length; i++ ) {
  2138.                     if( ballNums[i].checked ) {
  2139.                         selCnt++;
  2140.                     }
  2141.                 }
  2142.                 if( selCnt == ballNums.length ) {
  2143.                     for( let i=0; i < ballNums.length; i++ ) {
  2144.                         ballNums[i].checked = false;
  2145.                     }
  2146.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2147.                     selAlert();
  2148.                 }
  2149.             });
  2150.             \$('.ball_price_sp').change(function() {
  2151.                 let selCnt = 0;
  2152.                 const ballPrice = document.forms.formSelSP.ball_price;
  2153.                 for( let i=0; i < ballPrice.length; i++ ) {
  2154.                     if( ballPrice[i].checked ) {
  2155.                         selCnt++;
  2156.                     }
  2157.                 }
  2158.                 if( selCnt == ballPrice.length ) {
  2159.                     for( let i=0; i < ballPrice.length; i++ ) {
  2160.                         ballPrice[i].checked = false;
  2161.                     }
  2162.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2163.                     selAlert();
  2164.                 }
  2165.             });
  2166.         });
  2167.         function setValPC() {
  2168.             let sels_type = '';
  2169.             const ballType = document.forms.formSelPC.ball_type;
  2170.             for( let i=0; i < ballType.length; i++ ) {
  2171.                 if( ballType[i].checked ) {
  2172.                     if( sels_type ) {
  2173.                         sels_type = sels_type + ',';
  2174.                     }
  2175.                     sels_type = sels_type + ballType[i].value;
  2176.                 }
  2177.             }
  2178.             document.forms.formSelPC2.elements['ball-type'].value = sels_type;
  2179.             let sels_nums = '';
  2180.             const ballNums = document.forms.formSelPC.ball_nums;
  2181.             for( let i=0; i < ballNums.length; i++ ) {
  2182.                 if( ballNums[i].checked ) {
  2183.                     if( sels_nums ) {
  2184.                         sels_nums = sels_nums + ',';
  2185.                     }
  2186.                     sels_nums = sels_nums + ballNums[i].value;
  2187.                 }
  2188.             }
  2189.             document.forms.formSelPC2.elements['ball-nums'].value = sels_nums;
  2190.             let sels_price = '';
  2191.             const ballPrice = document.forms.formSelPC.ball_price;
  2192.             for( let i=0; i < ballPrice.length; i++ ) {
  2193.                 if( ballPrice[i].checked ) {
  2194.                     if( sels_price ) {
  2195.                         sels_price = sels_price + ',';
  2196.                     }
  2197.                     sels_price = sels_price + ballPrice[i].value;
  2198.                 }
  2199.             }
  2200.             document.forms.formSelPC2.elements['ball-price'].value = sels_price;
  2201.             document.forms.formSelPC2.submit();
  2202.         }
  2203.         function setValSP() {
  2204.             let sels_type = '';
  2205.             const ballType = document.forms.formSelSP.ball_type;
  2206.             for( let i=0; i < ballType.length; i++ ) {
  2207.                 if( ballType[i].checked ) {
  2208.                     if( sels_type ) {
  2209.                         sels_type = sels_type + ',';
  2210.                     }
  2211.                     sels_type = sels_type + ballType[i].value;
  2212.                 }
  2213.             }
  2214.             document.forms.formSelSP2.elements['ball-type'].value = sels_type;
  2215.             let sels_nums = '';
  2216.             const ballNums = document.forms.formSelSP.ball_nums;
  2217.             for( let i=0; i < ballNums.length; i++ ) {
  2218.                 if( ballNums[i].checked ) {
  2219.                     if( sels_nums ) {
  2220.                         sels_nums = sels_nums + ',';
  2221.                     }
  2222.                     sels_nums = sels_nums + ballNums[i].value;
  2223.                 }
  2224.             }
  2225.             document.forms.formSelSP2.elements['ball-nums'].value = sels_nums;
  2226.             let sels_price = '';
  2227.             const ballPrice = document.forms.formSelSP.ball_price;
  2228.             for( let i=0; i < ballPrice.length; i++ ) {
  2229.                 if( ballPrice[i].checked ) {
  2230.                     if( sels_price ) {
  2231.                         sels_price = sels_price + ',';
  2232.                     }
  2233.                     sels_price = sels_price + ballPrice[i].value;
  2234.                 }
  2235.             }
  2236.             document.forms.formSelSP2.elements['ball-price'].value = sels_price;
  2237.             document.forms.formSelSP2.submit();
  2238.         }
  2239.     {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2240.     {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2241.         \$(function() {
  2242.             \$('.design_cate').change(function() {
  2243.                 let selCnt = 0;
  2244.                 const designCate = document.forms.formSelPC.design_cate;
  2245.                 for( let i=0; i < designCate.length; i++ ) {
  2246.                     if( designCate[i].checked ) {
  2247.                         selCnt++;
  2248.                     }
  2249.                 }
  2250.                 if( selCnt == designCate.length ) {
  2251.                     for( let i=0; i < designCate.length; i++ ) {
  2252.                         designCate[i].checked = false;
  2253.                     }
  2254.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2255.                     selAlert();
  2256.                 }
  2257.             });
  2258.             \$('.design_cate_sp').change(function() {
  2259.                 let selCnt = 0;
  2260.                 const designCate = document.forms.formSelSP.design_cate;
  2261.                 for( let i=0; i < designCate.length; i++ ) {
  2262.                     if( designCate[i].checked ) {
  2263.                         selCnt++;
  2264.                     }
  2265.                 }
  2266.                 if( selCnt == designCate.length ) {
  2267.                     for( let i=0; i < designCate.length; i++ ) {
  2268.                         designCate[i].checked = false;
  2269.                     }
  2270.                     //alert('絞り込みたい項目がある場合のみチェックしてください。');
  2271.                     selAlert();
  2272.                 }
  2273.             });
  2274.         });
  2275.         function setValPC() {
  2276.             let sels_design = '';
  2277.             const designCate = document.forms.formSelPC.design_cate;
  2278.             for( let i=0; i < designCate.length; i++ ) {
  2279.                 if( designCate[i].checked ) {
  2280.                     if( sels_design ) {
  2281.                         sels_design = sels_design + ',';
  2282.                     }
  2283.                     sels_design = sels_design + designCate[i].value;
  2284.                 }
  2285.             }
  2286.             document.forms.formSelPC2.elements['design-cate'].value = sels_design;
  2287.             document.forms.formSelPC2.submit();
  2288.         }
  2289.         function setValSP() {
  2290.             let sels_design = '';
  2291.             const designCate = document.forms.formSelSP.design_cate;
  2292.             for( let i=0; i < designCate.length; i++ ) {
  2293.                 if( designCate[i].checked ) {
  2294.                     if( sels_design ) {
  2295.                         sels_design = sels_design + ',';
  2296.                     }
  2297.                     sels_design = sels_design + designCate[i].value;
  2298.                 }
  2299.             }
  2300.             document.forms.formSelSP2.elements['design-cate'].value = sels_design;
  2301.             document.forms.formSelSP2.submit();
  2302.         }
  2303.     {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2304.     {% endif %}
  2305.     </script>
  2306.     <script>
  2307.         function selAlert() {
  2308.             var modalThis = \$('body').find('#alert01');
  2309.             //bodyの最下にwrapを作る 
  2310.             \$('body').append('<div id=\"modalWrapAlert\" />');
  2311.             var wrap = \$('#modalWrapAlert');
  2312.             wrap.fadeIn('200');
  2313.             modalThis.fadeIn('200');
  2314.             //モーダルの高さを取ってくる 
  2315.             function mdlHeight() {
  2316.                 var wh = \$(window).innerHeight();
  2317.                 var attH = modalThis.find('.modalInnerAlert').innerHeight();
  2318.                 modalThis.css({
  2319.                     height: attH
  2320.                 });
  2321.             }
  2322.             mdlHeight();
  2323.             \$(window).on('resize', function () {
  2324.                 mdlHeight();
  2325.             });
  2326.             function clickAction() {
  2327.                 modalThis.fadeOut('200');
  2328.                 wrap.fadeOut('200', function () {
  2329.                     wrap.remove();
  2330.                 });
  2331.             }
  2332.             //wrapクリックされたら 
  2333.             wrap.on('click', function () {
  2334.                 clickAction();
  2335.                 return false;
  2336.             });
  2337.             //2秒後に消える 
  2338.             setTimeout(clickAction, 2000);
  2339.             return false;
  2340.         }
  2341.     </script>
  2342. {% endblock %}
  2343. {% block main %}
  2344.     {# この商品の最上位カテゴリidを取得 #}
  2345.     {% set rootCategoryId = null %}
  2346.     {% for ProductCategory in Product.ProductCategories %}
  2347.         {% set Category = ProductCategory.Category %}
  2348.         {% set rootCategory = Category %}
  2349.         {% for i in 1..10 if rootCategory.Parent %}
  2350.             {% set rootCategory = rootCategory.Parent %}
  2351.         {% endfor %}
  2352.         {% set rootCategoryId = rootCategory.id %}
  2353.     {% endfor %}
  2354.     <div class=\"container\">
  2355.         <!-- パンくずリスト -->
  2356.         <nav aria-label=\"breadcrumb\" class=\"my-3\">
  2357.             <ol class=\"breadcrumb\">
  2358.                 <li class=\"breadcrumb-item\"><a href=\"{{ url('homepage') }}\">ホーム</a></li>
  2359.                 {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2360.                     <li class=\"breadcrumb-item\"><a href=\"{{ url('product_list', {'category_id': 7}) }}\">ボールを選ぶ</a></li>
  2361.                     <li class=\"breadcrumb-item active\" aria-current=\"page\">{{ Product.name }}</li>
  2362.                 {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2363.                 {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2364.                     <li class=\"breadcrumb-item\"><a href=\"{{ url('product_list', {'category_id': 9}) }}\">デザインを選ぶ</a></li>
  2365.                     <li class=\"breadcrumb-item active\" aria-current=\"page\">{{ Product.name }}</li>
  2366.                 {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2367.                 {% endif %}
  2368.             </ol>
  2369.         </nav>
  2370.         <div class=\"layout-2colmun\">
  2371.             {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2372.                 {{ include('Product/aside_ball.twig') }}
  2373.             {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2374.             {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2375.                 {{ include('Product/aside_design.twig') }}
  2376.             {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2377.             {% endif %}
  2378.             <main class=\"main\">
  2379.                 <div class=\"row mb-5\">
  2380.                     <div class=\"col-md-6\">
  2381.                         <div id=\"product-detail\">
  2382.                             <!-- main -->
  2383.                             <div class=\"swiper-container\">
  2384.                                 <div class=\"swiper-wrapper\">
  2385.                                     {% for ProductImage in Product.ProductImage %}
  2386.                                         <div class=\"swiper-slide\" style=\"background-image: url('{{ asset(ProductImage, 'save_image') }}'); background-size: contain; background-repeat: no-repeat;\"></div>
  2387.                                     {% else %}
  2388.                                         <div class=\"swiper-slide\" style=\"background-image: url('{{ asset(''|no_image_product, 'save_image') }}'); background-size: contain; background-repeat: no-repeat;\"></div>
  2389.                                     {% endfor %}
  2390.                                 </div>
  2391.                                 <div class=\"swiper-button-prev\"></div>
  2392.                                 <div class=\"swiper-button-next\"></div>
  2393.                             </div>
  2394.                             <!-- thumbnail -->
  2395.                             <ul class=\"thumb-list\">
  2396.                                 {% for ProductImage in Product.ProductImage %}
  2397.                                     <li class=\"thumb-item\">
  2398.                                         <a class=\"thumb-link\" href=\"javascript:void(0);\" onclick=\"slideThumb({{ loop.index0 }})\" style=\"background-image: url('{{ asset(ProductImage, 'save_image') }}')\"></a>
  2399.                                     </li>
  2400.                                 {% endfor %}
  2401.                             </ul>
  2402.                         </div>
  2403.                     </div>
  2404.                     <div class=\"col-md-6\">
  2405.                         <h1 class=\"fw-bold _fs-5 mb-3\">{{ Product.name }}</h1>
  2406.                         <div class=\"item-thumb mb-3\">
  2407.                             {% for Tag in Product.Tags %}
  2408.                                 {% if Tag.name == '一番人気' %}
  2409.                                     <span class=\"icon -popular -large\">一番人気</span>
  2410.                                 {% elseif Tag.name == '即日配送' %}
  2411.                                     <span class=\"icon -rapid -large\">即日配送</span>
  2412.                                 {% elseif Tag.name == '代引手数料無料' %}
  2413.                                     <span class=\"icon -free -large\">代引手数料無料</span>
  2414.                                 {% elseif Tag.name == '送料無料' %}
  2415.                                     <span class=\"icon -free -large\">送料無料</span>
  2416.                                 {% elseif Tag.name == '3%還元' %}
  2417.                                     <span class=\"icon -point -large\">3%還元</span>
  2418.                                 {% elseif Tag.name == '人気' %}
  2419.                                     <span class=\"icon -popular -large\">人気</span>
  2420.                                 {% endif %}
  2421.                             {% endfor %}
  2422.                             {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2423.                             {% if Product.hasProductClass -%}
  2424.                                 {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  2425.                                     <div class=\"price -large\"><span class=\"price02-default\">&yen;{{ Product.getPrice02IncTaxMin|number_format }}</span> <span>(税込)</span></div>
  2426.                                 {% else %}
  2427.                                     <div class=\"price -large\"><span class=\"price02-default\">&yen;{{ Product.getPrice02IncTaxMin|number_format }} ~ &yen;{{ Product.getPrice02IncTaxMax|number_format }}</span> <span>(税込)</span></div>
  2428.                                 {% endif %}
  2429.                             {% else %}
  2430.                                 <div class=\"price -large\"><span class=\"price02-default\">&yen;{{ Product.getPrice02IncTaxMin|number_format }}</span> <span>(税込)</span></div>
  2431.                             {% endif %}
  2432.                             {% endif %}
  2433.                         </div>
  2434.                         <form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  2435.                             {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2436.                             <div class=\"border-top border-bottom py-3 mb-4\">
  2437.                                 <div class=\"d-flex align-items-center pb-3\">
  2438.                                     <div class=\"w-25 text-end\">{{ '商品コード'|trans }}:</div>
  2439.                                     <div class=\"ps-3\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</div>
  2440.                                 </div>
  2441.                                 {% if Product.stock_find %}
  2442.                                     {% if form.classcategory_id1 is defined %}
  2443.                                         <div class=\"d-flex align-items-center pb-1 d-none\">
  2444.                                             {{ form_row(form.classcategory_id1) }}
  2445.                                             {{ form_errors(form.classcategory_id1) }}
  2446.                                         </div>
  2447.                                         {% if form.classcategory_id2 is defined %}
  2448.                                             <div class=\"detail-color pb-1\">
  2449.                                                 {{ form_row(form.classcategory_id2) }}
  2450.                                                 {{ form_errors(form.classcategory_id2) }}
  2451.                                             </div>
  2452.                                         {% endif %}
  2453.                                     {% endif %}
  2454.                                     <div class=\"d-flex align-items-center py-1\">
  2455.                                         <div class=\"w-25 text-end\">{{ '数量'|trans }}</div>
  2456.                                         <div class=\"ps-3\">
  2457.                                             {{ form_widget(form.quantity) }}
  2458.                                             {{ form_errors(form.quantity) }}
  2459.                                         </div>
  2460.                                     </div>
  2461.                                 {% endif %}
  2462.                             </div>
  2463.                             {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2464.                             {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2465.                             <div class=\"d-flex align-items-center pb-3\">
  2466.                                 <div class=\"text-start\">{{ '商品コード'|trans }}:</div>
  2467.                                 <div class=\"ps-3\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</div>
  2468.                             </div>
  2469.                             {% if Product.stock_find %}
  2470.                                 {% if form.classcategory_id1 is defined %}
  2471.                                     {{ form_row(form.classcategory_id1, {'attr': {'type': 'hidden'}}) }}
  2472.                                     {{ form_errors(form.classcategory_id1) }}
  2473.                                     {% if form.classcategory_id2 is defined %}
  2474.                                         {{ form_row(form.classcategory_id2, {'attr': {'type': 'hidden'}}) }}
  2475.                                         {{ form_errors(form.classcategory_id2) }}
  2476.                                     {% endif %}
  2477.                                 {% endif %}
  2478.                                 {{ form_widget(form.quantity, {'type': 'hidden'}) }}
  2479.                                 {{ form_errors(form.quantity) }}
  2480.                             {% endif %}
  2481.                             {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2482.                             {% endif %}
  2483.                             <div class=\"d-flex justify-content-between\">
  2484.                                 {% if Product.stock_find %}
  2485.                                     <a href=\"javascript:void(0);\" class=\"me-1 btn btn-danger btn-lg rounded-0 w-100 add-cart\"><i class=\"icon-shopping_cart\"></i>{{ 'カートに入れる'|trans }}</a>
  2486.                                 {% else %}
  2487.                                     <button type=\"button\" class=\"me-1 btn btn-danger btn-lg rounded-0 w-100\" disabled=\"disabled\">{{ 'ただいま品切れ中です。'|trans }}</button>
  2488.                                 {% endif %}
  2489.                                 {% if BaseInfo.option_favorite_product %}
  2490.                                     {% if is_favorite == false %}
  2491.                                         <a href=\"javascript:void(0);\" onclick=\"document.forms.formFavorite.submit();\" class=\"ms-1 btn btn-dark btn-lg rounded-0 w-100\">{{ 'お気に入りに追加'|trans }}</a>
  2492.                                     {% else %}
  2493.                                         <button type=\"button\" id=\"favorite\" class=\"ms-1 btn btn-dark btn-lg rounded-0 w-100\" disabled=\"disabled\">{{ 'お気に入り登録済'|trans }}</button>
  2494.                                     {% endif %}
  2495.                                 {% endif %}
  2496.                             </div>
  2497.                             {{ form_rest(form) }}
  2498.                         </form>
  2499.                         {# お気に入りに追加用フォーム #}
  2500.                         <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\" id=\"formFavorite\" name=\"formFavorite\"></form>
  2501. {##}
  2502.                         <div class=\"ec-modal\">
  2503.                             <div class=\"ec-modal-overlay\">
  2504.                                 <div class=\"ec-modal-wrap\">
  2505.                                     <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  2506.                                     <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  2507.                                     <div class=\"ec-modal-box\">
  2508.                                         <div class=\"ec-role\">
  2509.                                             <span class=\"btn btn-dark btn-lg me-2 mb-3 inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  2510.                                             <a href=\"{{ url('cart') }}\" class=\"btn btn-danger btn-lg mb-3\"><i class=\"icon-shopping_cart\"></i>{{ 'カートへ進む'|trans }}</a>
  2511.                                         </div>
  2512.                                     </div>
  2513.                                 </div>
  2514.                             </div>
  2515.                         </div>
  2516. {##}
  2517.                         <div class=\"_bg-gray p-3 mt-4\">
  2518.                             {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2519.                                 <ul class=\"list-unstyled mb-0\">
  2520.                                     <li>※価格は【印刷代込み(税込)】です。</li>
  2521.                                     <li>※パッケージは予告なく変更になる場合がございます。</li>
  2522.                                     <li>※3球単位で 1 デザイン印刷可能です。</li>
  2523.                                 </ul>
  2524.                             {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2525.                             {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2526.                                 <ul class=\"list-unstyled mb-0\">
  2527.                                     <li>※3球単位で 1 デザイン印刷可能です。</li>
  2528.                                 </ul>
  2529.                             {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2530.                             {% endif %}
  2531.                         </div>
  2532.                     </div>
  2533.                 </div>
  2534.                 <div class=\"me-2 d-block d-lg-none\">
  2535.                     <a href=\"\" class=\"btn btn-outline-dark btn-lg w-100\" data-bs-toggle=\"modal\" data-bs-target=\"#filterModal\">別の商品を見る</a>
  2536.                 </div>
  2537.                 
  2538.                 <hr class=\"my-5\">
  2539. {% if Product.freearea %}
  2540.                 <div class=\"ec-productRole__description\">{{ Product.freearea|raw|nl2br }}</div>
  2541. {% endif %}
  2542. {# 商品管理 - 商品登録 商品説明 欄に入力!
  2543.                 <div class=\"text-center\">
  2544.                     <img src=\"/html/template/default/assets/img/products/item01.png\" width=\"600\" height=\"600\" alt=\"ゼクシオ リバウンド ドライブ II\" class=\"img-fluid\">
  2545.                 </div>
  2546.                 <p>
  2547.                     「ゼクシオ リバウンド ドライブ II」は、ダンロップが提供する高性能ゴルフボールです。
  2548.                     このボールは、ウレタンカバーとアイオノマーカバーの長所を融合し、柔らかな打感と優れたスピン性能、直進性、そして高い飛距離性能を実現しています。3層構造の「リバウンドフレーム」は、剛性の高いエリアと低いエリアを交互に配置し、各ショットで最適なパフォーマンスを発揮しま
  2549.                     す。また、ティーショットからパッティングまで、すべてのショットで高いパフォーマンスを提供する「ALL OK!」性能がさらに進化しています。
  2550.                     カラーバリエーションは、ホワイト、プレミアムホワイト、ライムイエロー、プレミアムピンク、X Mark Edition ホワイトの5種類があり、プレーヤー
  2551.                     の好みに合わせて選択できます。
  2552.                 </p>
  2553. #}
  2554.                 {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2555.                     {{ include('Block/product_detail.twig') }}{# 印刷サイズ・サービス #}
  2556.                 {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2557.                 {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2558.                     {{ include('Block/product_detail.twig') }}{# 印刷サイズ・サービス #}
  2559.                 {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2560.                 {% endif %}
  2561.                 <form name=\"formSelSP2\" id=\"formSelSP2\" method=\"get\" action=\"{{ url('product_list') }}\">
  2562.                     <input type=\"hidden\" name=\"mode\">
  2563.                     {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2564.                     <input type=\"hidden\" name=\"category_id\" value=\"7\">
  2565.                     {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2566.                     {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2567.                     <input type=\"hidden\" name=\"category_id\" value=\"9\">
  2568.                     {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2569.                     {% endif %}
  2570.                     <input type=\"hidden\" name=\"name\">
  2571.                     <input type=\"hidden\" name=\"pageno\" value=\"1\">
  2572.                     <input type=\"hidden\" name=\"disp_number\" value=\"21\">
  2573.                     <input type=\"hidden\" name=\"orderby\" value=\"2\">
  2574.                     {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2575.                     <input type=\"hidden\" id=\"ball-type\" name=\"ball-type\">
  2576.                     <input type=\"hidden\" id=\"ball-nums\" name=\"ball-nums\">
  2577.                     <input type=\"hidden\" id=\"ball-price\" name=\"ball-price\">
  2578.                     {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2579.                     {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2580.                     <input type=\"hidden\" id=\"design-cate\" name=\"design-cate\">
  2581.                     {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2582.                     {% endif %}
  2583.                 </form>
  2584.                 <div class=\"modalBoxAlert\" id=\"alert01\">
  2585.                     <div class=\"modalInnerAlert\">
  2586.                         絞り込みたい項目がある場合のみチェックしてください。
  2587.                     </div>
  2588.                 </div>
  2589.             </main>
  2590.         </div>
  2591.     </div>
  2592.     <!-- modal -->
  2593.     <div class=\"modal fade\" id=\"filterModal\" tabindex=\"-1\" aria-labelledby=\"filterModalLabel\" aria-hidden=\"true\">
  2594.         <div class=\"modal-dialog\">
  2595.             <div class=\"modal-content\">
  2596.                 <div class=\"modal-header\">
  2597.                     <h5 class=\"modal-title\" id=\"filterModalLabel\">絞り込み</h5>
  2598.                     <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>
  2599.                 </div>
  2600.                 <form name=\"formSelSP\" id=\"formSelSP\">
  2601.                 <div class=\"modal-body\">
  2602.                     <!-- 絞り込みフォームの内容をここに追加 -->
  2603.                     {% if rootCategoryId == 7 %}{# ボールを選ぶ #}
  2604.                     <div class=\"aside-filter _modal\">
  2605.                         <div class=\"title\">
  2606.                             ボールの種類から選ぶ
  2607.                         </div>
  2608.                         <ul class=\"list-unstyled mb-0 list\">
  2609.                             <li>
  2610.                                 <label>
  2611.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"14\">
  2612.                                     持ち込みボール
  2613.                                 </label>
  2614.                             </li>
  2615.                             <li>
  2616.                                 <label>
  2617.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"11\">
  2618.                                     スリクソン
  2619.                                 </label>
  2620.                             </li>
  2621.                             <li>
  2622.                                 <label>
  2623.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"12\">
  2624.                                     ゼクシオ
  2625.                                 </label>
  2626.                             </li>
  2627.                             <li>
  2628.                                 <label>
  2629.                                     <input type=\"checkbox\" name=\"ball_type\" class=\"ball_type_sp\" value=\"13\">
  2630.                                     ツアースペシャル
  2631.                                 </label>
  2632.                             </li>
  2633.                         </ul>
  2634.                         <div class=\"title\">
  2635.                             ボールの球数から選ぶ
  2636.                         </div>
  2637.                         <ul class=\"list-unstyled mb-0 list\">
  2638.                             <li>
  2639.                                 <label>
  2640.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"8,13\">
  2641.                                     3球
  2642.                                 </label>
  2643.                             </li>
  2644.                             <li>
  2645.                                 <label>
  2646.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"11,14\">
  2647.                                     6球
  2648.                                 </label>
  2649.                             </li>
  2650.                             <li>
  2651.                                 <label>
  2652.                                     <input type=\"checkbox\" name=\"ball_nums\" class=\"ball_nums_sp\" value=\"12,15\">
  2653.                                     12球
  2654.                                 </label>
  2655.                             </li>
  2656.                         </ul>
  2657.                         <div class=\"title\">
  2658.                             価格で選ぶ
  2659.                         </div>
  2660.                         <ul class=\"list-unstyled mb-0 list\">
  2661.                             <li>
  2662.                                 <label>
  2663.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"1\">
  2664.                                     ~2,999円
  2665.                                 </label>
  2666.                             </li>
  2667.                             <li>
  2668.                                 <label>
  2669.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"2\">
  2670.                                     3,000円~4,999円
  2671.                                 </label>
  2672.                             </li>
  2673.                             <li>
  2674.                                 <label>
  2675.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"3\">
  2676.                                     5,000円~9,999円
  2677.                                 </label>
  2678.                             </li>
  2679.                             <li>
  2680.                                 <label>
  2681.                                     <input type=\"checkbox\" name=\"ball_price\" class=\"ball_price_sp\" value=\"4\">
  2682.                                     10,000円以上
  2683.                                 </label>
  2684.                             </li>
  2685.                         </ul>
  2686.                     </div>
  2687.                     {% elseif rootCategoryId == 8 %}{# マーカーを選ぶ #}
  2688.                     {% elseif rootCategoryId == 9 %}{# デザインを選ぶ #}
  2689.                     <div class=\"aside-filter _modal\">
  2690.                         <div class=\"title\">
  2691.                         カテゴリから選ぶ
  2692.                         </div>
  2693.                         <ul class=\"list-unstyled mb-0 list\">
  2694.                             <li>
  2695.                                 <label>
  2696.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"15\">
  2697.                                     誕生日祝い
  2698.                                 </label>
  2699.                             </li>
  2700.                             <li>
  2701.                                 <label>
  2702.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"16\">
  2703.                                     定年退職祝い
  2704.                                 </label>
  2705.                             </li>
  2706.                             <li>
  2707.                                 <label>
  2708.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"17\">
  2709.                                     還暦祝い
  2710.                                 </label>
  2711.                             </li>
  2712.                             <li>
  2713.                                 <label>
  2714.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"18\">
  2715.                                     コンペ景品
  2716.                                 </label>
  2717.                             </li>
  2718.                             <li>
  2719.                                 <label>
  2720.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"19\">
  2721.                                     父の日祝い
  2722.                                 </label>
  2723.                             </li>
  2724.                             <li>
  2725.                                 <label>
  2726.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"20\">
  2727.                                     母の日祝い
  2728.                                 </label>
  2729.                             </li>
  2730.                             <li>
  2731.                                 <label>
  2732.                                     <input type=\"checkbox\" name=\"design_cate\" class=\"design_cate_sp\" value=\"21\">
  2733.                                     GOLFPRINT オリジナル
  2734.                                 </label>
  2735.                             </li>
  2736.                         </ul>
  2737.                     </div>
  2738.                     {% elseif rootCategoryId == 10 %}{# ラッピング #}
  2739.                     {% endif %}
  2740.                 </div>
  2741.                 <div class=\"modal-footer\">
  2742.                     <button type=\"button\" class=\"btn btn-outline-dark\" data-bs-dismiss=\"modal\">閉じる</button>
  2743.                     <button type=\"button\" class=\"btn btn-outline-dark\" onclick=\"location.href='{{ url('product_detail', {'id': Product.id}) }}'\">クリア</button>
  2744.                     <button type=\"button\" onclick=\"setValSP()\" class=\"btn btn-primary\">絞り込む</button>
  2745.                 </div>
  2746.                 </form>
  2747.             </div>
  2748.         </div>
  2749.     </div>
  2750. {% endblock %}""Product/detail.twig""/home/insp/insp.sixcore.jp/public_html/app/template/default/Product/detail.twig");
  2751.     }
  2752.     
  2753.     public function checkSecurity()
  2754.     {
  2755.         static $tags = array("set" => 13"for" => 138"if" => 159);
  2756.         static $filters = array("raw" => 147"json_encode" => 180"escape" => 183"trans" => 269"no_image_product" => 348"slice" => 351"replace" => 351"default" => 351"number_format" => 758"nl2br" => 875);
  2757.         static $functions = array("range" => 141"class_categories_as_json" => 147"url" => 315"asset" => 345"include" => 705"form_row" => 777"form_errors" => 778"form_widget" => 790"form_rest" => 830);
  2758.         try {
  2759.             $this->sandbox->checkSecurity(
  2760.                 ['set''for''if'],
  2761.                 ['raw''json_encode''escape''trans''no_image_product''slice''replace''default''number_format''nl2br'],
  2762.                 ['range''class_categories_as_json''url''asset''include''form_row''form_errors''form_widget''form_rest']
  2763.             );
  2764.         } catch (SecurityError $e) {
  2765.             $e->setSourceContext($this->source);
  2766.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  2767.                 $e->setTemplateLine($tags[$e->getTagName()]);
  2768.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  2769.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  2770.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  2771.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  2772.             }
  2773.             throw $e;
  2774.         }
  2775.     }
  2776. }