var/cache/dev/twig/61/6160b1855e7372d361eed636a4c89d8695a32c2cd1381f29c905c88719d28039.php line 381

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