var/cache/dev/twig/10/102eba1d6a73d258b19b3827ff6b8da8.php line 55

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