var/cache/dev/twig/35/3581d5a06c69e9fa0bcb76ffc3660abf.php line 55

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