var/cache/dev/twig/d1/d1ecd89c40dfff040460dae1e7c08be95dba313696943e8a502edec2ceebfb31.php line 40

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_96c563db9ada41512149594432039e6f0c776089bff10d591b9a54f63d158ce5 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.     }
  28.     protected function doGetParent(array $context)
  29.     {
  30.         // line 11
  31.         return "default_frame.twig";
  32.     }
  33.     protected function doDisplay(array $context, array $blocks = [])
  34.     {
  35.         $macros $this->macros;
  36.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  37.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  38.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         // line 13
  41.         $context["body_class"] = "product_page";
  42.         // line 11
  43.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  44.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  45.         
  46.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  47.         
  48.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  49.     }
  50.     // line 15
  51.     public function block_stylesheet($context, array $blocks = [])
  52.     {
  53.         $macros $this->macros;
  54.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  55.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  56.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  57.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         // line 16
  59.         echo "    <style>
  60.         .slick-slider {
  61.             margin-bottom: 30px;
  62.         }
  63.         .slick-dots {
  64.             position: absolute;
  65.             bottom: -45px;
  66.             display: block;
  67.             width: 100%;
  68.             padding: 0;
  69.             list-style: none;
  70.             text-align: center;
  71.         }
  72.         .slick-dots li {
  73.             position: relative;
  74.             display: inline-block;
  75.             width: 20px;
  76.             height: 20px;
  77.             margin: 0 5px;
  78.             padding: 0;
  79.             cursor: pointer;
  80.         }
  81.         .slick-dots li button {
  82.             font-size: 0;
  83.             line-height: 0;
  84.             display: block;
  85.             width: 20px;
  86.             height: 20px;
  87.             padding: 5px;
  88.             cursor: pointer;
  89.             color: transparent;
  90.             border: 0;
  91.             outline: none;
  92.             background: transparent;
  93.         }
  94.         .slick-dots li button:hover,
  95.         .slick-dots li button:focus {
  96.             outline: none;
  97.         }
  98.         .slick-dots li button:hover:before,
  99.         .slick-dots li button:focus:before {
  100.             opacity: 1;
  101.         }
  102.         .slick-dots li button:before {
  103.             content: \" \";
  104.             line-height: 20px;
  105.             position: absolute;
  106.             top: 0;
  107.             left: 0;
  108.             width: 12px;
  109.             height: 12px;
  110.             text-align: center;
  111.             opacity: .25;
  112.             background-color: black;
  113.             border-radius: 50%;
  114.         }
  115.         .slick-dots li.slick-active button:before {
  116.             opacity: .75;
  117.             background-color: black;
  118.         }
  119.         .slick-dots li button.thumbnail img {
  120.             width: 0;
  121.             height: 0;
  122.         }
  123.     </style>
  124. ";
  125.         
  126.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  127.         
  128.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  129.     }
  130.     // line 95
  131.     public function block_javascript($context, array $blocks = [])
  132.     {
  133.         $macros $this->macros;
  134.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  135.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  136.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  137.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  138.         // line 96
  139.         echo "    <script>
  140.         eccube.classCategories = ";
  141.         // line 97
  142.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'97$this->source); })()));
  143.         echo ";
  144.         // 規格2に選択肢を割り当てる。
  145.         function fnSetClassCategories(form, classcat_id2_selected) {
  146.             var \$form = \$(form);
  147.             var product_id = \$form.find('input[name=product_id]').val();
  148.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  149.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  150.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  151.         }
  152.         ";
  153.         // line 108
  154.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse108)) {
  155.             // line 109
  156.             echo "        fnSetClassCategories(
  157.             \$('#form1'), ";
  158.             // line 110
  159.             echo json_encode(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"falsefalsefalse110), "vars", [], "any"falsefalsefalse110), "value", [], "any"falsefalsefalse110));
  160.             echo "
  161.         );
  162.         ";
  163.         } elseif (twig_get_attribute($this->env$this->source,         // line 112
  164. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse112)) {
  165.             // line 113
  166.             echo "        eccube.checkStock(\$('#form1'), ";
  167.             echo 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.'113$this->source); })()), "id", [], "any"falsefalsefalse113), "html"nulltrue);
  168.             echo ", ";
  169.             echo json_encode(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"falsefalsefalse113), "vars", [], "any"falsefalsefalse113), "value", [], "any"falsefalsefalse113));
  170.             echo ", null);
  171.         ";
  172.         }
  173.         // line 115
  174.         echo "    </script>
  175.     <script>
  176.         \$(function() {
  177.             // bfcache無効化
  178.             \$(window).bind('pageshow', function(event) {
  179.                 if (event.originalEvent.persisted) {
  180.                     location.reload(true);
  181.                 }
  182.             });
  183.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  184.             // img タグに width, height が付与されている.
  185.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  186.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  187.             \$('.ec-grid2__cell').hide();
  188.             var removeSize = function () {
  189.                 \$('.slide-item').height('');
  190.                 \$('.slide-item img')
  191.                     .removeAttr('width')
  192.                     .removeAttr('height')
  193.                     .removeAttr('style');
  194.             };
  195.             var slickInitial = function(slick) {
  196.                 \$('.ec-grid2__cell').fadeIn(1500);
  197.                 var baseHeight = \$(slick.target).height();
  198.                 var baseWidth = \$(slick.target).width();
  199.                 var rate = baseWidth / baseHeight;
  200.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  201.                 // transform を使用することでCLSの影響を受けないようにする
  202.                 \$('.slide-item img')
  203.                     .css(
  204.                         {
  205.                             'transform-origin': 'top left',
  206.                             'transform': 'scaleY(' + rate + ')',
  207.                             'transition': 'transform .1s'
  208.                         }
  209.                     );
  210.                 // 正しいサイズに近くなったら属性を解除する
  211.                 setTimeout(removeSize, 500);
  212.             };
  213.             \$('.item_visual').on('init', slickInitial);
  214.             // リサイズ時は CLS の影響を受けないため属性を解除する
  215.             \$(window).resize(removeSize);
  216.             \$('.item_visual').slick({
  217.                 dots: false,
  218.                 arrows: false,
  219.                 responsive: [{
  220.                     breakpoint: 768,
  221.                     settings: {
  222.                         dots: true
  223.                     }
  224.                 }]
  225.             });
  226.             \$('.slideThumb').on('click', function() {
  227.                 var index = \$(this).attr('data-index');
  228.                 \$('.item_visual').slick('slickGoTo', index, false);
  229.             })
  230.                 if (window.matchMedia('(max-width: 699px)').matches) {
  231.                     \$('.product-photo__main').slick({
  232.                         slidesToShow: 1,
  233.                         slidesToScroll: 1,
  234.                         arrows: true,
  235.                         autoplay :false,
  236.                         pauseOnHover : false,
  237.                         fade: true,
  238.                         asNavFor: '.product-photo__sub'
  239.                     });
  240.                     \$('.product-photo__sub').slick({
  241.                         slidesToShow: 100,
  242.                         slidesToScroll: 1,
  243.                         arrows: false,
  244.                         dots: false,
  245.                         centerMode: false,
  246.                         focusOnSelect: true ,
  247.                         variableWidth:true,
  248.                         asNavFor: '.product-photo__main'
  249.                     });
  250.                     \$('.product-relatioin-list').slick({
  251.                         arrows: false,
  252.                         slidesToShow: 2,
  253.                         dots: true,
  254.                     });
  255.                 }else{
  256.                     \$('.product-photo__main').slick({
  257.                         slidesToShow: 1,
  258.                         slidesToScroll: 1,
  259.                         arrows: false,
  260.                         autoplay :false,
  261.                         pauseOnHover : false,
  262.                         fade: true,
  263.                         asNavFor: '.product-photo__sub'
  264.                     });
  265.                     \$('.product-photo__sub').slick({
  266.                         slidesToShow: 100,
  267.                         slidesToScroll: 1,
  268.                         arrows: false,
  269.                         dots: false,
  270.                         centerMode: false,
  271.                         focusOnSelect: true ,
  272.                         variableWidth:true,
  273.                         asNavFor: '.product-photo__main'
  274.                     });
  275.                     \$('.product-relatioin-list').slick({
  276.                         infinite: false,
  277.                         arrows: false,
  278.                         dots: false,
  279.                         speed: 300,
  280.                         autoplaySpeed: 5000,
  281.                         slidesToShow: 1,
  282.                         autoplay:false,
  283.                         variableWidth: true
  284.                     });
  285.                 }
  286.             });
  287.     </script>
  288.     <script>
  289.         \$(function() {
  290.             \$('.add-cart').on('click', function(event) {
  291.                 ";
  292.         // line 237
  293.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse237)) {
  294.             // line 238
  295.             echo "                // 規格1フォームの必須チェック
  296.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  297.                     \$('#classcategory_id1')[0].setCustomValidity('";
  298.             // line 240
  299.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  300.             echo "');
  301.                     return true;
  302.                 } else {
  303.                     \$('#classcategory_id1')[0].setCustomValidity('');
  304.                 }
  305.                 ";
  306.         }
  307.         // line 246
  308.         echo "
  309.                 ";
  310.         // line 247
  311.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse247)) {
  312.             // line 248
  313.             echo "                // 規格2フォームの必須チェック
  314.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  315.                     \$('#classcategory_id2')[0].setCustomValidity('";
  316.             // line 250
  317.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  318.             echo "');
  319.                     return true;
  320.                 } else {
  321.                     \$('#classcategory_id2')[0].setCustomValidity('');
  322.                 }
  323.                 ";
  324.         }
  325.         // line 256
  326.         echo "
  327.                 // 個数フォームのチェック
  328.                 if (\$('#quantity').val() < 1) {
  329.                     \$('#quantity')[0].setCustomValidity('";
  330.         // line 259
  331.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  332.         echo "');
  333.                     return true;
  334.                 } else {
  335.                     \$('#quantity')[0].setCustomValidity('');
  336.                 }
  337.                 event.preventDefault();
  338.                 \$form = \$('#form1');
  339.                 \$.ajax({
  340.                     url: \$form.attr('action'),
  341.                     type: \$form.attr('method'),
  342.                     data: \$form.serialize(),
  343.                     dataType: 'json',
  344.                     beforeSend: function(xhr, settings) {
  345.                         // Buttonを無効にする
  346.                         \$('.add-cart').prop('disabled', true);
  347.                     }
  348.                 }).done(function(data) {
  349.                     // レスポンス内のメッセージをalertで表示
  350.                     \$.each(data.messages, function() {
  351.                         \$('#ec-modal-header').text(this);
  352.                     });
  353.                     \$('.ec-modal').show()
  354.                     // カートブロックを更新する
  355.                     \$.ajax({
  356.                         url: \"";
  357.         // line 286
  358.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  359.         echo "\",
  360.                         type: 'GET',
  361.                         dataType: 'html'
  362.                     }).done(function(html) {
  363.                         \$('.ec-headerRole__cart').html(html);
  364.                     });
  365.                 }).fail(function(data) {
  366.                     alert('";
  367.         // line 293
  368.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  369.         echo "');
  370.                 }).always(function(data) {
  371.                     // Buttonを有効にする
  372.                     \$('.add-cart').prop('disabled', false);
  373.                 });
  374.             });
  375.         });
  376.         \$('.ec-modal-wrap').on('click', function(e) {
  377.             // モーダル内の処理は外側にバブリングさせない
  378.             e.stopPropagation();
  379.         });
  380.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  381.             \$('.ec-modal').hide()
  382.         });
  383.     </script>
  384.     <script type=\"application/ld+json\">
  385.     {
  386.         \"@context\": \"https://schema.org/\",
  387.         \"@type\": \"Product\",
  388.         \"name\": \"";
  389.         // line 313
  390.         echo 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.'313$this->source); })()), "name", [], "any"falsefalsefalse313), "html"nulltrue);
  391.         echo "\",
  392.         \"image\": [
  393.             ";
  394.         // line 315
  395.         $context['_parent'] = $context;
  396.         $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.'315$this->source); })()), "ProductImage", [], "any"falsefalsefalse315));
  397.         $context['_iterated'] = false;
  398.         $context['loop'] = [
  399.           'parent' => $context['_parent'],
  400.           'index0' => 0,
  401.           'index'  => 1,
  402.           'first'  => true,
  403.         ];
  404.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  405.             $length count($context['_seq']);
  406.             $context['loop']['revindex0'] = $length 1;
  407.             $context['loop']['revindex'] = $length;
  408.             $context['loop']['length'] = $length;
  409.             $context['loop']['last'] = === $length;
  410.         }
  411.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  412.             // line 316
  413.             echo "                \"";
  414.             echo twig_escape_filter($this->envtwig_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.'316$this->source); })()), "request", [], "any"falsefalsefalse316), "schemeAndHttpHost", [], "any"falsefalsefalse316), "html"nulltrue);
  415.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["img"], "save_image"), "html"nulltrue);
  416.             echo "\"";
  417.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse316)) {
  418.                 echo ",";
  419.             }
  420.             // line 317
  421.             echo "
  422.             ";
  423.             $context['_iterated'] = true;
  424.             ++$context['loop']['index0'];
  425.             ++$context['loop']['index'];
  426.             $context['loop']['first'] = false;
  427.             if (isset($context['loop']['length'])) {
  428.                 --$context['loop']['revindex0'];
  429.                 --$context['loop']['revindex'];
  430.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  431.             }
  432.         }
  433.         if (!$context['_iterated']) {
  434.             // line 319
  435.             echo "                \"";
  436.             echo twig_escape_filter($this->envtwig_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.'319$this->source); })()), "request", [], "any"falsefalsefalse319), "schemeAndHttpHost", [], "any"falsefalsefalse319), "html"nulltrue);
  437.             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);
  438.             echo "\"
  439.             ";
  440.         }
  441.         $_parent $context['_parent'];
  442.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  443.         $context array_intersect_key($context$_parent) + $_parent;
  444.         // line 321
  445.         echo "        ],
  446.         \"description\": \"";
  447.         // line 322
  448.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruefalse322)) ? (_twig_default_filter(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsefalse322), twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'322$this->source); })()), "description_detail", [], "any"falsefalsefalse322))) : (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'322$this->source); })()), "description_detail", [], "any"falsefalsefalse322))), ["
  449. => """ " => ""]), 0300), "html"nulltrue);
  450.         echo "\",
  451.         ";
  452.         // line 323
  453.         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.'323$this->source); })()), "code_min", [], "any"falsefalsefalse323)) {
  454.             // line 324
  455.             echo "        \"sku\": \"";
  456.             echo 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.'324$this->source); })()), "code_min", [], "any"falsefalsefalse324), "html"nulltrue);
  457.             echo "\",
  458.         ";
  459.         }
  460.         // line 326
  461.         echo "        \"offers\": {
  462.             \"@type\": \"Offer\",
  463.             \"url\": \"";
  464.         // line 328
  465.         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.'328$this->source); })()), "id", [], "any"falsefalsefalse328)]), "html"nulltrue);
  466.         echo "\",
  467.             \"priceCurrency\": \"";
  468.         // line 329
  469.         echo twig_escape_filter($this->envtwig_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.'329$this->source); })()), "currency", [], "any"falsefalsefalse329), "html"nulltrue);
  470.         echo "\",
  471.             \"price\": ";
  472.         // line 330
  473.         ((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.'330$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse330)) ? (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.'330$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse330), "html"nulltrue))) : (print (0)));
  474.         echo ",
  475.             \"availability\": \"";
  476.         // line 331
  477.         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.'331$this->source); })()), "stock_find", [], "any"falsefalsefalse331)) ? ("InStock") : ("OutOfStock"));
  478.         echo "\"
  479.         }
  480.     }
  481.     </script>
  482.     
  483.     <script src=\"/html/user_data/assets/js/lightbox/js/lightbox.min.js\"></script>
  484.     <link rel=\"stylesheet\" href=\"/html/user_data/assets/js//lightbox/css/lightbox.css\">
  485. ";
  486.         
  487.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  488.         
  489.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  490.     }
  491.     // line 340
  492.     public function block_main($context, array $blocks = [])
  493.     {
  494.         $macros $this->macros;
  495.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  496.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  497.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  498.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  499.         // line 341
  500.         echo "
  501. <div class=\"product-detail-body\">
  502. ";
  503.         // line 346
  504.         $context["Categories"] = twig_get_attribute($this->env$this->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Category"), "getList", [], "method"falsefalsefalse346);
  505.         // line 347
  506.         echo "
  507. <div class=\"product-container layout-container contents\">
  508. <ol class=\"topic-path\">
  509. ";
  510.         // line 352
  511.         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.'352$this->source); })()), "ProductCategories", [], "any"falsefalsefalse352))) {
  512.             // line 353
  513.             echo "        ";
  514.             $context['_parent'] = $context;
  515.             $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.'353$this->source); })()), "ProductCategories", [], "any"falsefalsefalse353));
  516.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  517.                 // line 354
  518.                 echo "            ";
  519.                 if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse354), "Parent", [], "any"falsefalsefalse354) && (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse354), "Parent", [], "any"falsefalsefalse354), "id", [], "any"falsefalsefalse354) == 8))) {
  520.                     // line 355
  521.                     echo "                    ";
  522.                     $context['_parent'] = $context;
  523.                     $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse355), "path", [], "any"falsefalsefalse355));
  524.                     foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  525.                         // line 356
  526.                         echo "                    <li><a href=\"";
  527.                         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  528.                         echo "?category_id=";
  529.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsefalse356), "html"nulltrue);
  530.                         echo "\">";
  531.                         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsefalse356), "html"nulltrue);
  532.                         echo "</a></li>
  533.                     ";
  534.                     }
  535.                     $_parent $context['_parent'];
  536.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  537.                     $context array_intersect_key($context$_parent) + $_parent;
  538.                     // line 358
  539.                     echo "                ";
  540.                 }
  541.             }
  542.             $_parent $context['_parent'];
  543.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  544.             $context array_intersect_key($context$_parent) + $_parent;
  545.             // line 360
  546.             echo "        <li>";
  547.             echo 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.'360$this->source); })()), "name", [], "any"falsefalsefalse360), "html"nulltrue);
  548.             echo "</li>
  549. ";
  550.         }
  551.         // line 362
  552.         echo "</ol>
  553. ";
  554.         // line 365
  555.         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.'365$this->source); })()), "ProductCategories", [], "any"falsefalsefalse365))) {
  556.             // line 366
  557.             echo "  ";
  558.             $context["categoryIds"] = [];
  559.             // line 367
  560.             echo "  ";
  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.'367$this->source); })()), "ProductCategories", [], "any"falsefalsefalse367));
  563.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  564.                 // line 368
  565.                 echo "    ";
  566.                 $context["categoryIds"] = twig_array_merge((isset($context["categoryIds"]) || array_key_exists("categoryIds"$context) ? $context["categoryIds"] : (function () { throw new RuntimeError('Variable "categoryIds" does not exist.'368$this->source); })()), [=> twig_get_attribute($this->env$this->source$context["ProductCategory"], "CategoryId", [], "any"falsefalsefalse368)]);
  567.                 // line 369
  568.                 echo "  ";
  569.             }
  570.             $_parent $context['_parent'];
  571.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  572.             $context array_intersect_key($context$_parent) + $_parent;
  573.             // line 370
  574.             echo "  <div id=\"data-product-detail\" class=\"product-cat-";
  575.             echo twig_escape_filter($this->envtwig_join_filter((isset($context["categoryIds"]) || array_key_exists("categoryIds"$context) ? $context["categoryIds"] : (function () { throw new RuntimeError('Variable "categoryIds" does not exist.'370$this->source); })()), " product-cat-"), "html"nulltrue);
  576.             echo " product product-detail\">
  577. ";
  578.         } else {
  579.             // line 372
  580.             echo "<div id=\"data-product-detail\" class=\"product product-detail\">
  581. ";
  582.         }
  583.         // line 374
  584.         echo "<div class=\"product-photo\">
  585. <ul class=\"product-photo__main\">
  586. ";
  587.         // line 376
  588.         $context['_parent'] = $context;
  589.         $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.'376$this->source); })()), "ProductImage", [], "any"falsefalsefalse376));
  590.         $context['_iterated'] = false;
  591.         $context['loop'] = [
  592.           'parent' => $context['_parent'],
  593.           'index0' => 0,
  594.           'index'  => 1,
  595.           'first'  => true,
  596.         ];
  597.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  598.             $length count($context['_seq']);
  599.             $context['loop']['revindex0'] = $length 1;
  600.             $context['loop']['revindex'] = $length;
  601.             $context['loop']['length'] = $length;
  602.             $context['loop']['last'] = === $length;
  603.         }
  604.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  605.             // line 377
  606.             echo "<li><a href=\"";
  607.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  608.             echo "\" data-lightbox=\"gallery\"><img alt=\"";
  609.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse377)) ? (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.'377$this->source); })()), "name", [], "any"falsefalsefalse377), "html"nulltrue))) : (print ("")));
  610.             echo "\" src=\"";
  611.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  612.             echo "\" id=\"data-item-photo-";
  613.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse377), "html"nulltrue);
  614.             echo "\" ";
  615.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse377) > 1)) {
  616.                 echo " loading=\"lazy\"";
  617.             }
  618.             echo " ></a></li>
  619. ";
  620.             $context['_iterated'] = true;
  621.             ++$context['loop']['index0'];
  622.             ++$context['loop']['index'];
  623.             $context['loop']['first'] = false;
  624.             if (isset($context['loop']['length'])) {
  625.                 --$context['loop']['revindex0'];
  626.                 --$context['loop']['revindex'];
  627.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  628.             }
  629.         }
  630.         if (!$context['_iterated']) {
  631.             // line 379
  632.             echo "<li><img alt=\"";
  633.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse379)) ? (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.'379$this->source); })()), "name", [], "any"falsefalsefalse379), "html"nulltrue))) : (print ("")));
  634.             echo "\" src=\"";
  635.             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);
  636.             echo "\" id=\"data-item-photo-1\"></li>
  637. ";
  638.         }
  639.         $_parent $context['_parent'];
  640.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  641.         $context array_intersect_key($context$_parent) + $_parent;
  642.         // line 381
  643.         echo "</ul>
  644. <div class=\"product-photo__bg\">
  645. <ul class=\"product-photo__sub\">
  646. ";
  647.         // line 384
  648.         $context['_parent'] = $context;
  649.         $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.'384$this->source); })()), "ProductImage", [], "any"falsefalsefalse384));
  650.         $context['loop'] = [
  651.           'parent' => $context['_parent'],
  652.           'index0' => 0,
  653.           'index'  => 1,
  654.           'first'  => true,
  655.         ];
  656.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  657.             $length count($context['_seq']);
  658.             $context['loop']['revindex0'] = $length 1;
  659.             $context['loop']['revindex'] = $length;
  660.             $context['loop']['length'] = $length;
  661.             $context['loop']['last'] = === $length;
  662.         }
  663.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  664.             // line 385
  665.             echo "<li data-index=\"";
  666.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsefalse385), "html"nulltrue);
  667.             echo "\"><img alt=\"\" src=\"";
  668.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  669.             echo "\" loading=\"lazy\"></li>
  670. ";
  671.             ++$context['loop']['index0'];
  672.             ++$context['loop']['index'];
  673.             $context['loop']['first'] = false;
  674.             if (isset($context['loop']['length'])) {
  675.                 --$context['loop']['revindex0'];
  676.                 --$context['loop']['revindex'];
  677.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  678.             }
  679.         }
  680.         $_parent $context['_parent'];
  681.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  682.         $context array_intersect_key($context$_parent) + $_parent;
  683.         // line 387
  684.         echo "</ul>
  685. </div>
  686. <!-- /.product-recommend-photo --></div>
  687. <div class=\"product-content\">
  688. <h1 id=\"data-product-name\" class=\"product__title\">";
  689.         // line 392
  690.         echo 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.'392$this->source); })()), "name", [], "any"falsefalsefalse392), "html"nulltrue);
  691.         echo "</h1>
  692. ";
  693.         // line 393
  694.         if ( !twig_test_empty($this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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"falsefalsefalse393), "wine_en"))) {
  695.             // line 394
  696.             echo "<p class=\"product__en\">
  697. ";
  698.             // line 395
  699.             echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'395$this->source); })()), "id", [], "any"falsefalsefalse395), "wine_en"), "html"nulltrue);
  700.             echo "
  701. </p>
  702. ";
  703.         }
  704.         // line 398
  705.         if (( !twig_test_empty($this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'398$this->source); })()), "id", [], "any"falsefalsefalse398), "wine_youryou")) ||  !twig_test_empty($this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'398$this->source); })()), "id", [], "any"falsefalsefalse398), "wine_year")))) {
  706.             // line 399
  707.             echo "<p class=\"product__size\">
  708. ";
  709.             // line 400
  710.             echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'400$this->source); })()), "id", [], "any"falsefalsefalse400), "wine_youryou"), "html"nulltrue);
  711.             echo " ";
  712.             echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'400$this->source); })()), "id", [], "any"falsefalsefalse400), "wine_year"), "html"nulltrue);
  713.             echo "
  714. </p>
  715. ";
  716.         }
  717.         // line 403
  718.         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.'403$this->source); })()), "description_detail", [], "any"falsefalsefalse403))) {
  719.             // line 404
  720.             echo "<p class=\"product__text\">
  721. ";
  722.             // line 405
  723.             echo twig_nl2br(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'405$this->source); })()), "description_detail", [], "any"falsefalsefalse405));
  724.             echo "
  725. </p>
  726. ";
  727.         }
  728.         // line 408
  729.         echo "
  730. ";
  731.         // line 409
  732.         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.'409$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse409)) && twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "getPrice02IncTaxMin", [], "any"truetruefalse409))) {
  733.             // line 410
  734.             echo "    ";
  735.             // line 411
  736.             echo "    ";
  737.             $context["regularPrice"] = twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'411$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse411);
  738.             // line 412
  739.             echo "    ";
  740.             $context["salePrice"] = twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'412$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse412);
  741.             // line 413
  742.             echo "
  743.     ";
  744.             // line 415
  745.             echo "    ";
  746.             $context["discountPercentage"] = ((((isset($context["regularPrice"]) || array_key_exists("regularPrice"$context) ? $context["regularPrice"] : (function () { throw new RuntimeError('Variable "regularPrice" does not exist.'415$this->source); })()) != 0)) ? (((((isset($context["regularPrice"]) || array_key_exists("regularPrice"$context) ? $context["regularPrice"] : (function () { throw new RuntimeError('Variable "regularPrice" does not exist.'415$this->source); })()) - (isset($context["salePrice"]) || array_key_exists("salePrice"$context) ? $context["salePrice"] : (function () { throw new RuntimeError('Variable "salePrice" does not exist.'415$this->source); })())) / (isset($context["regularPrice"]) || array_key_exists("regularPrice"$context) ? $context["regularPrice"] : (function () { throw new RuntimeError('Variable "regularPrice" does not exist.'415$this->source); })())) * 100)) : (0));
  747.             // line 416
  748.             echo "
  749.     ";
  750.             // line 418
  751.             echo "    <!--
  752.     ";
  753.             // line 419
  754.             if (((isset($context["discountPercentage"]) || array_key_exists("discountPercentage"$context) ? $context["discountPercentage"] : (function () { throw new RuntimeError('Variable "discountPercentage" does not exist.'419$this->source); })()) > 0)) {
  755.                 // line 420
  756.                 echo "        <p>";
  757.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env, (isset($context["discountPercentage"]) || array_key_exists("discountPercentage"$context) ? $context["discountPercentage"] : (function () { throw new RuntimeError('Variable "discountPercentage" does not exist.'420$this->source); })()), 0), "html"nulltrue);
  758.                 echo "% OFF</p>
  759.     ";
  760.             }
  761.             // line 422
  762.             echo "    -->
  763. ";
  764.         }
  765.         // line 424
  766.         echo "
  767. <p class=\"product__price product__price-detail\">
  768. <span id=\"data-product-price\">
  769. ";
  770.         // line 427
  771.         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.'427$this->source); })()), "hasProductClass", [], "any"falsefalsefalse427)) {
  772.             // line 428
  773.             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.'428$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse428) == 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.'428$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse428))) {
  774.                 // line 429
  775.                 echo "        ";
  776.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'429$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse429)), "html"nulltrue);
  777.                 echo "
  778.     ";
  779.             } else {
  780.                 // line 431
  781.                 echo "        ";
  782.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'431$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse431)), "html"nulltrue);
  783.                 echo " ~ ";
  784.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'431$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse431)), "html"nulltrue);
  785.                 echo "
  786.     ";
  787.             }
  788.         } else {
  789.             // line 434
  790.             echo "    ";
  791.             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'434$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse434)), "html"nulltrue);
  792.             echo "
  793. ";
  794.         }
  795.         // line 436
  796.         echo "</span>
  797.  <span class=\"product__price-tax\">
  798.  (
  799.  ";
  800.         // line 440
  801.         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.'440$this->source); })()), "hasProductClass", [], "any"falsefalsefalse440)) {
  802.             // line 441
  803.             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.'441$this->source); })()), "getPrice02Min", [], "any"falsefalsefalse441) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'441$this->source); })()), "getPrice02Max", [], "any"falsefalsefalse441))) {
  804.                 // line 442
  805.                 echo "        ";
  806.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'442$this->source); })()), "getPrice02Min", [], "any"falsefalsefalse442)), "html"nulltrue);
  807.                 echo "
  808.     ";
  809.             } else {
  810.                 // line 444
  811.                 echo "        ";
  812.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'444$this->source); })()), "getPrice02Min", [], "any"falsefalsefalse444)), "html"nulltrue);
  813.                 echo " ~ ";
  814.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'444$this->source); })()), "getPrice02Max", [], "any"falsefalsefalse444)), "html"nulltrue);
  815.                 echo "
  816.     ";
  817.             }
  818.         } else {
  819.             // line 447
  820.             echo "    ";
  821.             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(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.'447$this->source); })()), "getPrice02Min", [], "any"falsefalsefalse447)), "html"nulltrue);
  822.             echo "
  823. ";
  824.         }
  825.         // line 449
  826.         echo " )
  827. </span>
  828. </p>
  829. <input type=\"hidden\" id=\"data-product-url\" value=\"https://wineshop.salond.jp/products/detail/";
  830.         // line 453
  831.         echo 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.'453$this->source); })()), "id", [], "any"falsefalsefalse453), "html"nulltrue);
  832.         echo "\">
  833. <form action=\"";
  834.         // line 454
  835.         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.'454$this->source); })()), "id", [], "any"falsefalsefalse454)]), "html"nulltrue);
  836.         echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  837. ";
  838.         // line 455
  839.         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.'455$this->source); })()), "stock_find", [], "any"falsefalsefalse455)) {
  840.             // line 456
  841.             echo "<div class=\"ec-productRole__actions\">
  842. ";
  843.             // line 457
  844.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse457)) {
  845.                 // line 458
  846.                 echo "<div class=\"ec-select\">
  847. ";
  848.                 // line 459
  849.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'459$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse459), 'row');
  850.                 echo "
  851. ";
  852.                 // line 460
  853.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'460$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse460), 'errors');
  854.                 echo "
  855. </div>
  856. ";
  857.                 // line 462
  858.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse462)) {
  859.                     // line 463
  860.                     echo "<div class=\"ec-select\">
  861. ";
  862.                     // line 464
  863.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'464$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse464), 'row');
  864.                     echo "
  865. ";
  866.                     // line 465
  867.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'465$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse465), 'errors');
  868.                     echo "
  869. </div>
  870. ";
  871.                 }
  872.             }
  873.             // line 469
  874.             echo "<div class=\"ec-numberInput\"><span>";
  875.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  876.             echo "</span>
  877. ";
  878.             // line 470
  879.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'470$this->source); })()), "quantity", [], "any"falsefalsefalse470), 'widget');
  880.             echo "
  881. ";
  882.             // line 471
  883.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(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.'471$this->source); })()), "quantity", [], "any"falsefalsefalse471), 'errors');
  884.             echo "
  885. </div>
  886. </div>
  887. <div class=\"ec-productRole__btn\">
  888. <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  889. ";
  890.             // line 476
  891.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  892.             echo "
  893. </button>
  894. </div>
  895. ";
  896.         } else {
  897.             // line 480
  898.             echo "<div class=\"ec-productRole__btn\">
  899. <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  900. ";
  901.             // line 482
  902.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  903.             echo "
  904. </button>
  905. </div>
  906. ";
  907.         }
  908.         // line 486
  909.         echo "
  910. ";
  911.         // line 487
  912.         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'487$this->source); })()), 'rest');
  913.         echo "
  914. </form>
  915. <div class=\"ec-modal\">
  916. <div class=\"ec-modal-overlay\">
  917. <div class=\"ec-modal-wrap\">
  918. <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  919.         // line 492
  920.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  921.         echo "\" alt=\"\"/></span></span>
  922. <div id=\"ec-modal-header\" class=\"text-center\">";
  923.         // line 493
  924.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  925.         echo "</div>
  926. <div class=\"ec-modal-box\">
  927. <div class=\"ec-role\">
  928. <span class=\"ec-inlineBtn--cancel\">";
  929.         // line 496
  930.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  931.         echo "</span>
  932. <a href=\"";
  933.         // line 497
  934.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  935.         echo "\" class=\"ec-inlineBtn--action\">";
  936.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  937.         echo "</a>
  938. </div>
  939. </div>
  940. </div>
  941. </div>
  942. <!-- /.ec-modal --></div>
  943. <!--
  944. ";
  945.         // line 504
  946.         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.'504$this->source); })()), "option_favorite_product", [], "any"falsefalsefalse504)) {
  947.             // line 505
  948.             echo "<form action=\"";
  949.             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.'505$this->source); })()), "id", [], "any"falsefalsefalse505)]), "html"nulltrue);
  950.             echo "\" method=\"post\">
  951. <div class=\"ec-productRole__btn\">
  952. ";
  953.             // line 507
  954.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'507$this->source); })()) == false)) {
  955.                 // line 508
  956.                 echo "<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  957. ";
  958.                 // line 509
  959.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  960.                 echo "
  961. </button>
  962. ";
  963.             } else {
  964.                 // line 512
  965.                 echo "<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  966. disabled=\"disabled\">";
  967.                 // line 513
  968.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  969.                 echo "
  970. </button>
  971. ";
  972.             }
  973.             // line 516
  974.             echo "</div>
  975. </form>
  976. ";
  977.         }
  978.         // line 519
  979.         echo "-->
  980. <dl class=\"product__spec\">
  981. <dt>タイプ</dt>
  982. <dd>
  983. ";
  984.         // line 524
  985.         $context['_parent'] = $context;
  986.         $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.'524$this->source); })()), "ProductCategories", [], "any"falsefalsefalse524));
  987.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  988.             // line 525
  989.             echo "    ";
  990.             $context["Category"] = twig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse525);
  991.             // line 526
  992.             echo "    ";
  993.             if (( !(null === twig_get_attribute($this->env$this->source, (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'526$this->source); })()), "Parent", [], "any"falsefalsefalse526)) && (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'526$this->source); })()), "Parent", [], "any"falsefalsefalse526), "id", [], "any"falsefalsefalse526) == 8))) {
  994.                 // line 527
  995.                 echo "        <p>";
  996.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Category"]) || array_key_exists("Category"$context) ? $context["Category"] : (function () { throw new RuntimeError('Variable "Category" does not exist.'527$this->source); })()), "name", [], "any"falsefalsefalse527), "html"nulltrue);
  997.                 echo "</p>
  998.     ";
  999.             }
  1000.         }
  1001.         $_parent $context['_parent'];
  1002.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  1003.         $context array_intersect_key($context$_parent) + $_parent;
  1004.         // line 530
  1005.         echo "</dd>
  1006. <dt>品種</dt>
  1007. <dd>";
  1008.         // line 532
  1009.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'532$this->source); })()), "id", [], "any"falsefalsefalse532), "wine_hinshu"), "html"nulltrue);
  1010.         echo "</dd>
  1011. <dt>産地</dt>
  1012. <dd>";
  1013.         // line 534
  1014.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'534$this->source); })()), "id", [], "any"falsefalsefalse534), "wine_sanchi"), "html"nulltrue);
  1015.         echo "  | ";
  1016.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'534$this->source); })()), "id", [], "any"falsefalsefalse534), "wine_sanchi"), "html"nulltrue);
  1017.         echo " </dd>
  1018. <dt>栽培/醸造</dt>
  1019. <dd>";
  1020.         // line 536
  1021.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'536$this->source); })()), "id", [], "any"falsefalsefalse536), "wine_cultivation"), "html"nulltrue);
  1022.         echo "</dd>
  1023. <dt>生産者</dt>
  1024. <dd>";
  1025.         // line 538
  1026.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'538$this->source); })()), "id", [], "any"falsefalsefalse538), "wine_seisan"), "html"nulltrue);
  1027.         echo "</dd>
  1028. <dt>インポーター</dt>
  1029. <dd>";
  1030.         // line 540
  1031.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'540$this->source); })()), "id", [], "any"falsefalsefalse540), "wine_importer"), "html"nulltrue);
  1032.         echo " </dd>
  1033. <dt>アルコール度数</dt>
  1034. <dd>";
  1035.         // line 542
  1036.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'542$this->source); })()), "id", [], "any"falsefalsefalse542), "wine_per"), "html"nulltrue);
  1037.         echo "</dd>
  1038. </dl>
  1039. <!-- /.product-content --></div>
  1040. <!-- /.product --></div>
  1041. <section class=\"product-profile product-section\">
  1042. <h2 class=\"product-profile__title product-section__title\"><span>01.</span>商品の紹介</h2>
  1043. <div class=\"product-profile-content\">
  1044. ";
  1045.         // line 552
  1046.         if ( !twig_test_empty($this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'552$this->source); })()), "id", [], "any"falsefalsefalse552), "wine_copy"))) {
  1047.             // line 553
  1048.             echo "<p class=\"product-profile-content__lede\">
  1049. ";
  1050.             // line 554
  1051.             echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'554$this->source); })()), "id", [], "any"falsefalsefalse554), "wine_copy"), "html"nulltrue);
  1052.             echo "
  1053. </p>
  1054. ";
  1055.         }
  1056.         // line 557
  1057.         echo "<p class=\"product-profile-content__text\">
  1058. ";
  1059.         // line 558
  1060.         echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'558$this->source); })()), "id", [], "any"falsefalsefalse558), "wine_setsumei"), "html"nulltrue);
  1061.         echo "
  1062. </p>
  1063. <!-- /.product-profile-content --></div>
  1064. ";
  1065.         // line 562
  1066.         if ( !twig_test_empty($this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'562$this->source); })()), "id", [], "any"falsefalsefalse562), "wine_dish"))) {
  1067.             // line 563
  1068.             echo "<section class=\"product-meal\">
  1069. <h3 class=\"product-meal__title\">料理を合わせるなら</h3>
  1070. <p class=\"product-meal__list\">
  1071. ";
  1072.             // line 566
  1073.             echo twig_escape_filter($this->env$this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'566$this->source); })()), "id", [], "any"falsefalsefalse566), "wine_dish"), "html"nulltrue);
  1074.             echo "
  1075. <!-- /.product-meal__list --></p>
  1076. </section>
  1077. ";
  1078.         }
  1079.         // line 570
  1080.         echo "<!-- /.product-section --></section>
  1081. ";
  1082.         // line 573
  1083.         $context["wineScene"] = $this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'573$this->source); })()), "id", [], "any"falsefalsefalse573), "wine_scene");
  1084.         // line 574
  1085.         if (((isset($context["wineScene"]) || array_key_exists("wineScene"$context) ? $context["wineScene"] : (function () { throw new RuntimeError('Variable "wineScene" does not exist.'574$this->source); })()) == "しっかり冷やしてアウトドアシーンに")) {
  1086.             // line 575
  1087.             echo "<section class=\"product-scene product-section\">
  1088. <h2 class=\"product-scene__title product-section__title\"><span>02.</span>おすすめのシーン</h2>
  1089. <div class=\"product-scene-content product-scene-content__scene1\">
  1090. <div class=\"product-scene-content__heading\">SCENE</div>
  1091. <div class=\"product-scene-content__title\">_LUNCH WITH MY FRIENDS</div>
  1092. <p class=\"product-scene-content__text\">
  1093. 気分のいいお昼に親友との<br>
  1094. ランチにほろ酔い気分
  1095. </p>
  1096. <!-- /.product-scene-content--></div>
  1097. <!-- /.product-section --></section>
  1098. ";
  1099.         }
  1100.         // line 589
  1101.         echo "
  1102. <section class=\"product-gift product-section\">
  1103. <h2 class=\"product-gift__title product-section__title\"><span>03.</span>ギフトに</h2>
  1104. <div class=\"product-gift-content\">
  1105. <p class=\"product-gift-content__lede\">
  1106. あの人にも贈りたい<br>
  1107. Salon de Natureのギフトラインナップ。
  1108. </p>
  1109. <p class=\"product-gift-content__text\">
  1110. センスのいいあの人へのプレゼントに。<br>
  1111. 友人とのホームパーティの手土産に。<br>
  1112. 大切な人への特別な日の贈り物に。<br>
  1113. <br>
  1114. ギフト箱、手提げ袋、メッセージカード、相手やシーンに合わせた様々なギフトの形をご用意しています。
  1115. </p>
  1116. <!-- /.product-gift-content--></div>
  1117. <ul class=\"product-gift__item\">
  1118. <li>
  1119. <img src=\"/html/user_data/assets/img/product/detail/gift/pic--01.jpg\" alt=\"ギフトボックス\">
  1120. <strong>ギフトボックス</strong>
  1121. <span>¥550 (税込)</span>
  1122. </li>
  1123. <li>
  1124. <img src=\"/html/user_data/assets/img/product/detail/gift/pic--02.jpg\" alt=\"ギフトボックス\">
  1125. <strong>手提げショッパー袋</strong>
  1126. <span>¥220 (税込)</span>
  1127. </li>
  1128. </ul>
  1129. <!-- /.product-section --></section>
  1130. ";
  1131.         // line 625
  1132.         $context["wine_relation"] = $this->extensions['Plugin\ProductField\Twig\Extension\EccubeExtension']->getProduct_field(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.'625$this->source); })()), "id", [], "any"falsefalsefalse625), "wine_relation");
  1133.         // line 626
  1134.         echo "
  1135. ";
  1136.         // line 627
  1137.         if ( !twig_test_empty((isset($context["wine_relation"]) || array_key_exists("wine_relation"$context) ? $context["wine_relation"] : (function () { throw new RuntimeError('Variable "wine_relation" does not exist.'627$this->source); })()))) {
  1138.             // line 628
  1139.             echo "
  1140. <section class=\"product-relation\">
  1141. <h2 class=\"product-relation__title\">OTHERS LIST <a href=\"https://wineshop.salond.jp/products/list\"><img alt=\"詳細へ\" src=\"/html/user_data/assets/img/product/detail/relation/pic--arrow.svg\"></a></h2>
  1142. <p class=\"product-relation__area\">
  1143. Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , 
  1144. </p>
  1145. <ul class=\"product-relatioin-list\">
  1146.     ";
  1147.             // line 636
  1148.             $context['_parent'] = $context;
  1149.             $context['_seq'] = twig_ensure_traversable((isset($context["wine_relation"]) || array_key_exists("wine_relation"$context) ? $context["wine_relation"] : (function () { throw new RuntimeError('Variable "wine_relation" does not exist.'636$this->source); })()));
  1150.             foreach ($context['_seq'] as $context["_key"] => $context["add_loop"]) {
  1151.                 // line 637
  1152.                 echo "    <li>
  1153.     <a href=\"";
  1154.                 // line 638
  1155.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["add_loop"], "id", [], "any"falsefalsefalse638)]), "html"nulltrue);
  1156.                 echo "\">
  1157.     <img class=\"product-list__pic\" src=\"";
  1158.                 // line 639
  1159.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(twig_get_attribute($this->env$this->source$context["add_loop"], "MainListImage", [], "any"falsefalsefalse639)), "save_image"), "html"nulltrue);
  1160.                 echo "\" alt=\"";
  1161.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["add_loop"], "name", [], "any"falsefalsefalse639), "html"nulltrue);
  1162.                 echo "\">
  1163.     <p class=\"product-list__title\">
  1164.     ";
  1165.                 // line 641
  1166.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["add_loop"], "name", [], "any"falsefalsefalse641), "html"nulltrue);
  1167.                 echo "
  1168.     </p>
  1169.     <span class=\"product-list__price\">
  1170.     ";
  1171.                 // line 644
  1172.                 if (twig_get_attribute($this->env$this->source$context["add_loop"], "hasProductClass", [], "any"falsefalsefalse644)) {
  1173.                     // line 645
  1174.                     if ((twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMin", [], "any"falsefalsefalse645) == twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMax", [], "any"falsefalsefalse645))) {
  1175.                         // line 646
  1176.                         echo "            ";
  1177.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMin", [], "any"falsefalsefalse646)), "html"nulltrue);
  1178.                         echo "
  1179.         ";
  1180.                     } else {
  1181.                         // line 648
  1182.                         echo "            ";
  1183.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMin", [], "any"falsefalsefalse648)), "html"nulltrue);
  1184.                         echo " ~ ";
  1185.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMax", [], "any"falsefalsefalse648)), "html"nulltrue);
  1186.                         echo "
  1187.         ";
  1188.                     }
  1189.                     // line 650
  1190.                     echo "    ";
  1191.                 } else {
  1192.                     // line 651
  1193.                     echo "        ";
  1194.                     echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source$context["add_loop"], "getPrice02IncTaxMin", [], "any"falsefalsefalse651)), "html"nulltrue);
  1195.                     echo "
  1196.     ";
  1197.                 }
  1198.                 // line 653
  1199.                 echo "    <span>(税込み)</span>
  1200.     </span>
  1201.     </a>
  1202.     </li>
  1203.     ";
  1204.             }
  1205.             $_parent $context['_parent'];
  1206.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['add_loop'], $context['_parent'], $context['loop']);
  1207.             $context array_intersect_key($context$_parent) + $_parent;
  1208.             // line 658
  1209.             echo "
  1210. <!-- /.product-list-wrap --></ul>
  1211. </section>
  1212. ";
  1213.         }
  1214.         // line 663
  1215.         echo "
  1216. ";
  1217.         // line 665
  1218.         echo twig_include($this->env$context"Block/subsc.twig");
  1219.         echo "
  1220. ";
  1221.         // line 667
  1222.         echo twig_include($this->env$context"Block/knowwine.twig");
  1223.         echo "
  1224.     
  1225. <!-- /.product-container --></div>
  1226. <!-- /.product-red --></div>
  1227. ";
  1228.         
  1229.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  1230.         
  1231.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  1232.     }
  1233.     public function getTemplateName()
  1234.     {
  1235.         return "Product/detail.twig";
  1236.     }
  1237.     public function isTraitable()
  1238.     {
  1239.         return false;
  1240.     }
  1241.     public function getDebugInfo()
  1242.     {
  1243.         return array (  1297 => 667,  1292 => 665,  1288 => 663,  1281 => 658,  1271 => 653,  1265 => 651,  1262 => 650,  1254 => 648,  1248 => 646,  1246 => 645,  1244 => 644,  1238 => 641,  1231 => 639,  1227 => 638,  1224 => 637,  1220 => 636,  1210 => 628,  1208 => 627,  1205 => 626,  1203 => 625,  1165 => 589,  1149 => 575,  1147 => 574,  1145 => 573,  1140 => 570,  1133 => 566,  1128 => 563,  1126 => 562,  1119 => 558,  1116 => 557,  1110 => 554,  1107 => 553,  1105 => 552,  1092 => 542,  1087 => 540,  1082 => 538,  1077 => 536,  1070 => 534,  1065 => 532,  1061 => 530,  1051 => 527,  1048 => 526,  1045 => 525,  1041 => 524,  1034 => 519,  1029 => 516,  1023 => 513,  1020 => 512,  1014 => 509,  1011 => 508,  1009 => 507,  1003 => 505,  1001 => 504,  989 => 497,  985 => 496,  979 => 493,  975 => 492,  967 => 487,  964 => 486,  957 => 482,  953 => 480,  946 => 476,  938 => 471,  934 => 470,  929 => 469,  922 => 465,  918 => 464,  915 => 463,  913 => 462,  908 => 460,  904 => 459,  901 => 458,  899 => 457,  896 => 456,  894 => 455,  890 => 454,  886 => 453,  880 => 449,  874 => 447,  865 => 444,  859 => 442,  857 => 441,  855 => 440,  849 => 436,  843 => 434,  834 => 431,  828 => 429,  826 => 428,  824 => 427,  819 => 424,  815 => 422,  809 => 420,  807 => 419,  804 => 418,  801 => 416,  798 => 415,  795 => 413,  792 => 412,  789 => 411,  787 => 410,  785 => 409,  782 => 408,  776 => 405,  773 => 404,  771 => 403,  763 => 400,  760 => 399,  758 => 398,  752 => 395,  749 => 394,  747 => 393,  743 => 392,  736 => 387,  717 => 385,  700 => 384,  695 => 381,  684 => 379,  658 => 377,  640 => 376,  636 => 374,  632 => 372,  626 => 370,  620 => 369,  617 => 368,  612 => 367,  609 => 366,  607 => 365,  603 => 362,  597 => 360,  590 => 358,  577 => 356,  572 => 355,  569 => 354,  564 => 353,  562 => 352,  556 => 347,  554 => 346,  547 => 341,  537 => 340,  519 => 331,  515 => 330,  511 => 329,  507 => 328,  503 => 326,  497 => 324,  495 => 323,  490 => 322,  487 => 321,  477 => 319,  463 => 317,  455 => 316,  437 => 315,  432 => 313,  409 => 293,  399 => 286,  369 => 259,  364 => 256,  355 => 250,  351 => 248,  349 => 247,  346 => 246,  337 => 240,  333 => 238,  331 => 237,  207 => 115,  199 => 113,  197 => 112,  192 => 110,  189 => 109,  187 => 108,  173 => 97,  170 => 96,  160 => 95,  73 => 16,  63 => 15,  52 => 11,  50 => 13,  37 => 11,);
  1244.     }
  1245.     public function getSourceContext()
  1246.     {
  1247.         return new Source("{#
  1248. This file is part of EC-CUBE
  1249. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1250. http://www.ec-cube.co.jp/
  1251. For the full copyright and license information, please view the LICENSE
  1252. file that was distributed with this source code.
  1253. #}
  1254. {% extends 'default_frame.twig' %}
  1255. {% set body_class = 'product_page' %}
  1256. {% block stylesheet %}
  1257.     <style>
  1258.         .slick-slider {
  1259.             margin-bottom: 30px;
  1260.         }
  1261.         .slick-dots {
  1262.             position: absolute;
  1263.             bottom: -45px;
  1264.             display: block;
  1265.             width: 100%;
  1266.             padding: 0;
  1267.             list-style: none;
  1268.             text-align: center;
  1269.         }
  1270.         .slick-dots li {
  1271.             position: relative;
  1272.             display: inline-block;
  1273.             width: 20px;
  1274.             height: 20px;
  1275.             margin: 0 5px;
  1276.             padding: 0;
  1277.             cursor: pointer;
  1278.         }
  1279.         .slick-dots li button {
  1280.             font-size: 0;
  1281.             line-height: 0;
  1282.             display: block;
  1283.             width: 20px;
  1284.             height: 20px;
  1285.             padding: 5px;
  1286.             cursor: pointer;
  1287.             color: transparent;
  1288.             border: 0;
  1289.             outline: none;
  1290.             background: transparent;
  1291.         }
  1292.         .slick-dots li button:hover,
  1293.         .slick-dots li button:focus {
  1294.             outline: none;
  1295.         }
  1296.         .slick-dots li button:hover:before,
  1297.         .slick-dots li button:focus:before {
  1298.             opacity: 1;
  1299.         }
  1300.         .slick-dots li button:before {
  1301.             content: \" \";
  1302.             line-height: 20px;
  1303.             position: absolute;
  1304.             top: 0;
  1305.             left: 0;
  1306.             width: 12px;
  1307.             height: 12px;
  1308.             text-align: center;
  1309.             opacity: .25;
  1310.             background-color: black;
  1311.             border-radius: 50%;
  1312.         }
  1313.         .slick-dots li.slick-active button:before {
  1314.             opacity: .75;
  1315.             background-color: black;
  1316.         }
  1317.         .slick-dots li button.thumbnail img {
  1318.             width: 0;
  1319.             height: 0;
  1320.         }
  1321.     </style>
  1322. {% endblock %}
  1323. {% block javascript %}
  1324.     <script>
  1325.         eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1326.         // 規格2に選択肢を割り当てる。
  1327.         function fnSetClassCategories(form, classcat_id2_selected) {
  1328.             var \$form = \$(form);
  1329.             var product_id = \$form.find('input[name=product_id]').val();
  1330.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1331.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1332.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1333.         }
  1334.         {% if form.classcategory_id2 is defined %}
  1335.         fnSetClassCategories(
  1336.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1337.         );
  1338.         {% elseif form.classcategory_id1 is defined %}
  1339.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1340.         {% endif %}
  1341.     </script>
  1342.     <script>
  1343.         \$(function() {
  1344.             // bfcache無効化
  1345.             \$(window).bind('pageshow', function(event) {
  1346.                 if (event.originalEvent.persisted) {
  1347.                     location.reload(true);
  1348.                 }
  1349.             });
  1350.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1351.             // img タグに width, height が付与されている.
  1352.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1353.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1354.             \$('.ec-grid2__cell').hide();
  1355.             var removeSize = function () {
  1356.                 \$('.slide-item').height('');
  1357.                 \$('.slide-item img')
  1358.                     .removeAttr('width')
  1359.                     .removeAttr('height')
  1360.                     .removeAttr('style');
  1361.             };
  1362.             var slickInitial = function(slick) {
  1363.                 \$('.ec-grid2__cell').fadeIn(1500);
  1364.                 var baseHeight = \$(slick.target).height();
  1365.                 var baseWidth = \$(slick.target).width();
  1366.                 var rate = baseWidth / baseHeight;
  1367.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1368.                 // transform を使用することでCLSの影響を受けないようにする
  1369.                 \$('.slide-item img')
  1370.                     .css(
  1371.                         {
  1372.                             'transform-origin': 'top left',
  1373.                             'transform': 'scaleY(' + rate + ')',
  1374.                             'transition': 'transform .1s'
  1375.                         }
  1376.                     );
  1377.                 // 正しいサイズに近くなったら属性を解除する
  1378.                 setTimeout(removeSize, 500);
  1379.             };
  1380.             \$('.item_visual').on('init', slickInitial);
  1381.             // リサイズ時は CLS の影響を受けないため属性を解除する
  1382.             \$(window).resize(removeSize);
  1383.             \$('.item_visual').slick({
  1384.                 dots: false,
  1385.                 arrows: false,
  1386.                 responsive: [{
  1387.                     breakpoint: 768,
  1388.                     settings: {
  1389.                         dots: true
  1390.                     }
  1391.                 }]
  1392.             });
  1393.             \$('.slideThumb').on('click', function() {
  1394.                 var index = \$(this).attr('data-index');
  1395.                 \$('.item_visual').slick('slickGoTo', index, false);
  1396.             })
  1397.                 if (window.matchMedia('(max-width: 699px)').matches) {
  1398.                     \$('.product-photo__main').slick({
  1399.                         slidesToShow: 1,
  1400.                         slidesToScroll: 1,
  1401.                         arrows: true,
  1402.                         autoplay :false,
  1403.                         pauseOnHover : false,
  1404.                         fade: true,
  1405.                         asNavFor: '.product-photo__sub'
  1406.                     });
  1407.                     \$('.product-photo__sub').slick({
  1408.                         slidesToShow: 100,
  1409.                         slidesToScroll: 1,
  1410.                         arrows: false,
  1411.                         dots: false,
  1412.                         centerMode: false,
  1413.                         focusOnSelect: true ,
  1414.                         variableWidth:true,
  1415.                         asNavFor: '.product-photo__main'
  1416.                     });
  1417.                     \$('.product-relatioin-list').slick({
  1418.                         arrows: false,
  1419.                         slidesToShow: 2,
  1420.                         dots: true,
  1421.                     });
  1422.                 }else{
  1423.                     \$('.product-photo__main').slick({
  1424.                         slidesToShow: 1,
  1425.                         slidesToScroll: 1,
  1426.                         arrows: false,
  1427.                         autoplay :false,
  1428.                         pauseOnHover : false,
  1429.                         fade: true,
  1430.                         asNavFor: '.product-photo__sub'
  1431.                     });
  1432.                     \$('.product-photo__sub').slick({
  1433.                         slidesToShow: 100,
  1434.                         slidesToScroll: 1,
  1435.                         arrows: false,
  1436.                         dots: false,
  1437.                         centerMode: false,
  1438.                         focusOnSelect: true ,
  1439.                         variableWidth:true,
  1440.                         asNavFor: '.product-photo__main'
  1441.                     });
  1442.                     \$('.product-relatioin-list').slick({
  1443.                         infinite: false,
  1444.                         arrows: false,
  1445.                         dots: false,
  1446.                         speed: 300,
  1447.                         autoplaySpeed: 5000,
  1448.                         slidesToShow: 1,
  1449.                         autoplay:false,
  1450.                         variableWidth: true
  1451.                     });
  1452.                 }
  1453.             });
  1454.     </script>
  1455.     <script>
  1456.         \$(function() {
  1457.             \$('.add-cart').on('click', function(event) {
  1458.                 {% if form.classcategory_id1 is defined %}
  1459.                 // 規格1フォームの必須チェック
  1460.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1461.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1462.                     return true;
  1463.                 } else {
  1464.                     \$('#classcategory_id1')[0].setCustomValidity('');
  1465.                 }
  1466.                 {% endif %}
  1467.                 {% if form.classcategory_id2 is defined %}
  1468.                 // 規格2フォームの必須チェック
  1469.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1470.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1471.                     return true;
  1472.                 } else {
  1473.                     \$('#classcategory_id2')[0].setCustomValidity('');
  1474.                 }
  1475.                 {% endif %}
  1476.                 // 個数フォームのチェック
  1477.                 if (\$('#quantity').val() < 1) {
  1478.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1479.                     return true;
  1480.                 } else {
  1481.                     \$('#quantity')[0].setCustomValidity('');
  1482.                 }
  1483.                 event.preventDefault();
  1484.                 \$form = \$('#form1');
  1485.                 \$.ajax({
  1486.                     url: \$form.attr('action'),
  1487.                     type: \$form.attr('method'),
  1488.                     data: \$form.serialize(),
  1489.                     dataType: 'json',
  1490.                     beforeSend: function(xhr, settings) {
  1491.                         // Buttonを無効にする
  1492.                         \$('.add-cart').prop('disabled', true);
  1493.                     }
  1494.                 }).done(function(data) {
  1495.                     // レスポンス内のメッセージをalertで表示
  1496.                     \$.each(data.messages, function() {
  1497.                         \$('#ec-modal-header').text(this);
  1498.                     });
  1499.                     \$('.ec-modal').show()
  1500.                     // カートブロックを更新する
  1501.                     \$.ajax({
  1502.                         url: \"{{ url('block_cart') }}\",
  1503.                         type: 'GET',
  1504.                         dataType: 'html'
  1505.                     }).done(function(html) {
  1506.                         \$('.ec-headerRole__cart').html(html);
  1507.                     });
  1508.                 }).fail(function(data) {
  1509.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1510.                 }).always(function(data) {
  1511.                     // Buttonを有効にする
  1512.                     \$('.add-cart').prop('disabled', false);
  1513.                 });
  1514.             });
  1515.         });
  1516.         \$('.ec-modal-wrap').on('click', function(e) {
  1517.             // モーダル内の処理は外側にバブリングさせない
  1518.             e.stopPropagation();
  1519.         });
  1520.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  1521.             \$('.ec-modal').hide()
  1522.         });
  1523.     </script>
  1524.     <script type=\"application/ld+json\">
  1525.     {
  1526.         \"@context\": \"https://schema.org/\",
  1527.         \"@type\": \"Product\",
  1528.         \"name\": \"{{ Product.name }}\",
  1529.         \"image\": [
  1530.             {% for img in Product.ProductImage %}
  1531.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  1532.             {% else %}
  1533.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  1534.             {% endfor %}
  1535.         ],
  1536.         \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  1537.         {% if Product.code_min %}
  1538.         \"sku\": \"{{ Product.code_min }}\",
  1539.         {% endif %}
  1540.         \"offers\": {
  1541.             \"@type\": \"Offer\",
  1542.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  1543.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  1544.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  1545.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  1546.         }
  1547.     }
  1548.     </script>
  1549.     
  1550.     <script src=\"/html/user_data/assets/js/lightbox/js/lightbox.min.js\"></script>
  1551.     <link rel=\"stylesheet\" href=\"/html/user_data/assets/js//lightbox/css/lightbox.css\">
  1552. {% endblock %}
  1553. {% block main %}
  1554. <div class=\"product-detail-body\">
  1555. {% set Categories = repository('Eccube\\\\Entity\\\\Category').getList() %}
  1556. <div class=\"product-container layout-container contents\">
  1557. <ol class=\"topic-path\">
  1558. {# 関連カテゴリ #}
  1559. {% if Product.ProductCategories is not empty %}
  1560.         {% for ProductCategory in Product.ProductCategories %}
  1561.             {% if ProductCategory.Category.Parent and ProductCategory.Category.Parent.id == 8 %}
  1562.                     {% for Category in ProductCategory.Category.path %}
  1563.                     <li><a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a></li>
  1564.                     {% endfor %}
  1565.                 {% endif -%}
  1566.         {% endfor %}
  1567.         <li>{{ Product.name }}</li>
  1568. {% endif %}
  1569. </ol>
  1570. {# 関連カテゴリ #}
  1571. {% if Product.ProductCategories is not empty %}
  1572.   {% set categoryIds = [] %}
  1573.   {% for ProductCategory in Product.ProductCategories %}
  1574.     {% set categoryIds = categoryIds|merge([ProductCategory.CategoryId]) %}
  1575.   {% endfor %}
  1576.   <div id=\"data-product-detail\" class=\"product-cat-{{ categoryIds|join(' product-cat-') }} product product-detail\">
  1577. {% else %}
  1578. <div id=\"data-product-detail\" class=\"product product-detail\">
  1579. {% endif %}
  1580. <div class=\"product-photo\">
  1581. <ul class=\"product-photo__main\">
  1582. {% for ProductImage in Product.ProductImage %}
  1583. <li><a href=\"{{ asset(ProductImage, 'save_image') }}\" data-lightbox=\"gallery\"><img alt=\"{{ loop.first ? Product.name : '' }}\" src=\"{{ asset(ProductImage, 'save_image') }}\" id=\"data-item-photo-{{ loop.index }}\" {% if loop.index > 1 %} loading=\"lazy\"{% endif %} ></a></li>
  1584. {% else %}
  1585. <li><img alt=\"{{ loop.first ? Product.name : '' }}\" src=\"{{ asset(''|no_image_product, 'save_image') }}\" id=\"data-item-photo-1\"></li>
  1586. {% endfor %}
  1587. </ul>
  1588. <div class=\"product-photo__bg\">
  1589. <ul class=\"product-photo__sub\">
  1590. {% for ProductImage in Product.ProductImage %}
  1591. <li data-index=\"{{ loop.index0 }}\"><img alt=\"\" src=\"{{ asset(ProductImage, 'save_image') }}\" loading=\"lazy\"></li>
  1592. {% endfor %}
  1593. </ul>
  1594. </div>
  1595. <!-- /.product-recommend-photo --></div>
  1596. <div class=\"product-content\">
  1597. <h1 id=\"data-product-name\" class=\"product__title\">{{ Product.name }}</h1>
  1598. {% if getProduct_field(Product.id , \"wine_en\") is not empty %}
  1599. <p class=\"product__en\">
  1600. {{ getProduct_field(Product.id , \"wine_en\") }}
  1601. </p>
  1602. {% endif %}
  1603. {% if getProduct_field(Product.id , \"wine_youryou\") is not empty or getProduct_field(Product.id , \"wine_year\") is not empty %}
  1604. <p class=\"product__size\">
  1605. {{ getProduct_field(Product.id , \"wine_youryou\") }} {{ getProduct_field(Product.id , \"wine_year\") }}
  1606. </p>
  1607. {% endif %}
  1608. {% if Product.description_detail is not empty %}
  1609. <p class=\"product__text\">
  1610. {{ Product.description_detail|raw|nl2br }}
  1611. </p>
  1612. {% endif %}
  1613. {% if Product.getPrice01IncTaxMin is not empty and Product.getPrice02IncTaxMin is defined %}
  1614.     {# 通常価格と販売価格の取得 #}
  1615.     {% set regularPrice = Product.getPrice01IncTaxMin %}
  1616.     {% set salePrice = Product.getPrice02IncTaxMin %}
  1617.     {# オフ率の計算 #}
  1618.     {% set discountPercentage = (regularPrice != 0) ? ((regularPrice - salePrice) / regularPrice) * 100 : 0 %}
  1619.     {# オフ率が0%でない場合のみ表示 #}
  1620.     <!--
  1621.     {% if discountPercentage > 0 %}
  1622.         <p>{{ discountPercentage|number_format(0) }}% OFF</p>
  1623.     {% endif %}
  1624.     -->
  1625. {% endif %}
  1626. <p class=\"product__price product__price-detail\">
  1627. <span id=\"data-product-price\">
  1628. {% if Product.hasProductClass -%}
  1629.     {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1630.         {{ Product.getPrice02IncTaxMin|price }}
  1631.     {% else %}
  1632.         {{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}
  1633.     {% endif %}
  1634. {% else %}
  1635.     {{ Product.getPrice02IncTaxMin|price }}
  1636. {% endif %}
  1637. </span>
  1638.  <span class=\"product__price-tax\">
  1639.  (
  1640.  {% if Product.hasProductClass -%}
  1641.     {% if Product.getPrice02Min == Product.getPrice02Max %}
  1642.         {{ Product.getPrice02Min|price }}
  1643.     {% else %}
  1644.         {{ Product.getPrice02Min|price }} ~ {{ Product.getPrice02Max|price }}
  1645.     {% endif %}
  1646. {% else %}
  1647.     {{ Product.getPrice02Min|price }}
  1648. {% endif %}
  1649.  )
  1650. </span>
  1651. </p>
  1652. <input type=\"hidden\" id=\"data-product-url\" value=\"https://wineshop.salond.jp/products/detail/{{Product.id}}\">
  1653. <form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  1654. {% if Product.stock_find %}
  1655. <div class=\"ec-productRole__actions\">
  1656. {% if form.classcategory_id1 is defined %}
  1657. <div class=\"ec-select\">
  1658. {{ form_row(form.classcategory_id1) }}
  1659. {{ form_errors(form.classcategory_id1) }}
  1660. </div>
  1661. {% if form.classcategory_id2 is defined %}
  1662. <div class=\"ec-select\">
  1663. {{ form_row(form.classcategory_id2) }}
  1664. {{ form_errors(form.classcategory_id2) }}
  1665. </div>
  1666. {% endif %}
  1667. {% endif %}
  1668. <div class=\"ec-numberInput\"><span>{{ '数量'|trans }}</span>
  1669. {{ form_widget(form.quantity) }}
  1670. {{ form_errors(form.quantity) }}
  1671. </div>
  1672. </div>
  1673. <div class=\"ec-productRole__btn\">
  1674. <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  1675. {{ 'カートに入れる'|trans }}
  1676. </button>
  1677. </div>
  1678. {% else %}
  1679. <div class=\"ec-productRole__btn\">
  1680. <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1681. {{ 'ただいま品切れ中です。'|trans }}
  1682. </button>
  1683. </div>
  1684. {% endif %}
  1685. {{ form_rest(form) }}
  1686. </form>
  1687. <div class=\"ec-modal\">
  1688. <div class=\"ec-modal-overlay\">
  1689. <div class=\"ec-modal-wrap\">
  1690. <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  1691. <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1692. <div class=\"ec-modal-box\">
  1693. <div class=\"ec-role\">
  1694. <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1695. <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  1696. </div>
  1697. </div>
  1698. </div>
  1699. </div>
  1700. <!-- /.ec-modal --></div>
  1701. <!--
  1702. {% if BaseInfo.option_favorite_product %}
  1703. <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1704. <div class=\"ec-productRole__btn\">
  1705. {% if is_favorite == false %}
  1706. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1707. {{ 'お気に入りに追加'|trans }}
  1708. </button>
  1709. {% else %}
  1710. <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  1711. disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  1712. </button>
  1713. {% endif %}
  1714. </div>
  1715. </form>
  1716. {% endif %}
  1717. -->
  1718. <dl class=\"product__spec\">
  1719. <dt>タイプ</dt>
  1720. <dd>
  1721. {% for ProductCategory in Product.ProductCategories %}
  1722.     {% set Category = ProductCategory.Category %}
  1723.     {% if Category.Parent is not null and Category.Parent.id == 8 %}
  1724.         <p>{{ Category.name }}</p>
  1725.     {% endif %}
  1726. {% endfor %}
  1727. </dd>
  1728. <dt>品種</dt>
  1729. <dd>{{ getProduct_field(Product.id , \"wine_hinshu\") }}</dd>
  1730. <dt>産地</dt>
  1731. <dd>{{ getProduct_field(Product.id , \"wine_sanchi\") }}  | {{ getProduct_field(Product.id , \"wine_sanchi\") }} </dd>
  1732. <dt>栽培/醸造</dt>
  1733. <dd>{{ getProduct_field(Product.id , \"wine_cultivation\") }}</dd>
  1734. <dt>生産者</dt>
  1735. <dd>{{ getProduct_field(Product.id , \"wine_seisan\") }}</dd>
  1736. <dt>インポーター</dt>
  1737. <dd>{{ getProduct_field(Product.id , \"wine_importer\") }} </dd>
  1738. <dt>アルコール度数</dt>
  1739. <dd>{{ getProduct_field(Product.id , \"wine_per\") }}</dd>
  1740. </dl>
  1741. <!-- /.product-content --></div>
  1742. <!-- /.product --></div>
  1743. <section class=\"product-profile product-section\">
  1744. <h2 class=\"product-profile__title product-section__title\"><span>01.</span>商品の紹介</h2>
  1745. <div class=\"product-profile-content\">
  1746. {% if getProduct_field(Product.id , \"wine_copy\") is not empty %}
  1747. <p class=\"product-profile-content__lede\">
  1748. {{ getProduct_field(Product.id , \"wine_copy\") }}
  1749. </p>
  1750. {% endif %}
  1751. <p class=\"product-profile-content__text\">
  1752. {{ getProduct_field(Product.id , \"wine_setsumei\") }}
  1753. </p>
  1754. <!-- /.product-profile-content --></div>
  1755. {% if getProduct_field(Product.id , \"wine_dish\") is not empty %}
  1756. <section class=\"product-meal\">
  1757. <h3 class=\"product-meal__title\">料理を合わせるなら</h3>
  1758. <p class=\"product-meal__list\">
  1759. {{ getProduct_field(Product.id , \"wine_dish\") }}
  1760. <!-- /.product-meal__list --></p>
  1761. </section>
  1762. {% endif %}
  1763. <!-- /.product-section --></section>
  1764. {% set wineScene = getProduct_field(Product.id,\"wine_scene\") %}
  1765. {% if wineScene  == 'しっかり冷やしてアウトドアシーンに' %}
  1766. <section class=\"product-scene product-section\">
  1767. <h2 class=\"product-scene__title product-section__title\"><span>02.</span>おすすめのシーン</h2>
  1768. <div class=\"product-scene-content product-scene-content__scene1\">
  1769. <div class=\"product-scene-content__heading\">SCENE</div>
  1770. <div class=\"product-scene-content__title\">_LUNCH WITH MY FRIENDS</div>
  1771. <p class=\"product-scene-content__text\">
  1772. 気分のいいお昼に親友との<br>
  1773. ランチにほろ酔い気分
  1774. </p>
  1775. <!-- /.product-scene-content--></div>
  1776. <!-- /.product-section --></section>
  1777. {% endif %}
  1778. <section class=\"product-gift product-section\">
  1779. <h2 class=\"product-gift__title product-section__title\"><span>03.</span>ギフトに</h2>
  1780. <div class=\"product-gift-content\">
  1781. <p class=\"product-gift-content__lede\">
  1782. あの人にも贈りたい<br>
  1783. Salon de Natureのギフトラインナップ。
  1784. </p>
  1785. <p class=\"product-gift-content__text\">
  1786. センスのいいあの人へのプレゼントに。<br>
  1787. 友人とのホームパーティの手土産に。<br>
  1788. 大切な人への特別な日の贈り物に。<br>
  1789. <br>
  1790. ギフト箱、手提げ袋、メッセージカード、相手やシーンに合わせた様々なギフトの形をご用意しています。
  1791. </p>
  1792. <!-- /.product-gift-content--></div>
  1793. <ul class=\"product-gift__item\">
  1794. <li>
  1795. <img src=\"/html/user_data/assets/img/product/detail/gift/pic--01.jpg\" alt=\"ギフトボックス\">
  1796. <strong>ギフトボックス</strong>
  1797. <span>¥550 (税込)</span>
  1798. </li>
  1799. <li>
  1800. <img src=\"/html/user_data/assets/img/product/detail/gift/pic--02.jpg\" alt=\"ギフトボックス\">
  1801. <strong>手提げショッパー袋</strong>
  1802. <span>¥220 (税込)</span>
  1803. </li>
  1804. </ul>
  1805. <!-- /.product-section --></section>
  1806. {% set wine_relation = getProduct_field(Product.id,\"wine_relation\") %}
  1807. {% if wine_relation is not empty %}
  1808. <section class=\"product-relation\">
  1809. <h2 class=\"product-relation__title\">OTHERS LIST <a href=\"https://wineshop.salond.jp/products/list\"><img alt=\"詳細へ\" src=\"/html/user_data/assets/img/product/detail/relation/pic--arrow.svg\"></a></h2>
  1810. <p class=\"product-relation__area\">
  1811. Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , Gamay , Cinsault , Lambrusco , Nebbiolo , Primitivo , Pinot Noir , 
  1812. </p>
  1813. <ul class=\"product-relatioin-list\">
  1814.     {% for add_loop in wine_relation %}
  1815.     <li>
  1816.     <a href=\"{{ url('product_detail', {'id': add_loop.id}) }}\">
  1817.     <img class=\"product-list__pic\" src=\"{{ asset(add_loop.MainListImage|no_image_product, 'save_image') }}\" alt=\"{{ add_loop.name }}\">
  1818.     <p class=\"product-list__title\">
  1819.     {{ add_loop.name }}
  1820.     </p>
  1821.     <span class=\"product-list__price\">
  1822.     {% if add_loop.hasProductClass -%}
  1823.         {% if add_loop.getPrice02IncTaxMin == add_loop.getPrice02IncTaxMax %}
  1824.             {{ add_loop.getPrice02IncTaxMin|price }}
  1825.         {% else %}
  1826.             {{ add_loop.getPrice02IncTaxMin|price }} ~ {{ add_loop.getPrice02IncTaxMax|price }}
  1827.         {% endif %}
  1828.     {% else %}
  1829.         {{ add_loop.getPrice02IncTaxMin|price }}
  1830.     {% endif %}
  1831.     <span>(税込み)</span>
  1832.     </span>
  1833.     </a>
  1834.     </li>
  1835.     {% endfor %}
  1836. <!-- /.product-list-wrap --></ul>
  1837. </section>
  1838. {% endif %}
  1839. {{ include('Block/subsc.twig') }}
  1840. {{ include('Block/knowwine.twig') }}
  1841.     
  1842. <!-- /.product-container --></div>
  1843. <!-- /.product-red --></div>
  1844. {% endblock %}""Product/detail.twig""/home/xs962133/salond.jp/public_html/wineshop.salond.jp/app/template/default/Product/detail.twig");
  1845.     }
  1846. }