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