var/cache/dev/twig/0d/0d89ca7e5a8cb98ba173cef2c2c1c78d.php line 40

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_2a91a2bffd61fae25a946bf3c73dc5a6 extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.     }
  28.     protected function doGetParent(array $context)
  29.     {
  30.         // line 11
  31.         return "default_frame.twig";
  32.     }
  33.     protected function doDisplay(array $context, array $blocks = [])
  34.     {
  35.         $macros $this->macros;
  36.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  37.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  38.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         // line 15
  41.         $context["cart_restriction_enabled"] = false;
  42.         // line 17
  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 19
  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 20
  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. ";
  127.         
  128.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  129.         
  130.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  131.     }
  132.     // line 99
  133.     public function block_javascript($context, array $blocks = [])
  134.     {
  135.         $macros $this->macros;
  136.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  137.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  138.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  139.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  140.         // line 100
  141.         echo "    <script>
  142.         eccube.classCategories = ";
  143.         // line 101
  144.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'101$this->source); })()));
  145.         echo ";
  146.         // 規格2に選択肢を割り当てる。
  147.         function fnSetClassCategories(form, classcat_id2_selected) {
  148.             var \$form = \$(form);
  149.             var product_id = \$form.find('input[name=product_id]').val();
  150.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  151.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  152.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  153.         }
  154.         ";
  155.         // line 112
  156.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse112)) {
  157.             // line 113
  158.             echo "        fnSetClassCategories(
  159.             \$('#form1'), ";
  160.             // line 114
  161.             echo json_encode(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.'114$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse114), "vars", [], "any"falsefalsefalse114), "value", [], "any"falsefalsefalse114));
  162.             echo "
  163.         );
  164.         ";
  165.         } elseif (twig_get_attribute($this->env$this->source,         // line 116
  166. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse116)) {
  167.             // line 117
  168.             echo "        eccube.checkStock(\$('#form1'), ";
  169.             echo 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.'117$this->source); })()), "id", [], "any"falsefalsefalse117), "html"nulltrue);
  170.             echo ", ";
  171.             echo json_encode(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.'117$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse117), "vars", [], "any"falsefalsefalse117), "value", [], "any"falsefalsefalse117));
  172.             echo ", null);
  173.         ";
  174.         }
  175.         // line 119
  176.         echo "    </script>
  177.     <script>
  178.         \$(function() {
  179.             // bfcache無効化
  180.             \$(window).bind('pageshow', function(event) {
  181.                 if (event.originalEvent.persisted) {
  182.                     location.reload(true);
  183.                 }
  184.             });
  185.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  186.             // img タグに width, height が付与されている.
  187.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  188.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  189.             \$('.ec-grid2__cell').hide();
  190.             var removeSize = function () {
  191.                 \$('.slide-item').height('');
  192.                 \$('.slide-item img')
  193.                     .removeAttr('width')
  194.                     .removeAttr('height')
  195.                     .removeAttr('style');
  196.             };
  197.             var slickInitial = function(slick) {
  198.                 \$('.ec-grid2__cell').fadeIn(1500);
  199.                 var baseHeight = \$(slick.target).height();
  200.                 var baseWidth = \$(slick.target).width();
  201.                 var rate = baseWidth / baseHeight;
  202.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  203.                 // transform を使用することでCLSの影響を受けないようにする
  204.                 \$('.slide-item img')
  205.                     .css(
  206.                         {
  207.                             'transform-origin': 'top left',
  208.                             'transform': 'scaleY(' + rate + ')',
  209.                             'transition': 'transform .1s'
  210.                         }
  211.                     );
  212.                 // 正しいサイズに近くなったら属性を解除する
  213.                 setTimeout(removeSize, 500);
  214.             };
  215.             \$('.item_visual').on('init', slickInitial);
  216.             // リサイズ時は CLS の影響を受けないため属性を解除する
  217.             \$(window).resize(removeSize);
  218.             \$('.item_visual').slick({
  219.                 dots: false,
  220.                 arrows: false,
  221.                 responsive: [{
  222.                     breakpoint: 768,
  223.                     settings: {
  224.                         dots: true
  225.                     }
  226.                 }]
  227.             });
  228.             \$('.slideThumb').on('click', function() {
  229.                 var index = \$(this).attr('data-index');
  230.                 \$('.item_visual').slick('slickGoTo', index, false);
  231.             })
  232.         });
  233.     </script>
  234.     <script>
  235.         \$(function() {
  236.             \$('.add-cart').on('click', function(event) {
  237.                 ";
  238.         // line 183
  239.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse183)) {
  240.             // line 184
  241.             echo "                // 規格1フォームの必須チェック
  242.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  243.                     \$('#classcategory_id1')[0].setCustomValidity('";
  244.             // line 186
  245.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  246.             echo "');
  247.                     return true;
  248.                 } else {
  249.                     \$('#classcategory_id1')[0].setCustomValidity('');
  250.                 }
  251.                 ";
  252.         }
  253.         // line 192
  254.         echo "
  255.                 ";
  256.         // line 193
  257.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse193)) {
  258.             // line 194
  259.             echo "                // 規格2フォームの必須チェック
  260.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  261.                     \$('#classcategory_id2')[0].setCustomValidity('";
  262.             // line 196
  263.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  264.             echo "');
  265.                     return true;
  266.                 } else {
  267.                     \$('#classcategory_id2')[0].setCustomValidity('');
  268.                 }
  269.                 ";
  270.         }
  271.         // line 202
  272.         echo "
  273.                 // 個数フォームのチェック
  274.                 if (\$('#quantity').val() < 1) {
  275.                     \$('#quantity')[0].setCustomValidity('";
  276.         // line 205
  277.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  278.         echo "');
  279.                     return true;
  280.                 } else {
  281.                     \$('#quantity')[0].setCustomValidity('');
  282.                 }
  283.                 event.preventDefault();
  284.                 \$form = \$('#form1');
  285.                 \$.ajax({
  286.                     url: \$form.attr('action'),
  287.                     type: \$form.attr('method'),
  288.                     data: \$form.serialize(),
  289.                     dataType: 'json',
  290.                     beforeSend: function(xhr, settings) {
  291.                         // Buttonを無効にする
  292.                         \$('.add-cart').prop('disabled', true);
  293.                     }
  294.                 }).done(function(data) {
  295.                     // レスポンス内のメッセージをalertで表示
  296.                     \$.each(data.messages, function() {
  297.                         \$('#ec-modal-header').html(this);
  298.                     });
  299.                     \$('.ec-modal').show()
  300.                     // カートブロックを更新する
  301.                     \$.ajax({
  302.                         url: \"";
  303.         // line 232
  304.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  305.         echo "\",
  306.                         type: 'GET',
  307.                         dataType: 'html'
  308.                     }).done(function(html) {
  309.                         \$('.ec-headerRole__cart').html(html);
  310.                     });
  311.                 }).fail(function(data) {
  312.                     alert('";
  313.         // line 239
  314.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  315.         echo "');
  316.                 }).always(function(data) {
  317.                     // Buttonを有効にする
  318.                     \$('.add-cart').prop('disabled', false);
  319.                 });
  320.             });
  321.         });
  322.         \$('.ec-modal-wrap').on('click', function(e) {
  323.             // モーダル内の処理は外側にバブリングさせない
  324.             e.stopPropagation();
  325.         });
  326.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  327.             \$('.ec-modal').hide()
  328.         });
  329.     </script>
  330.     <script type=\"application/ld+json\">
  331.     {
  332.         \"@context\": \"https://schema.org/\",
  333.         \"@type\": \"Product\",
  334.         \"name\": \"";
  335.         // line 259
  336.         echo 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.'259$this->source); })()), "name", [], "any"falsefalsefalse259), "html"nulltrue);
  337.         echo "\",
  338.         \"image\": [
  339.             ";
  340.         // line 261
  341.         $context['_parent'] = $context;
  342.         $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.'261$this->source); })()), "ProductImage", [], "any"falsefalsefalse261));
  343.         $context['_iterated'] = false;
  344.         $context['loop'] = [
  345.           'parent' => $context['_parent'],
  346.           'index0' => 0,
  347.           'index'  => 1,
  348.           'first'  => true,
  349.         ];
  350.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  351.             $length count($context['_seq']);
  352.             $context['loop']['revindex0'] = $length 1;
  353.             $context['loop']['revindex'] = $length;
  354.             $context['loop']['length'] = $length;
  355.             $context['loop']['last'] = === $length;
  356.         }
  357.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  358.             // line 262
  359.             echo "                \"";
  360.             echo twig_escape_filter($this->envtwig_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.'262$this->source); })()), "request", [], "any"falsefalsefalse262), "schemeAndHttpHost", [], "any"falsefalsefalse262), "html"nulltrue);
  361.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["img"], "save_image"), "html"nulltrue);
  362.             echo "\"";
  363.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse262)) {
  364.                 echo ",";
  365.             }
  366.             // line 263
  367.             echo "            ";
  368.             $context['_iterated'] = true;
  369.             ++$context['loop']['index0'];
  370.             ++$context['loop']['index'];
  371.             $context['loop']['first'] = false;
  372.             if (isset($context['loop']['length'])) {
  373.                 --$context['loop']['revindex0'];
  374.                 --$context['loop']['revindex'];
  375.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  376.             }
  377.         }
  378.         if (!$context['_iterated']) {
  379.             // line 264
  380.             echo "                \"";
  381.             echo twig_escape_filter($this->envtwig_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.'264$this->source); })()), "request", [], "any"falsefalsefalse264), "schemeAndHttpHost", [], "any"falsefalsefalse264), "html"nulltrue);
  382.             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);
  383.             echo "\"
  384.             ";
  385.         }
  386.         $_parent $context['_parent'];
  387.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  388.         $context array_intersect_key($context$_parent) + $_parent;
  389.         // line 266
  390.         echo "        ],
  391.         \"description\": \"";
  392.         // line 267
  393.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruefalse267)) ? (_twig_default_filter(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsefalse267), 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.'267$this->source); })()), "description_detail", [], "any"falsefalsefalse267))) : (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.'267$this->source); })()), "description_detail", [], "any"falsefalsefalse267))), ["
  394. => """ " => ""]), 0300), "html"nulltrue);
  395.         echo "\",
  396.         ";
  397.         // line 268
  398.         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.'268$this->source); })()), "code_min", [], "any"falsefalsefalse268)) {
  399.             // line 269
  400.             echo "        \"sku\": \"";
  401.             echo 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.'269$this->source); })()), "code_min", [], "any"falsefalsefalse269), "html"nulltrue);
  402.             echo "\",
  403.         \"gtin13\": \"";
  404.             // line 270
  405.             echo 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.'270$this->source); })()), "code_min", [], "any"falsefalsefalse270), "html"nulltrue);
  406.             echo "\",
  407.         ";
  408.         }
  409.         // line 272
  410.         echo "        \"offers\": {
  411.             \"@type\": \"Offer\",
  412.             \"url\": \"";
  413.         // line 274
  414.         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.'274$this->source); })()), "id", [], "any"falsefalsefalse274)]), "html"nulltrue);
  415.         echo "\",
  416.             \"priceCurrency\": \"";
  417.         // line 275
  418.         echo twig_escape_filter($this->envtwig_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.'275$this->source); })()), "currency", [], "any"falsefalsefalse275), "html"nulltrue);
  419.         echo "\",
  420.             \"price\": ";
  421.         // line 276
  422.         ((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.'276$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse276)) ? (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.'276$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse276), "html"nulltrue))) : (print (0)));
  423.         echo ",
  424.             \"availability\": \"";
  425.         // line 277
  426.         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.'277$this->source); })()), "stock_find", [], "any"falsefalsefalse277)) ? ("InStock") : ("OutOfStock"));
  427.         echo "\"
  428.         }
  429.     }
  430.     </script>
  431. ";
  432.         
  433.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  434.         
  435.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  436.     }
  437.     // line 283
  438.     public function block_main($context, array $blocks = [])
  439.     {
  440.         $macros $this->macros;
  441.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  442.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  443.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  444.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  445.         // line 284
  446.         echo "    <div class=\"ec-productRole product_";
  447.         echo 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.'284$this->source); })()), "id", [], "any"falsefalsefalse284), "html"nulltrue);
  448.         echo "\">
  449.         <div class=\"ec-grid2\">
  450.             <div class=\"ec-grid2__cell\">
  451.                 <div class=\"ec-sliderItemRole\">
  452.                     <div class=\"item_visual\">
  453.                         ";
  454.         // line 290
  455.         $context['_parent'] = $context;
  456.         $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.'290$this->source); })()), "ProductImage", [], "any"falsefalsefalse290));
  457.         $context['_iterated'] = false;
  458.         $context['loop'] = [
  459.           'parent' => $context['_parent'],
  460.           'index0' => 0,
  461.           'index'  => 1,
  462.           'first'  => true,
  463.         ];
  464.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  465.             $length count($context['_seq']);
  466.             $context['loop']['revindex0'] = $length 1;
  467.             $context['loop']['revindex'] = $length;
  468.             $context['loop']['length'] = $length;
  469.             $context['loop']['last'] = === $length;
  470.         }
  471.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  472.             // line 291
  473.             echo "                            <div class=\"slide-item\"><img src=\"";
  474.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  475.             echo "\" alt=\"";
  476.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse291)) ? (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.'291$this->source); })()), "name", [], "any"falsefalsefalse291), "html"nulltrue))) : (print ("")));
  477.             echo "\" width=\"550\" height=\"550\"";
  478.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse291) > 1)) {
  479.                 echo " loading=\"lazy\"";
  480.             }
  481.             echo "></div>
  482.                         ";
  483.             $context['_iterated'] = true;
  484.             ++$context['loop']['index0'];
  485.             ++$context['loop']['index'];
  486.             $context['loop']['first'] = false;
  487.             if (isset($context['loop']['length'])) {
  488.                 --$context['loop']['revindex0'];
  489.                 --$context['loop']['revindex'];
  490.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  491.             }
  492.         }
  493.         if (!$context['_iterated']) {
  494.             // line 293
  495.             echo "                            <div class=\"slide-item\"><img src=\"";
  496.             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);
  497.             echo "\" alt=\"";
  498.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse293)) ? (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.'293$this->source); })()), "name", [], "any"falsefalsefalse293), "html"nulltrue))) : (print ("")));
  499.             echo "\" width=\"550\" height=\"550\"></div>
  500.                         ";
  501.         }
  502.         $_parent $context['_parent'];
  503.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  504.         $context array_intersect_key($context$_parent) + $_parent;
  505.         // line 295
  506.         echo "                    </div>
  507.                     <div class=\"item_nav\">
  508.                         ";
  509.         // line 297
  510.         $context['_parent'] = $context;
  511.         $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.'297$this->source); })()), "ProductImage", [], "any"falsefalsefalse297));
  512.         $context['loop'] = [
  513.           'parent' => $context['_parent'],
  514.           'index0' => 0,
  515.           'index'  => 1,
  516.           'first'  => true,
  517.         ];
  518.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  519.             $length count($context['_seq']);
  520.             $context['loop']['revindex0'] = $length 1;
  521.             $context['loop']['revindex'] = $length;
  522.             $context['loop']['length'] = $length;
  523.             $context['loop']['last'] = === $length;
  524.         }
  525.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  526.             // line 298
  527.             echo "                            <div class=\"slideThumb\" data-index=\"";
  528.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsefalse298), "html"nulltrue);
  529.             echo "\"><img src=\"";
  530.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  531.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  532.                         ";
  533.             ++$context['loop']['index0'];
  534.             ++$context['loop']['index'];
  535.             $context['loop']['first'] = false;
  536.             if (isset($context['loop']['length'])) {
  537.                 --$context['loop']['revindex0'];
  538.                 --$context['loop']['revindex'];
  539.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  540.             }
  541.         }
  542.         $_parent $context['_parent'];
  543.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  544.         $context array_intersect_key($context$_parent) + $_parent;
  545.         // line 300
  546.         echo "                    </div>
  547.                 </div>
  548.             </div>
  549.             <div class=\"ec-grid2__cell\">
  550.                 <div class=\"ec-productRole__profile\">
  551.                     ";
  552.         // line 306
  553.         echo "                    <div class=\"ec-productRole__title\">
  554.                         <h1 class=\"ec-headingTitle\">";
  555.         // line 307
  556.         echo 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.'307$this->source); })()), "name", [], "any"falsefalsefalse307), "html"nulltrue);
  557.         echo "</h1>
  558.                     </div>
  559.                     ";
  560.         // line 310
  561.         echo "                    <ul class=\"ec-productRole__tags\">
  562.                         ";
  563.         // line 311
  564.         $context['_parent'] = $context;
  565.         $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.'311$this->source); })()), "Tags", [], "any"falsefalsefalse311));
  566.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  567.             // line 312
  568.             echo "                            <li class=\"ec-productRole__tag tag_";
  569.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsefalse312), "html"nulltrue);
  570.             echo "\">";
  571.             echo twig_escape_filter($this->env$context["Tag"], "html"nulltrue);
  572.             echo "</li>
  573.                         ";
  574.         }
  575.         $_parent $context['_parent'];
  576.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  577.         $context array_intersect_key($context$_parent) + $_parent;
  578.         // line 314
  579.         echo "                    </ul>
  580.                     ";
  581.         // line 316
  582.         echo "                    ";
  583.         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.'316$this->source); })()), "hasProductClass", [], "any"falsefalsefalse316)) {
  584.             // line 317
  585.             echo "<div class=\"ec-productRole__priceRegular\">
  586.                             ";
  587.             // line 318
  588.             if (( !(null === 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.'318$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse318)) && (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.'318$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse318) == 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.'318$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse318)))) {
  589.                 // line 319
  590.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  591.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  592.                 echo ":<span class=\"price01-default\">";
  593.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'319$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse319)), "html"nulltrue);
  594.                 echo "</span></span>
  595.                                 <span class=\"ec-productRole__priceRegularTax\">";
  596.                 // line 320
  597.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  598.                 echo "</span>
  599.                             ";
  600.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 321
  601. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'321$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse321)) &&  !(null === 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.'321$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse321)))) {
  602.                 // line 322
  603.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  604.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  605.                 echo ":<span class=\"price01-default\">";
  606.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'322$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse322)), "html"nulltrue);
  607.                 echo "~ ";
  608.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'322$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse322)), "html"nulltrue);
  609.                 echo "</span></span>
  610.                                 <span class=\"ec-productRole__priceRegularTax\">";
  611.                 // line 323
  612.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  613.                 echo "</span>
  614.                             ";
  615.             }
  616.             // line 325
  617.             echo "                        </div>
  618.                     ";
  619.         } else {
  620.             // line 327
  621.             echo "                        ";
  622.             if ( !(null === 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.'327$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse327))) {
  623.                 // line 328
  624.                 echo "                            <span class=\"ec-productRole__priceRegularPrice\">";
  625.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  626.                 echo ":";
  627.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'328$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse328)), "html"nulltrue);
  628.                 echo "</span>
  629.                             <span class=\"ec-productRole__priceRegularTax\">";
  630.                 // line 329
  631.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  632.                 echo "</span>
  633.                         ";
  634.             }
  635.             // line 331
  636.             echo "                    ";
  637.         }
  638.         // line 332
  639.         echo "                    ";
  640.         // line 333
  641.         echo "                    <div class=\"ec-productRole__price\">
  642.                         ";
  643.         // line 334
  644.         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.'334$this->source); })()), "hasProductClass", [], "any"falsefalsefalse334)) {
  645.             // line 335
  646.             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.'335$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse335) == 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.'335$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse335))) {
  647.                 // line 336
  648.                 echo "                                <div class=\"ec-price\">
  649.                                     <span class=\"ec-price__price price02-default\">";
  650.                 // line 337
  651.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'337$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse337)), "html"nulltrue);
  652.                 echo "</span>
  653.                                     <span class=\"ec-price__tax\">";
  654.                 // line 338
  655.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  656.                 echo "</span>
  657.                                 </div>
  658.                             ";
  659.             } else {
  660.                 // line 341
  661.                 echo "                                <div class=\"ec-price\">
  662.                                     <span class=\"ec-price__price price02-default\">";
  663.                 // line 342
  664.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse342)), "html"nulltrue);
  665.                 echo " ~ ";
  666.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse342)), "html"nulltrue);
  667.                 echo "</span>
  668.                                     <span class=\"ec-price__tax\">";
  669.                 // line 343
  670.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  671.                 echo "</span>
  672.                                 </div>
  673.                             ";
  674.             }
  675.             // line 346
  676.             echo "                        ";
  677.         } else {
  678.             // line 347
  679.             echo "                            <div class=\"ec-price\">
  680.                                 <span class=\"ec-price__price\">";
  681.             // line 348
  682.             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'348$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse348)), "html"nulltrue);
  683.             echo "</span>
  684.                                 <span class=\"ec-price__tax\">";
  685.             // line 349
  686.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  687.             echo "</span>
  688.                             </div>
  689.                         ";
  690.         }
  691.         // line 352
  692.         echo "                    </div>
  693.                     ";
  694.         // line 354
  695.         echo "                    ";
  696.         if ( !twig_test_empty(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.'354$this->source); })()), "code_min", [], "any"falsefalsefalse354))) {
  697.             // line 355
  698.             echo "                        <div class=\"ec-productRole__code\">
  699.                             ";
  700.             // line 356
  701.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("GTINコード"), "html"nulltrue);
  702.             echo ": 
  703.                             <span class=\"product-code-default\">";
  704.             // line 357
  705.             echo 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.'357$this->source); })()), "code_min", [], "any"falsefalsefalse357), "html"nulltrue);
  706.             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.'357$this->source); })()), "code_min", [], "any"falsefalsefalse357) != 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); })()), "code_max", [], "any"falsefalsefalse357))) {
  707.                 echo " ~ ";
  708.                 echo 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.'357$this->source); })()), "code_max", [], "any"falsefalsefalse357), "html"nulltrue);
  709.             }
  710.             echo "</span>
  711.                         </div>
  712.                     ";
  713.         }
  714.         // line 360
  715.         echo "                    ";
  716.         // line 361
  717.         echo "                    ";
  718.         if ( !twig_test_empty(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.'361$this->source); })()), "ProductCategories", [], "any"falsefalsefalse361))) {
  719.             // line 362
  720.             echo "                        <div class=\"ec-productRole__category\">
  721.                             <div>";
  722.             // line 363
  723.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html"nulltrue);
  724.             echo "</div>
  725.                             ";
  726.             // line 364
  727.             $context['_parent'] = $context;
  728.             $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.'364$this->source); })()), "ProductCategories", [], "any"falsefalsefalse364));
  729.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  730.                 // line 365
  731.                 echo "                                <ul>
  732.                                     <li>
  733.                                         ";
  734.                 // line 367
  735.                 $context['_parent'] = $context;
  736.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse367), "path", [], "any"falsefalsefalse367));
  737.                 $context['loop'] = [
  738.                   'parent' => $context['_parent'],
  739.                   'index0' => 0,
  740.                   'index'  => 1,
  741.                   'first'  => true,
  742.                 ];
  743.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  744.                     $length count($context['_seq']);
  745.                     $context['loop']['revindex0'] = $length 1;
  746.                     $context['loop']['revindex'] = $length;
  747.                     $context['loop']['length'] = $length;
  748.                     $context['loop']['last'] = === $length;
  749.                 }
  750.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  751.                     // line 368
  752.                     echo "                                            <a href=\"";
  753.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  754.                     echo "?category_id=";
  755.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsefalse368), "html"nulltrue);
  756.                     echo "\">";
  757.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsefalse368), "html"nulltrue);
  758.                     echo "</a>";
  759.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse368) == false)) {
  760.                         // line 369
  761.                         echo "                                            <span>></span>";
  762.                     }
  763.                     ++$context['loop']['index0'];
  764.                     ++$context['loop']['index'];
  765.                     $context['loop']['first'] = false;
  766.                     if (isset($context['loop']['length'])) {
  767.                         --$context['loop']['revindex0'];
  768.                         --$context['loop']['revindex'];
  769.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  770.                     }
  771.                 }
  772.                 $_parent $context['_parent'];
  773.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  774.                 $context array_intersect_key($context$_parent) + $_parent;
  775.                 // line 371
  776.                 echo "                                    </li>
  777.                                 </ul>
  778.                             ";
  779.             }
  780.             $_parent $context['_parent'];
  781.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  782.             $context array_intersect_key($context$_parent) + $_parent;
  783.             // line 374
  784.             echo "                        </div>
  785.                     ";
  786.         }
  787.         // line 376
  788.         echo "
  789. <!--非会員カートボタン非表示-->\t
  790. ";
  791.         // line 379
  792.         $context["hiddenProductIds"] = [=> 8=> 9=> 10=> 11=> 12=> 16=> 18=> 21=> 26=> 2910 => 3011 => 4012 => 4213 => 4314 => 5215 => 5416 => 5517 => 5618 => 5719 => 5820 => 5921 => 6022 => 6223 => 6324 => 6425 => 6626 => 6727 => 6828 => 6929 => 8830 => 9431 => 9532 => 9633 => 11534 => 11635 => 12036 => 12337 => 12738 => 12839 => 13440 => 13541 => 13642 => 13843 => 13944 => 14045 => 14146 => 14347 => 14448 => 14549 => 14650 => 14851 => 14952 => 15053 => 15154 => 15455 => 15556 => 15657 => 15858 => 15959 => 16060 => 16161 => 16262 => 16363 => 16464 => 16565 => 16766 => 16867 => 16968 => 18869 => 18970 => 19071 => 19472 => 19873 => 21074 => 21175 => 21276 => 21377 => 21778 => 21879 => 21980 => 22081 => 22282 => 22383 => 22484 => 22585 => 22686 => 22787 => 22888 => 22989 => 23090 => 23191 => 23492 => 23593 => 23694 => 23795 => 23896 => 23997 => 24098 => 24199 => 242100 => 243101 => 244102 => 245103 => 246104 => 247105 => 254106 => 255107 => 256108 => 257109 => 258110 => 259111 => 260112 => 261113 => 262114 => 263115 => 264116 => 265117 => 266118 => 267119 => 268120 => 269121 => 270122 => 271123 => 272124 => 273125 => 275126 => 276127 => 277128 => 278129 => 279130 => 280131 => 281132 => 282133 => 283134 => 284135 => 285136 => 286137 => 287138 => 288139 => 303140 => 304];
  793.         // line 380
  794.         echo "
  795. ";
  796.         // line 382
  797.         $context["timezone"] = "Asia/Tokyo";
  798.         // line 383
  799.         $context["current_hour"] = twig_date_format_filter($this->env"now""H", (isset($context["timezone"]) || array_key_exists("timezone"$context) ? $context["timezone"] : (function () { throw new RuntimeError('Variable "timezone" does not exist.'383$this->source); })()));
  800.         // line 385
  801.         $context["day_of_week"] = twig_date_format_filter($this->env"now""w", (isset($context["timezone"]) || array_key_exists("timezone"$context) ? $context["timezone"] : (function () { throw new RuntimeError('Variable "timezone" does not exist.'385$this->source); })()));
  802.         // line 386
  803.         $context["is_weekend"] = (((isset($context["day_of_week"]) || array_key_exists("day_of_week"$context) ? $context["day_of_week"] : (function () { throw new RuntimeError('Variable "day_of_week" does not exist.'386$this->source); })()) == 0) || ((isset($context["day_of_week"]) || array_key_exists("day_of_week"$context) ? $context["day_of_week"] : (function () { throw new RuntimeError('Variable "day_of_week" does not exist.'386$this->source); })()) == 6));
  804.         // line 387
  805.         echo "
  806. ";
  807.         // line 396
  808.         if ((((isset($context["cart_restriction_enabled"]) || array_key_exists("cart_restriction_enabled"$context) ? $context["cart_restriction_enabled"] : (function () { throw new RuntimeError('Variable "cart_restriction_enabled" does not exist.'396$this->source); })()) == false) || (($this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("ROLE_USER") || !twig_in_filter(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.'396$this->source); })()), "id", [], "any"falsefalsefalse396), (isset($context["hiddenProductIds"]) || array_key_exists("hiddenProductIds"$context) ? $context["hiddenProductIds"] : (function () { throw new RuntimeError('Variable "hiddenProductIds" does not exist.'396$this->source); })()))) || (twig_in_filter(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.'396$this->source); })()), "id", [], "any"falsefalsefalse396), (isset($context["hiddenProductIds"]) || array_key_exists("hiddenProductIds"$context) ? $context["hiddenProductIds"] : (function () { throw new RuntimeError('Variable "hiddenProductIds" does not exist.'396$this->source); })())) && (((isset($context["is_weekend"]) || array_key_exists("is_weekend"$context) ? $context["is_weekend"] : (function () { throw new RuntimeError('Variable "is_weekend" does not exist.'396$this->source); })()) || ((isset($context["current_hour"]) || array_key_exists("current_hour"$context) ? $context["current_hour"] : (function () { throw new RuntimeError('Variable "current_hour" does not exist.'396$this->source); })()) >= 18)) || ((isset($context["current_hour"]) || array_key_exists("current_hour"$context) ? $context["current_hour"] : (function () { throw new RuntimeError('Variable "current_hour" does not exist.'396$this->source); })()) < 9)))))) {
  809.             // line 397
  810.             echo "
  811. <div id=\"role_user_hyouzi\" class=\"cart-button-area\">
  812. <form action=\"";
  813.             // line 399
  814.             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.'399$this->source); })()), "id", [], "any"falsefalsefalse399)]), "html"nulltrue);
  815.             echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  816. ";
  817.             // line 400
  818.             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.'400$this->source); })()), "stock_find", [], "any"falsefalsefalse400)) {
  819.                 // line 401
  820.                 echo "<div class=\"ec-productRole__actions\">
  821. ";
  822.                 // line 402
  823.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse402)) {
  824.                     // line 403
  825.                     echo "<div class=\"ec-select\">
  826. ";
  827.                     // line 404
  828.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'404$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse404), 'row');
  829.                     echo "
  830. ";
  831.                     // line 405
  832.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'405$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse405), 'errors');
  833.                     echo "
  834. </div>
  835. ";
  836.                 }
  837.                 // line 408
  838.                 echo "
  839. ";
  840.                 // line 409
  841.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse409)) {
  842.                     // line 410
  843.                     echo "<div class=\"ec-select\">
  844. ";
  845.                     // line 411
  846.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'411$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse411), 'row');
  847.                     echo "
  848. ";
  849.                     // line 412
  850.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'412$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse412), 'errors');
  851.                     echo "
  852. </div>
  853. ";
  854.                 }
  855.                 // line 415
  856.                 echo "
  857. <div class=\"ec-numberInput\"><span>";
  858.                 // line 416
  859.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  860.                 echo "</span>
  861. <div class=\"ec-select\">
  862. ";
  863.                 // line 418
  864.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'418$this->source); })()), "quantity", [], "any"falsefalsefalse418), 'widget');
  865.                 echo "
  866. ";
  867.                 // line 419
  868.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'419$this->source); })()), "quantity", [], "any"falsefalsefalse419), 'errors');
  869.                 echo "
  870. </div>
  871. <span class=\"small display\">在庫数及び販売制限数を設定しています。表示以上の数量は選べません</span>
  872. <span class=\"small display-non\">1種類につき1点ずつ</span>
  873. </div>
  874. </div>
  875. <div class=\"ec-productRole__btn\">
  876. <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  877. ";
  878.                 // line 427
  879.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  880.                 echo "
  881. </button>
  882. </div>
  883. ";
  884.             } else {
  885.                 // line 431
  886.                 echo "<div class=\"ec-productRole__btn\">
  887. <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  888. ";
  889.                 // line 433
  890.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  891.                 echo "
  892. </button>
  893. </div>
  894. ";
  895.             }
  896.             // line 437
  897.             echo "
  898. ";
  899.             // line 438
  900.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'438$this->source); })()), 'rest');
  901.             echo "
  902. </form>
  903. <div class=\"ec-modal\">
  904. <div class=\"ec-modal-overlay\">
  905. <div class=\"ec-modal-wrap\">
  906. <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  907.             // line 443
  908.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  909.             echo "\" alt=\"\"/></span></span>
  910. <div id=\"ec-modal-header\" class=\"text-center\">";
  911.             // line 444
  912.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  913.             echo "</div>
  914. <div class=\"ec-modal-box\">
  915. <div class=\"ec-role\">
  916. <span class=\"ec-inlineBtn--cancel\">";
  917.             // line 447
  918.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  919.             echo "</span>
  920. <a href=\"";
  921.             // line 448
  922.             echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  923.             echo "\" class=\"ec-inlineBtn--action\">";
  924.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  925.             echo "</a>
  926. </div>
  927. </div>
  928. </div>
  929. </div>
  930. </div>
  931. ";
  932.             // line 454
  933.             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.'454$this->source); })()), "option_favorite_product", [], "any"falsefalsefalse454)) {
  934.                 // line 455
  935.                 if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'455$this->source); })()) == false)) {
  936.                     // line 456
  937.                     echo "<form action=\"";
  938.                     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.'456$this->source); })()), "id", [], "any"falsefalsefalse456)]), "html"nulltrue);
  939.                     echo "\" method=\"post\">
  940. <div class=\"ec-productRole__btn\">
  941. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  942. ";
  943.                     // line 459
  944.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  945.                     echo "
  946. </button>
  947. </div>
  948. </form>
  949. ";
  950.                 } else {
  951.                     // line 464
  952.                     echo "<form action=\"";
  953.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("refine_delete_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.'464$this->source); })()), "id", [], "any"falsefalsefalse464)]), "html"nulltrue);
  954.                     echo "\" method=\"post\">
  955. <div class=\"ec-productRole__btn\">
  956. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel favorite_cancel\">
  957. ";
  958.                     // line 467
  959.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りから削除"), "html"nulltrue);
  960.                     echo "
  961. </button>
  962. </div>
  963. </form>
  964. ";
  965.                 }
  966.             }
  967.             // line 473
  968.             echo "</div>
  969. ";
  970.         } else {
  971.             // line 476
  972.             echo "<div class=\"add-cart-hikaiin cart-button-area\">
  973. <a href=\"/mypage/login\">ログインして購入/会員登録</a>
  974. </div>
  975. ";
  976.         }
  977.         // line 480
  978.         echo "<!--非会員カートボタン非表示ここまで-->\t\t\t\t\t
  979.                     <div class=\"ec-productRole__description\">";
  980.         // line 482
  981.         echo twig_nl2br(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.'482$this->source); })()), "description_detail", [], "any"falsefalsefalse482));
  982.         echo "
  983.                     </div>
  984.                 </div>
  985.             </div>
  986.         </div>
  987.         ";
  988.         // line 487
  989.         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.'487$this->source); })()), "freearea", [], "any"falsefalsefalse487)) {
  990.             // line 488
  991.             echo "             <div class=\"ec-productRole__description\">
  992.                  ";
  993.             // line 489
  994.             echo twig_include($this->env$contexttwig_template_from_string($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.'489$this->source); })()), "freearea", [], "any"falsefalsefalse489)));
  995.             echo "
  996.             </div>
  997.         ";
  998.         }
  999.         // line 492
  1000.         echo "    </div>
  1001.     
  1002. ";
  1003.         
  1004.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1005.         
  1006.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1007.     }
  1008.     public function getTemplateName()
  1009.     {
  1010.         return "Product/detail.twig";
  1011.     }
  1012.     public function isTraitable()
  1013.     {
  1014.         return false;
  1015.     }
  1016.     public function getDebugInfo()
  1017.     {
  1018.         return array (  1047 => 492,  1041 => 489,  1038 => 488,  1036 => 487,  1028 => 482,  1024 => 480,  1018 => 476,  1014 => 473,  1005 => 467,  998 => 464,  990 => 459,  983 => 456,  981 => 455,  979 => 454,  968 => 448,  964 => 447,  958 => 444,  954 => 443,  946 => 438,  943 => 437,  936 => 433,  932 => 431,  925 => 427,  914 => 419,  910 => 418,  905 => 416,  902 => 415,  896 => 412,  892 => 411,  889 => 410,  887 => 409,  884 => 408,  878 => 405,  874 => 404,  871 => 403,  869 => 402,  866 => 401,  864 => 400,  860 => 399,  856 => 397,  854 => 396,  851 => 387,  849 => 386,  847 => 385,  845 => 383,  843 => 382,  840 => 380,  838 => 379,  834 => 376,  830 => 374,  822 => 371,  807 => 369,  798 => 368,  781 => 367,  777 => 365,  773 => 364,  769 => 363,  766 => 362,  763 => 361,  761 => 360,  751 => 357,  747 => 356,  744 => 355,  741 => 354,  738 => 352,  732 => 349,  728 => 348,  725 => 347,  722 => 346,  716 => 343,  710 => 342,  707 => 341,  701 => 338,  697 => 337,  694 => 336,  692 => 335,  690 => 334,  687 => 333,  685 => 332,  682 => 331,  677 => 329,  670 => 328,  667 => 327,  663 => 325,  658 => 323,  649 => 322,  647 => 321,  643 => 320,  636 => 319,  634 => 318,  631 => 317,  628 => 316,  625 => 314,  614 => 312,  610 => 311,  607 => 310,  602 => 307,  599 => 306,  592 => 300,  573 => 298,  556 => 297,  552 => 295,  541 => 293,  519 => 291,  501 => 290,  491 => 284,  481 => 283,  466 => 277,  462 => 276,  458 => 275,  454 => 274,  450 => 272,  445 => 270,  440 => 269,  438 => 268,  433 => 267,  430 => 266,  420 => 264,  407 => 263,  399 => 262,  381 => 261,  376 => 259,  353 => 239,  343 => 232,  313 => 205,  308 => 202,  299 => 196,  295 => 194,  293 => 193,  290 => 192,  281 => 186,  277 => 184,  275 => 183,  209 => 119,  201 => 117,  199 => 116,  194 => 114,  191 => 113,  189 => 112,  175 => 101,  172 => 100,  162 => 99,  75 => 20,  65 => 19,  54 => 11,  52 => 17,  50 => 15,  37 => 11,);
  1019.     }
  1020.     public function getSourceContext()
  1021.     {
  1022.         return new Source("{#
  1023. This file is part of EC-CUBE
  1024. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1025. http://www.ec-cube.co.jp/
  1026. For the full copyright and license information, please view the LICENSE
  1027. file that was distributed with this source code.
  1028. #}
  1029. {% extends 'default_frame.twig' %}
  1030. {# ▼▼▼ カートボタン表示制限のON/OFFスイッチ ▼▼▼ #}
  1031. {# true = 制限を有効にする, false = 制限を解除する(常にカートボタンを表示) #}
  1032. {% set cart_restriction_enabled = false %}
  1033. {% set body_class = 'product_page' %}
  1034. {% block stylesheet %}
  1035.     <style>
  1036.         .slick-slider {
  1037.             margin-bottom: 30px;
  1038.         }
  1039.         .slick-dots {
  1040.             position: absolute;
  1041.             bottom: -45px;
  1042.             display: block;
  1043.             width: 100%;
  1044.             padding: 0;
  1045.             list-style: none;
  1046.             text-align: center;
  1047.         }
  1048.         .slick-dots li {
  1049.             position: relative;
  1050.             display: inline-block;
  1051.             width: 20px;
  1052.             height: 20px;
  1053.             margin: 0 5px;
  1054.             padding: 0;
  1055.             cursor: pointer;
  1056.         }
  1057.         .slick-dots li button {
  1058.             font-size: 0;
  1059.             line-height: 0;
  1060.             display: block;
  1061.             width: 20px;
  1062.             height: 20px;
  1063.             padding: 5px;
  1064.             cursor: pointer;
  1065.             color: transparent;
  1066.             border: 0;
  1067.             outline: none;
  1068.             background: transparent;
  1069.         }
  1070.         .slick-dots li button:hover,
  1071.         .slick-dots li button:focus {
  1072.             outline: none;
  1073.         }
  1074.         .slick-dots li button:hover:before,
  1075.         .slick-dots li button:focus:before {
  1076.             opacity: 1;
  1077.         }
  1078.         .slick-dots li button:before {
  1079.             content: \" \";
  1080.             line-height: 20px;
  1081.             position: absolute;
  1082.             top: 0;
  1083.             left: 0;
  1084.             width: 12px;
  1085.             height: 12px;
  1086.             text-align: center;
  1087.             opacity: .25;
  1088.             background-color: black;
  1089.             border-radius: 50%;
  1090.         }
  1091.         .slick-dots li.slick-active button:before {
  1092.             opacity: .75;
  1093.             background-color: black;
  1094.         }
  1095.         .slick-dots li button.thumbnail img {
  1096.             width: 0;
  1097.             height: 0;
  1098.         }
  1099.     </style>
  1100. {% endblock %}
  1101. {% block javascript %}
  1102.     <script>
  1103.         eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1104.         // 規格2に選択肢を割り当てる。
  1105.         function fnSetClassCategories(form, classcat_id2_selected) {
  1106.             var \$form = \$(form);
  1107.             var product_id = \$form.find('input[name=product_id]').val();
  1108.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1109.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1110.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1111.         }
  1112.         {% if form.classcategory_id2 is defined %}
  1113.         fnSetClassCategories(
  1114.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1115.         );
  1116.         {% elseif form.classcategory_id1 is defined %}
  1117.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1118.         {% endif %}
  1119.     </script>
  1120.     <script>
  1121.         \$(function() {
  1122.             // bfcache無効化
  1123.             \$(window).bind('pageshow', function(event) {
  1124.                 if (event.originalEvent.persisted) {
  1125.                     location.reload(true);
  1126.                 }
  1127.             });
  1128.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1129.             // img タグに width, height が付与されている.
  1130.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1131.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1132.             \$('.ec-grid2__cell').hide();
  1133.             var removeSize = function () {
  1134.                 \$('.slide-item').height('');
  1135.                 \$('.slide-item img')
  1136.                     .removeAttr('width')
  1137.                     .removeAttr('height')
  1138.                     .removeAttr('style');
  1139.             };
  1140.             var slickInitial = function(slick) {
  1141.                 \$('.ec-grid2__cell').fadeIn(1500);
  1142.                 var baseHeight = \$(slick.target).height();
  1143.                 var baseWidth = \$(slick.target).width();
  1144.                 var rate = baseWidth / baseHeight;
  1145.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1146.                 // transform を使用することでCLSの影響を受けないようにする
  1147.                 \$('.slide-item img')
  1148.                     .css(
  1149.                         {
  1150.                             'transform-origin': 'top left',
  1151.                             'transform': 'scaleY(' + rate + ')',
  1152.                             'transition': 'transform .1s'
  1153.                         }
  1154.                     );
  1155.                 // 正しいサイズに近くなったら属性を解除する
  1156.                 setTimeout(removeSize, 500);
  1157.             };
  1158.             \$('.item_visual').on('init', slickInitial);
  1159.             // リサイズ時は CLS の影響を受けないため属性を解除する
  1160.             \$(window).resize(removeSize);
  1161.             \$('.item_visual').slick({
  1162.                 dots: false,
  1163.                 arrows: false,
  1164.                 responsive: [{
  1165.                     breakpoint: 768,
  1166.                     settings: {
  1167.                         dots: true
  1168.                     }
  1169.                 }]
  1170.             });
  1171.             \$('.slideThumb').on('click', function() {
  1172.                 var index = \$(this).attr('data-index');
  1173.                 \$('.item_visual').slick('slickGoTo', index, false);
  1174.             })
  1175.         });
  1176.     </script>
  1177.     <script>
  1178.         \$(function() {
  1179.             \$('.add-cart').on('click', function(event) {
  1180.                 {% if form.classcategory_id1 is defined %}
  1181.                 // 規格1フォームの必須チェック
  1182.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1183.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1184.                     return true;
  1185.                 } else {
  1186.                     \$('#classcategory_id1')[0].setCustomValidity('');
  1187.                 }
  1188.                 {% endif %}
  1189.                 {% if form.classcategory_id2 is defined %}
  1190.                 // 規格2フォームの必須チェック
  1191.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1192.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1193.                     return true;
  1194.                 } else {
  1195.                     \$('#classcategory_id2')[0].setCustomValidity('');
  1196.                 }
  1197.                 {% endif %}
  1198.                 // 個数フォームのチェック
  1199.                 if (\$('#quantity').val() < 1) {
  1200.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1201.                     return true;
  1202.                 } else {
  1203.                     \$('#quantity')[0].setCustomValidity('');
  1204.                 }
  1205.                 event.preventDefault();
  1206.                 \$form = \$('#form1');
  1207.                 \$.ajax({
  1208.                     url: \$form.attr('action'),
  1209.                     type: \$form.attr('method'),
  1210.                     data: \$form.serialize(),
  1211.                     dataType: 'json',
  1212.                     beforeSend: function(xhr, settings) {
  1213.                         // Buttonを無効にする
  1214.                         \$('.add-cart').prop('disabled', true);
  1215.                     }
  1216.                 }).done(function(data) {
  1217.                     // レスポンス内のメッセージをalertで表示
  1218.                     \$.each(data.messages, function() {
  1219.                         \$('#ec-modal-header').html(this);
  1220.                     });
  1221.                     \$('.ec-modal').show()
  1222.                     // カートブロックを更新する
  1223.                     \$.ajax({
  1224.                         url: \"{{ url('block_cart') }}\",
  1225.                         type: 'GET',
  1226.                         dataType: 'html'
  1227.                     }).done(function(html) {
  1228.                         \$('.ec-headerRole__cart').html(html);
  1229.                     });
  1230.                 }).fail(function(data) {
  1231.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1232.                 }).always(function(data) {
  1233.                     // Buttonを有効にする
  1234.                     \$('.add-cart').prop('disabled', false);
  1235.                 });
  1236.             });
  1237.         });
  1238.         \$('.ec-modal-wrap').on('click', function(e) {
  1239.             // モーダル内の処理は外側にバブリングさせない
  1240.             e.stopPropagation();
  1241.         });
  1242.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  1243.             \$('.ec-modal').hide()
  1244.         });
  1245.     </script>
  1246.     <script type=\"application/ld+json\">
  1247.     {
  1248.         \"@context\": \"https://schema.org/\",
  1249.         \"@type\": \"Product\",
  1250.         \"name\": \"{{ Product.name }}\",
  1251.         \"image\": [
  1252.             {% for img in Product.ProductImage %}
  1253.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  1254.             {% else %}
  1255.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  1256.             {% endfor %}
  1257.         ],
  1258.         \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  1259.         {% if Product.code_min %}
  1260.         \"sku\": \"{{ Product.code_min }}\",
  1261.         \"gtin13\": \"{{ Product.code_min }}\",
  1262.         {% endif %}
  1263.         \"offers\": {
  1264.             \"@type\": \"Offer\",
  1265.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  1266.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  1267.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0 }},
  1268.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  1269.         }
  1270.     }
  1271.     </script>
  1272. {% endblock %}
  1273. {% block main %}
  1274.     <div class=\"ec-productRole product_{{ Product.id }}\">
  1275.         <div class=\"ec-grid2\">
  1276.             <div class=\"ec-grid2__cell\">
  1277.                 <div class=\"ec-sliderItemRole\">
  1278.                     <div class=\"item_visual\">
  1279.                         {% for ProductImage in Product.ProductImage %}
  1280.                             <div class=\"slide-item\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"{% if loop.index > 1 %} loading=\"lazy\"{% endif %}></div>
  1281.                         {% else %}
  1282.                             <div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"></div>
  1283.                         {% endfor %}
  1284.                     </div>
  1285.                     <div class=\"item_nav\">
  1286.                         {% for ProductImage in Product.ProductImage %}
  1287.                             <div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  1288.                         {% endfor %}
  1289.                     </div>
  1290.                 </div>
  1291.             </div>
  1292.             <div class=\"ec-grid2__cell\">
  1293.                 <div class=\"ec-productRole__profile\">
  1294.                     {# 商品名 #}
  1295.                     <div class=\"ec-productRole__title\">
  1296.                         <h1 class=\"ec-headingTitle\">{{ Product.name }}</h1>
  1297.                     </div>
  1298.                     {# タグ #}
  1299.                     <ul class=\"ec-productRole__tags\">
  1300.                         {% for Tag in Product.Tags %}
  1301.                             <li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  1302.                         {% endfor %}
  1303.                     </ul>
  1304.                     {# 通常価格 #}
  1305.                     {% if Product.hasProductClass -%}
  1306.                         <div class=\"ec-productRole__priceRegular\">
  1307.                             {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1308.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  1309.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1310.                             {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1311.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
  1312.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1313.                             {% endif %}
  1314.                         </div>
  1315.                     {% else %}
  1316.                         {% if Product.getPrice01Max is not null %}
  1317.                             <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  1318.                             <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1319.                         {% endif %}
  1320.                     {% endif %}
  1321.                     {# 販売価格 #}
  1322.                     <div class=\"ec-productRole__price\">
  1323.                         {% if Product.hasProductClass -%}
  1324.                             {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1325.                                 <div class=\"ec-price\">
  1326.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1327.                                     <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1328.                                 </div>
  1329.                             {% else %}
  1330.                                 <div class=\"ec-price\">
  1331.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
  1332.                                     <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1333.                                 </div>
  1334.                             {% endif %}
  1335.                         {% else %}
  1336.                             <div class=\"ec-price\">
  1337.                                 <span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1338.                                 <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1339.                             </div>
  1340.                         {% endif %}
  1341.                     </div>
  1342.                     {# GTINコード #}
  1343.                     {% if Product.code_min is not empty %}
  1344.                         <div class=\"ec-productRole__code\">
  1345.                             {{ 'GTINコード'|trans }}: 
  1346.                             <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  1347.                         </div>
  1348.                     {% endif %}
  1349.                     {# 関連カテゴリ #}
  1350.                     {% if Product.ProductCategories is not empty %}
  1351.                         <div class=\"ec-productRole__category\">
  1352.                             <div>{{ '関連カテゴリ'|trans }}</div>
  1353.                             {% for ProductCategory in Product.ProductCategories %}
  1354.                                 <ul>
  1355.                                     <li>
  1356.                                         {% for Category in ProductCategory.Category.path %}
  1357.                                             <a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  1358.                                             <span>></span>{% endif -%}
  1359.                                         {% endfor %}
  1360.                                     </li>
  1361.                                 </ul>
  1362.                             {% endfor %}
  1363.                         </div>
  1364.                     {% endif %}
  1365. <!--非会員カートボタン非表示-->\t
  1366. {# カートボタンを非表示にする商品IDのリストを定義します #}
  1367. {% set hiddenProductIds = [8, 9, 10, 11, 12, 16, 18, 21, 26, 29, 30, 40, 42, 43, 52, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 66, 67, 68, 69, 88, 94, 95, 96, 115, 116, 120, 123, 127, 128, 134, 135, 136, 138, 139, 140, 141, 143, 144, 145, 146, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 188, 189, 190, 194, 198, 210, 211, 212, 213, 217, 218, 219, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 303, 304] %}
  1368. {# -- 日時と曜日の判定 -- #}
  1369. {% set timezone = \"Asia/Tokyo\" %}
  1370. {% set current_hour = \"now\"|date(\"H\", timezone) %}
  1371. {# 曜日を数値で取得 (0:日曜, 6:土曜) #}
  1372. {% set day_of_week = \"now\"|date(\"w\", timezone) %}
  1373. {% set is_weekend = (day_of_week == 0 or day_of_week == 6) %}
  1374. {#
  1375. 下記の条件でカートボタンを表示します。
  1376. 1. 会員である (is_granted('ROLE_USER'))
  1377. 2. 非表示対象商品ではない (Product.id not in hiddenProductIds)
  1378. 3. 非表示対象商品だが、以下のいずれかの条件を満たす
  1379.    - 週末(土日)である
  1380.    - 指定時間内(18:00~翌9:00)である
  1381. #}
  1382. {% if cart_restriction_enabled == false or (is_granted('ROLE_USER') or (Product.id not in hiddenProductIds) or (Product.id in hiddenProductIds and (is_weekend or current_hour >= 18 or current_hour < 9))) %}
  1383. <div id=\"role_user_hyouzi\" class=\"cart-button-area\">
  1384. <form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  1385. {% if Product.stock_find %}
  1386. <div class=\"ec-productRole__actions\">
  1387. {% if form.classcategory_id1 is defined %}
  1388. <div class=\"ec-select\">
  1389. {{ form_row(form.classcategory_id1) }}
  1390. {{ form_errors(form.classcategory_id1) }}
  1391. </div>
  1392. {% endif %}
  1393. {% if form.classcategory_id2 is defined %}
  1394. <div class=\"ec-select\">
  1395. {{ form_row(form.classcategory_id2) }}
  1396. {{ form_errors(form.classcategory_id2) }}
  1397. </div>
  1398. {% endif %}
  1399. <div class=\"ec-numberInput\"><span>{{ '数量'|trans }}</span>
  1400. <div class=\"ec-select\">
  1401. {{ form_widget(form.quantity) }}
  1402. {{ form_errors(form.quantity) }}
  1403. </div>
  1404. <span class=\"small display\">在庫数及び販売制限数を設定しています。表示以上の数量は選べません</span>
  1405. <span class=\"small display-non\">1種類につき1点ずつ</span>
  1406. </div>
  1407. </div>
  1408. <div class=\"ec-productRole__btn\">
  1409. <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  1410. {{ 'カートに入れる'|trans }}
  1411. </button>
  1412. </div>
  1413. {% else %}
  1414. <div class=\"ec-productRole__btn\">
  1415. <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1416. {{ 'ただいま品切れ中です。'|trans }}
  1417. </button>
  1418. </div>
  1419. {% endif %}
  1420. {{ form_rest(form) }}
  1421. </form>
  1422. <div class=\"ec-modal\">
  1423. <div class=\"ec-modal-overlay\">
  1424. <div class=\"ec-modal-wrap\">
  1425. <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  1426. <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1427. <div class=\"ec-modal-box\">
  1428. <div class=\"ec-role\">
  1429. <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1430. <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  1431. </div>
  1432. </div>
  1433. </div>
  1434. </div>
  1435. </div>
  1436. {% if BaseInfo.option_favorite_product %}
  1437. {% if is_favorite == false %}
  1438. <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1439. <div class=\"ec-productRole__btn\">
  1440. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1441. {{ 'お気に入りに追加'|trans }}
  1442. </button>
  1443. </div>
  1444. </form>
  1445. {% else %}
  1446. <form action=\"{{ url('refine_delete_favorite', {id:Product.id}) }}\" method=\"post\">
  1447. <div class=\"ec-productRole__btn\">
  1448. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel favorite_cancel\">
  1449. {{ 'お気に入りから削除'|trans }}
  1450. </button>
  1451. </div>
  1452. </form>
  1453. {% endif %}
  1454. {% endif %}
  1455. </div>
  1456. {% else %}
  1457. {# 非会員で、hiddenProductIdsに含まれており、かつ時間外/平日である場合はこちらのブロックが表示されます #}
  1458. <div class=\"add-cart-hikaiin cart-button-area\">
  1459. <a href=\"/mypage/login\">ログインして購入/会員登録</a>
  1460. </div>
  1461. {% endif %}
  1462. <!--非会員カートボタン非表示ここまで-->\t\t\t\t\t
  1463.                     <div class=\"ec-productRole__description\">{{ Product.description_detail|raw|nl2br }}
  1464.                     </div>
  1465.                 </div>
  1466.             </div>
  1467.         </div>
  1468.         {% if Product.freearea %}
  1469.              <div class=\"ec-productRole__description\">
  1470.                  {{ include(template_from_string(Product.freearea)) }}
  1471.             </div>
  1472.         {% endif %}
  1473.     </div>
  1474.     
  1475. {% endblock %}""Product/detail.twig""/home/owl/owl-horie.com/public_html/test-eccube.owl-horie.com/app/template/cosme41/Product/detail.twig");
  1476.     }
  1477. }