var/cache/dev/twig/22/22ca044993eb1bd5837baa8d016bb2382c95582d37fa6299f03b780125e7ca87.php line 55

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