var/cache/dev/twig/a0/a088df7bfcf44295bdaae101ccd15dafcbb741a01dbd10d67b1f9d21fdcdbe05.php line 42

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