var/cache/dev/twig/e4/e467aec619b9cdfbb972419c01c4f2ac.php line 42

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