var/cache/dev/twig/0f/0f2f3b8054b7de1c364bc980566714edc1b95c6f89b5f51f2124d7da1770ecec.php line 53

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* __string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead */
  14. class __TwigTemplate_274512658b5bd97893a77aafc72eadab155c84957a9e477ecccf522a7ba68779 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""__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead"));
  38.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead"));
  40.         // line 13
  41.         $context["body_class"] = "product_page product_page_detail";
  42.         // line 11
  43.         $this->parent $this->loadTemplate("default_frame.twig""__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead"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 94
  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 95
  139.         echo "<script>
  140.   eccube.classCategories = ";
  141.         // line 96
  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.'96$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 107
  154.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse107)) {
  155.             // line 108
  156.             echo "    fnSetClassCategories(
  157.       \$('#form1'), ";
  158.             // line 109
  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.'109$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse109), "vars", [], "any"falsefalsefalse109), "value", [], "any"falsefalsefalse109));
  160.             echo "
  161.     );
  162.   ";
  163.         } elseif (twig_get_attribute($this->env$this->source,         // line 111
  164. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse111)) {
  165.             // line 112
  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.'112$this->source); })()), "id", [], "any"falsefalsefalse112), "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.'112$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse112), "vars", [], "any"falsefalsefalse112), "value", [], "any"falsefalsefalse112));
  170.             echo ", null);
  171.   ";
  172.         }
  173.         // line 114
  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.     \$('.item_visual').slick({
  184.       dots: false,
  185.       arrows: false,
  186.       responsive: [{
  187.         breakpoint: 768,
  188.         settings: {
  189.           dots: true
  190.         }
  191.       }]
  192.     });
  193.     \$('.slideThumb').on('click', function() {
  194.       var index = \$(this).attr('data-index');
  195.       \$('.item_visual').slick('slickGoTo', index, false);
  196.     })
  197.   });
  198. </script>
  199. <script>
  200.   function formActionAJAX(form, event) {
  201.     event.preventDefault();
  202.     \$form = form;
  203.     \$.ajax({
  204.       url: \$form.attr('action'),
  205.       type: \$form.attr('method'),
  206.       data: \$form.serialize(),
  207.       dataType: 'json',
  208.       beforeSend: function(xhr, settings) {
  209.         // Buttonを無効にする
  210.         \$('.add-cart').prop('disabled', true);
  211.       }
  212.     }).done(function(data) {
  213.       // レスポンス内のメッセージをalertで表示
  214.       \$.each(data.messages, function() {
  215.         \$('#ec-modal-header').html(this);
  216.       });
  217.       \$('#ec-modal-checkbox').prop('checked', true);
  218.       // カートブロックを更新する
  219.       \$.ajax({
  220.         url: \"";
  221.         // line 164
  222.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  223.         echo "\",
  224.         type: 'GET',
  225.         dataType: 'html'
  226.       }).done(function(html) {
  227.         \$('.ec-headerRole__cart').html(html);
  228.       });
  229.     }).fail(function(data) {
  230.       alert('";
  231.         // line 171
  232.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  233.         echo "');
  234.     }).always(function(data) {
  235.       // Buttonを有効にする
  236.       \$('.add-cart').prop('disabled', false);
  237.       // floating cartを閉じる
  238.       \$('#cartModal').modal('hide');
  239.     });
  240.   }
  241.   \$(function() {
  242.     \$('.add-cart').on('click', function(event) {
  243.       \$form = \$(this).closest(\"form\");
  244.       ";
  245.         // line 185
  246.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse185)) {
  247.             // line 186
  248.             echo "        // 規格1フォームの必須チェック
  249.         if (\$form.prop('id') == 'form1') {
  250.           if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  251.             \$('#classcategory_id1')[0].setCustomValidity('";
  252.             // line 189
  253.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  254.             echo "');
  255.             return true;
  256.           } else {
  257.             \$('#classcategory_id1')[0].setCustomValidity('');
  258.           }
  259.         }
  260.         // floating cart
  261.         if (\$form.prop('id') == 'form2') {
  262.           if (\$('#classcategory_id1-a').val() == '__unselected' || \$('#classcategory_id1-a').val() == '') {
  263.             \$('#classcategory_id1-a')[0].setCustomValidity('";
  264.             // line 199
  265.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  266.             echo "');
  267.             return true;
  268.           } else {
  269.             \$('#classcategory_id1-a')[0].setCustomValidity('');
  270.           }
  271.         }
  272.       ";
  273.         }
  274.         // line 206
  275.         echo "
  276.       ";
  277.         // line 207
  278.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse207)) {
  279.             // line 208
  280.             echo "        // 規格2フォームの必須チェック
  281.         if (\$form.prop('id') == 'form1') {
  282.           if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  283.             \$('#classcategory_id2')[0].setCustomValidity('";
  284.             // line 211
  285.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  286.             echo "');
  287.             return true;
  288.           } else {
  289.             \$('#classcategory_id2')[0].setCustomValidity('');
  290.           }
  291.         }
  292.         // floating cart
  293.         if (\$form.prop('id') == 'form2') {
  294.           if (\$('#classcategory_id2-a').val() == '__unselected' || \$('#classcategory_id2-a').val() == '') {
  295.             \$('#classcategory_id2-a')[0].setCustomValidity('";
  296.             // line 221
  297.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  298.             echo "');
  299.             return true;
  300.           } else {
  301.             \$('#classcategory_id2-a')[0].setCustomValidity('');
  302.           }
  303.         }
  304.       ";
  305.         }
  306.         // line 228
  307.         echo "
  308.       // 個数フォームのチェック
  309.       if (\$form.prop('id') == 'form1') {
  310.         if (\$('#quantity').val() < 1) {
  311.           \$('#quantity')[0].setCustomValidity('";
  312.         // line 232
  313.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  314.         echo "');
  315.           return true;
  316.         } else {
  317.           \$('#quantity')[0].setCustomValidity('');
  318.         }
  319.       }
  320.       // floating cart
  321.       if (\$form.prop('id') == 'form2') {
  322.         if (\$('#quantity-a').val() < 1) {
  323.           \$('#quantity-a')[0].setCustomValidity('";
  324.         // line 242
  325.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  326.         echo "');
  327.           return true;
  328.         } else {
  329.           \$('#quantity-a')[0].setCustomValidity('');
  330.         }
  331.       }
  332.       formActionAJAX(\$form, event);
  333.     });
  334.   });
  335. </script>
  336. <script type=\"text/javascript\">
  337.   ";
  338.         // line 256
  339.         echo "  \$(function() {
  340.     var actParam = getUrlParam('act');
  341.     if(actParam == 'addCart') {
  342.       \$('#form1').submit();
  343.     }
  344.   });
  345. </script>
  346. ";
  347.         
  348.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  349.         
  350.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  351.     }
  352.     // line 265
  353.     public function block_main($context, array $blocks = [])
  354.     {
  355.         $macros $this->macros;
  356.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  357.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  358.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  359.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  360.         // line 266
  361.         echo "  <div class=\"ec-productRole\">
  362.     <div class=\"ec-grid2\">
  363.       <div class=\"ec-grid2__cell\">
  364.         <div class=\"ec-sliderItemRole\">
  365.           <div class=\"item_visual\">
  366.             ";
  367.         // line 272
  368.         $context['_parent'] = $context;
  369.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'272$this->source); })()), "ProductImage", [], "any"falsefalsefalse272));
  370.         $context['_iterated'] = false;
  371.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  372.             // line 273
  373.             echo "              <div class=\"slide-item\"><img src=\"";
  374.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  375.             echo "\" loading=\"lazy\"></div>
  376.             ";
  377.             $context['_iterated'] = true;
  378.         }
  379.         if (!$context['_iterated']) {
  380.             // line 275
  381.             echo "              <div class=\"slide-item\"><img src=\"";
  382.             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);
  383.             echo "\" loading=\"lazy\"></div>
  384.             ";
  385.         }
  386.         $_parent $context['_parent'];
  387.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  388.         $context array_intersect_key($context$_parent) + $_parent;
  389.         // line 277
  390.         echo "          </div>
  391.           <div class=\"item_nav\">
  392.             ";
  393.         // line 279
  394.         $context['_parent'] = $context;
  395.         $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.'279$this->source); })()), "ProductImage", [], "any"falsefalsefalse279));
  396.         $context['loop'] = [
  397.           'parent' => $context['_parent'],
  398.           'index0' => 0,
  399.           'index'  => 1,
  400.           'first'  => true,
  401.         ];
  402.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  403.             $length count($context['_seq']);
  404.             $context['loop']['revindex0'] = $length 1;
  405.             $context['loop']['revindex'] = $length;
  406.             $context['loop']['length'] = $length;
  407.             $context['loop']['last'] = === $length;
  408.         }
  409.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  410.             // line 280
  411.             echo "              <div class=\"slideThumb\" data-index=\"";
  412.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsefalse280), "html"nulltrue);
  413.             echo "\"><img src=\"";
  414.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  415.             echo "\" loading=\"lazy\"></div>
  416.             ";
  417.             ++$context['loop']['index0'];
  418.             ++$context['loop']['index'];
  419.             $context['loop']['first'] = false;
  420.             if (isset($context['loop']['length'])) {
  421.                 --$context['loop']['revindex0'];
  422.                 --$context['loop']['revindex'];
  423.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  424.             }
  425.         }
  426.         $_parent $context['_parent'];
  427.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  428.         $context array_intersect_key($context$_parent) + $_parent;
  429.         // line 282
  430.         echo "          </div>
  431.         </div>
  432.       </div>
  433.       <div class=\"ec-grid2__cell\">
  434.         <div class=\"ec-productRole__profile\">
  435.           ";
  436.         // line 288
  437.         echo "          <div class=\"ec-productRole__title\">
  438.             <h2 class=\"ec-headingTitle\">";
  439.         // line 289
  440.         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.'289$this->source); })()), "name", [], "any"falsefalsefalse289), "html"nulltrue);
  441.         echo "</h2>
  442.           </div>
  443.           ";
  444.         // line 292
  445.         echo "          ";
  446.         // line 293
  447.         echo "          <ul class=\"ec-productRole__tags\">
  448.             ";
  449.         // line 294
  450.         $context['_parent'] = $context;
  451.         $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.'294$this->source); })()), "Tags", [], "any"falsefalsefalse294));
  452.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  453.             // line 295
  454.             echo "              <li class=\"ec-productRole__tag tag_";
  455.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsefalse295), "html"nulltrue);
  456.             echo "\">";
  457.             echo twig_escape_filter($this->env$context["Tag"], "html"nulltrue);
  458.             echo "</li>
  459.             ";
  460.         }
  461.         $_parent $context['_parent'];
  462.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  463.         $context array_intersect_key($context$_parent) + $_parent;
  464.         // line 297
  465.         echo "          </ul>
  466.           ";
  467.         // line 299
  468.         echo "          
  469.           ";
  470.         // line 301
  471.         echo "          ";
  472.         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.'301$this->source); })()), "hasProductClass", [], "any"falsefalsefalse301)) {
  473.             // line 302
  474.             echo "<div class=\"ec-productRole__priceRegular\">
  475.               ";
  476.             // line 303
  477.             if (( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'303$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse303)) && (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'303$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse303) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'303$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse303)))) {
  478.                 // line 304
  479.                 echo "                <span class=\"ec-productRole__priceRegularPrice\">";
  480.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  481.                 echo ":<span class=\"price01-default\">";
  482.                 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.'304$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse304)), "html"nulltrue);
  483.                 echo "</span></span>
  484.                 <span class=\"ec-productRole__priceRegularTax\">";
  485.                 // line 305
  486.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  487.                 echo "</span>
  488.               ";
  489.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 306
  490. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'306$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse306)) &&  !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'306$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse306)))) {
  491.                 // line 307
  492.                 echo "                <span class=\"ec-productRole__priceRegularPrice\">";
  493.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  494.                 echo ":<span class=\"price01-default\">";
  495.                 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.'307$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse307)), "html"nulltrue);
  496.                 echo "~ ";
  497.                 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.'307$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse307)), "html"nulltrue);
  498.                 echo "</span></span>
  499.                 <span class=\"ec-productRole__priceRegularTax\">";
  500.                 // line 308
  501.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  502.                 echo "</span>
  503.               ";
  504.             }
  505.             // line 310
  506.             echo "            </div>
  507.           ";
  508.         } else {
  509.             // line 312
  510.             echo "            ";
  511.             if ( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'312$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse312))) {
  512.                 // line 313
  513.                 echo "              <span class=\"ec-productRole__priceRegularPrice\">";
  514.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  515.                 echo ":";
  516.                 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.'313$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse313)), "html"nulltrue);
  517.                 echo "</span>
  518.               <span class=\"ec-productRole__priceRegularTax\">";
  519.                 // line 314
  520.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  521.                 echo "</span>
  522.             ";
  523.             }
  524.             // line 316
  525.             echo "          ";
  526.         }
  527.         // line 317
  528.         echo "          ";
  529.         // line 318
  530.         echo "          <div class=\"ec-productRole__price\">
  531.             ";
  532.         // line 319
  533.         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.'319$this->source); })()), "hasProductClass", [], "any"falsefalsefalse319)) {
  534.             // line 320
  535.             echo "<div class=\"ec-price\">
  536.                 <span class=\"ec-price__price price02-default\">
  537.                   ";
  538.             // line 322
  539.             $context['_parent'] = $context;
  540.             $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.'322$this->source); })()), "getClassNamePrice02IncTaxs", [], "any"falsefalsefalse322));
  541.             $context['loop'] = [
  542.               'parent' => $context['_parent'],
  543.               'index0' => 0,
  544.               'index'  => 1,
  545.               'first'  => true,
  546.             ];
  547.             if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  548.                 $length count($context['_seq']);
  549.                 $context['loop']['revindex0'] = $length 1;
  550.                 $context['loop']['revindex'] = $length;
  551.                 $context['loop']['length'] = $length;
  552.                 $context['loop']['last'] = === $length;
  553.             }
  554.             foreach ($context['_seq'] as $context["name"] => $context["price"]) {
  555.                 // line 323
  556.                 echo "                    ";
  557.                 if (twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse323)) {
  558.                     // line 324
  559.                     echo "                      <div>";
  560.                     echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($context["price"]), "html"nulltrue);
  561.                     echo " <small>(";
  562.                     echo twig_escape_filter($this->env$context["name"], "html"nulltrue);
  563.                     echo ")</small></div>
  564.                     ";
  565.                 } else {
  566.                     // line 326
  567.                     echo "                      <div>";
  568.                     echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($context["price"]), "html"nulltrue);
  569.                     echo " <small>(";
  570.                     echo twig_escape_filter($this->env$context["name"], "html"nulltrue);
  571.                     echo ")</small>&nbsp;/&nbsp;</div>
  572.                     ";
  573.                 }
  574.                 // line 328
  575.                 echo "                  ";
  576.                 ++$context['loop']['index0'];
  577.                 ++$context['loop']['index'];
  578.                 $context['loop']['first'] = false;
  579.                 if (isset($context['loop']['length'])) {
  580.                     --$context['loop']['revindex0'];
  581.                     --$context['loop']['revindex'];
  582.                     $context['loop']['last'] = === $context['loop']['revindex0'];
  583.                 }
  584.             }
  585.             $_parent $context['_parent'];
  586.             unset($context['_seq'], $context['_iterated'], $context['name'], $context['price'], $context['_parent'], $context['loop']);
  587.             $context array_intersect_key($context$_parent) + $_parent;
  588.             // line 329
  589.             echo "                  <span class=\"ec-price__tax\">";
  590.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("※全て税込"), "html"nulltrue);
  591.             echo "</span>
  592.                 </span>
  593.               </div>
  594.             ";
  595.         } else {
  596.             // line 333
  597.             echo "              <div class=\"ec-price\">
  598.                 <span class=\"ec-price__price\">";
  599.             // line 334
  600.             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.'334$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse334)), "html"nulltrue);
  601.             echo "</span>
  602.                 <span class=\"ec-price__tax\">";
  603.             // line 335
  604.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  605.             echo "</span>
  606.               </div>
  607.             ";
  608.         }
  609.         // line 338
  610.         echo "          </div>
  611.           ";
  612.         // line 341
  613.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'341$this->source); })()), "description_detail", [], "any"falsefalsefalse341)) {
  614.             echo "  
  615.             <div class=\"ec-productRole__description description_detail\">
  616.               ";
  617.             // line 344
  618.             echo "              ";
  619.             $context["tplPath"] = (("_Product/" twig_trim_filter(strip_tags(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.'344$this->source); })()), "description_detail", [], "any"falsefalsefalse344)))) . ".twig");
  620.             // line 345
  621.             echo "              ";
  622.             ob_start();
  623.             $__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4 null;
  624.             try {
  625.                 $__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4 =                 $this->loadTemplate((isset($context["tplPath"]) || array_key_exists("tplPath"$context) ? $context["tplPath"] : (function () { throw new RuntimeError('Variable "tplPath" does not exist.'345$this->source); })()), "__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead"345);
  626.             } catch (LoaderError $e) {
  627.                 // ignore missing template
  628.             }
  629.             if ($__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4) {
  630.                 $__internal_f607aeef2c31a95a7bf963452dff024ffaeb6aafbe4603f9ca3bec57be8633f4->display($context);
  631.             }
  632.             $context["content"] = ('' === $tmp ob_get_clean()) ? '' : new Markup($tmp$this->env->getCharset());
  633.             // line 346
  634.             echo "              ";
  635.             if (( !twig_test_empty((isset($context["content"]) || array_key_exists("content"$context) ? $context["content"] : (function () { throw new RuntimeError('Variable "content" does not exist.'346$this->source); })())) && (isset($context["content"]) || array_key_exists("content"$context)))) {
  636.                 echo 
  637.                   ";
  638.                 // line 347
  639.                 echo (isset($context["content"]) || array_key_exists("content"$context) ? $context["content"] : (function () { throw new RuntimeError('Variable "content" does not exist.'347$this->source); })());
  640.                 echo "
  641.               ";
  642.             } else {
  643.                 // line 349
  644.                 echo "                  ";
  645.                 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.'349$this->source); })()), "description_detail", [], "any"falsefalsefalse349);
  646.                 echo "
  647.               ";
  648.             }
  649.             // line 351
  650.             echo "            </div>
  651.           ";
  652.         }
  653.         // line 353
  654.         echo "
  655.           ";
  656.         // line 363
  657.         echo "          ";
  658.         // line 364
  659.         echo "          ";
  660.         // line 379
  661.         echo "          ";
  662.         echo twig_include($this->env$context"Product/sales_restrictions_cart.twig");
  663.         echo "
  664.           
  665.           <div class=\"ec-modal\">
  666.             <input type=\"checkbox\" id=\"ec-modal-checkbox\" class=\"checkbox\">
  667.             <div class=\"ec-modal-overlay\">
  668.               <label for=\"ec-modal-checkbox\" class=\"ec-modal-overlay-close\"></label>
  669.               <div class=\"ec-modal-wrap\">
  670.                 <label for=\"ec-modal-checkbox\" class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  671.         // line 386
  672.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  673.         echo "\" alt=\"\"/></span></label>
  674.                 <div id=\"ec-modal-header\" class=\"text-center\">";
  675.         // line 387
  676.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  677.         echo "</div>
  678.                 <div class=\"ec-modal-box\">
  679.                   <div class=\"ec-role\">
  680.                     <label for=\"ec-modal-checkbox\" class=\"ec-inlineBtn--cancel\">";
  681.         // line 390
  682.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  683.         echo "</label>
  684.                     <a href=\"";
  685.         // line 391
  686.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  687.         echo "\" class=\"ec-inlineBtn--action\"><i class=\"fas fa-shopping-cart fa-fw\"></i> ";
  688.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  689.         echo "</a>
  690.                   </div>
  691.                 </div>
  692.               </div>
  693.             </div>
  694.           </div>
  695.           ";
  696.         // line 398
  697.         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.'398$this->source); })()), "option_favorite_product", [], "any"falsefalsefalse398)) {
  698.             // line 399
  699.             echo "            <form action=\"";
  700.             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.'399$this->source); })()), "id", [], "any"falsefalsefalse399)]), "html"nulltrue);
  701.             echo "\" method=\"post\">
  702.               <div class=\"ec-productRole__btn\">
  703.                 ";
  704.             // line 401
  705.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'401$this->source); })()) == false)) {
  706.                 // line 402
  707.                 echo "                  <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  708.                     <i class=\"fas fa-heart fa-fw\"></i> ";
  709.                 // line 403
  710.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  711.                 echo "
  712.                   </button>
  713.                 ";
  714.             } else {
  715.                 // line 406
  716.                 echo "                  <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\" disabled=\"disabled\">
  717.                     <i class=\"fas fa-heart fa-fw\"></i> ";
  718.                 // line 407
  719.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です"), "html"nulltrue);
  720.                 echo "
  721.                   </button>
  722.                 ";
  723.             }
  724.             // line 410
  725.             echo "              </div>
  726.             </form>
  727.           ";
  728.         }
  729.         // line 413
  730.         echo "
  731.           <div class=\"ec-productRole__btn pt-4 mb-5 text-center\">
  732.             <a href=\"";
  733.         // line 415
  734.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_contact");
  735.         echo "?product_id=";
  736.         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.'415$this->source); })()), "id", [], "any"falsefalsefalse415), "html"nulltrue);
  737.         echo "\" class=\"btn btn-sm mx-auto\" target=\"_blank\">この商品について問い合せる</a>
  738.           </div>
  739.       </div>
  740.     </div>
  741.   </div>
  742.   ";
  743.         // line 422
  744.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'422$this->source); })()), "freearea", [], "any"falsefalsefalse422)) {
  745.             // line 423
  746.             echo "    <div class=\"ec-productRole__description freearea\">
  747.       ";
  748.             // line 424
  749.             $context["tplPath"] = (("_Product/" twig_trim_filter(strip_tags(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.'424$this->source); })()), "freearea", [], "any"falsefalsefalse424)))) . ".twig");
  750.             // line 425
  751.             echo "      ";
  752.             ob_start();
  753.             $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 null;
  754.             try {
  755.                 $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144 =                 $this->loadTemplate((isset($context["tplPath"]) || array_key_exists("tplPath"$context) ? $context["tplPath"] : (function () { throw new RuntimeError('Variable "tplPath" does not exist.'425$this->source); })()), "__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead"425);
  756.             } catch (LoaderError $e) {
  757.                 // ignore missing template
  758.             }
  759.             if ($__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144) {
  760.                 $__internal_62824350bc4502ee19dbc2e99fc6bdd3bd90e7d8dd6e72f42c35efd048542144->display($context);
  761.             }
  762.             $context["content"] = ('' === $tmp ob_get_clean()) ? '' : new Markup($tmp$this->env->getCharset());
  763.             // line 426
  764.             echo "      ";
  765.             if (( !twig_test_empty((isset($context["content"]) || array_key_exists("content"$context) ? $context["content"] : (function () { throw new RuntimeError('Variable "content" does not exist.'426$this->source); })())) && (isset($context["content"]) || array_key_exists("content"$context)))) {
  766.                 echo 
  767.           ";
  768.                 // line 427
  769.                 echo (isset($context["content"]) || array_key_exists("content"$context) ? $context["content"] : (function () { throw new RuntimeError('Variable "content" does not exist.'427$this->source); })());
  770.                 echo "
  771.       ";
  772.             } else {
  773.                 // line 429
  774.                 echo "          ";
  775.                 echo twig_include($this->env$contexttwig_template_from_string($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.'429$this->source); })()), "freearea", [], "any"falsefalsefalse429)));
  776.                 echo "
  777.       ";
  778.             }
  779.             // line 431
  780.             echo "    </div>
  781.   ";
  782.         }
  783.         // line 433
  784.         echo "  
  785. ";
  786.         // line 439
  787.         echo "</div>
  788. <div id=\"blockRelatedProduct\"></div>
  789. ";
  790.         
  791.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  792.         
  793.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  794.     }
  795.     public function getTemplateName()
  796.     {
  797.         return "__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead";
  798.     }
  799.     public function isTraitable()
  800.     {
  801.         return false;
  802.     }
  803.     public function getDebugInfo()
  804.     {
  805.         return array (  843 => 439,  840 => 433,  836 => 431,  830 => 429,  825 => 427,  820 => 426,  807 => 425,  805 => 424,  802 => 423,  800 => 422,  788 => 415,  784 => 413,  779 => 410,  773 => 407,  770 => 406,  764 => 403,  761 => 402,  759 => 401,  753 => 399,  751 => 398,  739 => 391,  735 => 390,  729 => 387,  725 => 386,  714 => 379,  712 => 364,  710 => 363,  706 => 353,  702 => 351,  696 => 349,  691 => 347,  686 => 346,  673 => 345,  670 => 344,  665 => 341,  660 => 338,  654 => 335,  650 => 334,  647 => 333,  639 => 329,  625 => 328,  617 => 326,  609 => 324,  606 => 323,  589 => 322,  585 => 320,  583 => 319,  580 => 318,  578 => 317,  575 => 316,  570 => 314,  563 => 313,  560 => 312,  556 => 310,  551 => 308,  542 => 307,  540 => 306,  536 => 305,  529 => 304,  527 => 303,  524 => 302,  521 => 301,  518 => 299,  515 => 297,  504 => 295,  500 => 294,  497 => 293,  495 => 292,  490 => 289,  487 => 288,  480 => 282,  461 => 280,  444 => 279,  440 => 277,  431 => 275,  423 => 273,  418 => 272,  410 => 266,  400 => 265,  383 => 256,  367 => 242,  354 => 232,  348 => 228,  338 => 221,  325 => 211,  320 => 208,  318 => 207,  315 => 206,  305 => 199,  292 => 189,  287 => 186,  285 => 185,  268 => 171,  258 => 164,  206 => 114,  198 => 112,  196 => 111,  191 => 109,  188 => 108,  186 => 107,  172 => 96,  169 => 95,  159 => 94,  73 => 16,  63 => 15,  52 => 11,  50 => 13,  37 => 11,);
  806.     }
  807.     public function getSourceContext()
  808.     {
  809.         return new Source("{#
  810. This file is part of EC-CUBE
  811. Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
  812. http://www.lockon.co.jp/
  813. For the full copyright and license information, please view the LICENSE
  814. file that was distributed with this source code.
  815. #}
  816. {% extends 'default_frame.twig' %}
  817. {% set body_class = 'product_page product_page_detail' %}
  818. {% block stylesheet %}
  819. <style>
  820. .slick-slider {
  821.   margin-bottom: 30px;
  822. }
  823. .slick-dots {
  824.   position: absolute;
  825.   bottom: -45px;
  826.   display: block;
  827.   width: 100%;
  828.   padding: 0;
  829.   list-style: none;
  830.   text-align: center;
  831. }
  832. .slick-dots li {
  833.   position: relative;
  834.   display: inline-block;
  835.   width: 20px;
  836.   height: 20px;
  837.   margin: 0 5px;
  838.   padding: 0;
  839.   cursor: pointer;
  840. }
  841. .slick-dots li button {
  842.   font-size: 0;
  843.   line-height: 0;
  844.   display: block;
  845.   width: 20px;
  846.   height: 20px;
  847.   padding: 5px;
  848.   cursor: pointer;
  849.   color: transparent;
  850.   border: 0;
  851.   outline: none;
  852.   background: transparent;
  853. }
  854. .slick-dots li button:hover,
  855. .slick-dots li button:focus {
  856.   outline: none;
  857. }
  858. .slick-dots li button:hover:before,
  859. .slick-dots li button:focus:before {
  860.   opacity: 1;
  861. }
  862. .slick-dots li button:before {
  863.   content: \" \";
  864.   line-height: 20px;
  865.   position: absolute;
  866.   top: 0;
  867.   left: 0;
  868.   width: 12px;
  869.   height: 12px;
  870.   text-align: center;
  871.   opacity: .25;
  872.   background-color: black;
  873.   border-radius: 50%;
  874. }
  875. .slick-dots li.slick-active button:before {
  876.   opacity: .75;
  877.   background-color: black;
  878. }
  879. .slick-dots li button.thumbnail img {
  880.   width: 0;
  881.   height: 0;
  882. }
  883. </style>
  884. {% endblock %}
  885. {% block javascript %}
  886. <script>
  887.   eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  888.   // 規格2に選択肢を割り当てる。
  889.   function fnSetClassCategories(form, classcat_id2_selected) {
  890.     var \$form = \$(form);
  891.     var product_id = \$form.find('input[name=product_id]').val();
  892.     var \$sele1 = \$form.find('select[name=classcategory_id1]');
  893.     var \$sele2 = \$form.find('select[name=classcategory_id2]');
  894.     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  895.   }
  896.   {% if form.classcategory_id2 is defined %}
  897.     fnSetClassCategories(
  898.       \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  899.     );
  900.   {% elseif form.classcategory_id1 is defined %}
  901.     eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  902.   {% endif %}
  903. </script>
  904. <script>
  905.   \$(function() {
  906.     // bfcache無効化
  907.     \$(window).bind('pageshow', function(event) {
  908.       if (event.originalEvent.persisted) {
  909.         location.reload(true);
  910.       }
  911.     });
  912.     \$('.item_visual').slick({
  913.       dots: false,
  914.       arrows: false,
  915.       responsive: [{
  916.         breakpoint: 768,
  917.         settings: {
  918.           dots: true
  919.         }
  920.       }]
  921.     });
  922.     \$('.slideThumb').on('click', function() {
  923.       var index = \$(this).attr('data-index');
  924.       \$('.item_visual').slick('slickGoTo', index, false);
  925.     })
  926.   });
  927. </script>
  928. <script>
  929.   function formActionAJAX(form, event) {
  930.     event.preventDefault();
  931.     \$form = form;
  932.     \$.ajax({
  933.       url: \$form.attr('action'),
  934.       type: \$form.attr('method'),
  935.       data: \$form.serialize(),
  936.       dataType: 'json',
  937.       beforeSend: function(xhr, settings) {
  938.         // Buttonを無効にする
  939.         \$('.add-cart').prop('disabled', true);
  940.       }
  941.     }).done(function(data) {
  942.       // レスポンス内のメッセージをalertで表示
  943.       \$.each(data.messages, function() {
  944.         \$('#ec-modal-header').html(this);
  945.       });
  946.       \$('#ec-modal-checkbox').prop('checked', true);
  947.       // カートブロックを更新する
  948.       \$.ajax({
  949.         url: \"{{ url('block_cart') }}\",
  950.         type: 'GET',
  951.         dataType: 'html'
  952.       }).done(function(html) {
  953.         \$('.ec-headerRole__cart').html(html);
  954.       });
  955.     }).fail(function(data) {
  956.       alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  957.     }).always(function(data) {
  958.       // Buttonを有効にする
  959.       \$('.add-cart').prop('disabled', false);
  960.       // floating cartを閉じる
  961.       \$('#cartModal').modal('hide');
  962.     });
  963.   }
  964.   \$(function() {
  965.     \$('.add-cart').on('click', function(event) {
  966.       \$form = \$(this).closest(\"form\");
  967.       {% if form.classcategory_id1 is defined %}
  968.         // 規格1フォームの必須チェック
  969.         if (\$form.prop('id') == 'form1') {
  970.           if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  971.             \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  972.             return true;
  973.           } else {
  974.             \$('#classcategory_id1')[0].setCustomValidity('');
  975.           }
  976.         }
  977.         // floating cart
  978.         if (\$form.prop('id') == 'form2') {
  979.           if (\$('#classcategory_id1-a').val() == '__unselected' || \$('#classcategory_id1-a').val() == '') {
  980.             \$('#classcategory_id1-a')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  981.             return true;
  982.           } else {
  983.             \$('#classcategory_id1-a')[0].setCustomValidity('');
  984.           }
  985.         }
  986.       {% endif %}
  987.       {% if form.classcategory_id2 is defined %}
  988.         // 規格2フォームの必須チェック
  989.         if (\$form.prop('id') == 'form1') {
  990.           if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  991.             \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  992.             return true;
  993.           } else {
  994.             \$('#classcategory_id2')[0].setCustomValidity('');
  995.           }
  996.         }
  997.         // floating cart
  998.         if (\$form.prop('id') == 'form2') {
  999.           if (\$('#classcategory_id2-a').val() == '__unselected' || \$('#classcategory_id2-a').val() == '') {
  1000.             \$('#classcategory_id2-a')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1001.             return true;
  1002.           } else {
  1003.             \$('#classcategory_id2-a')[0].setCustomValidity('');
  1004.           }
  1005.         }
  1006.       {% endif %}
  1007.       // 個数フォームのチェック
  1008.       if (\$form.prop('id') == 'form1') {
  1009.         if (\$('#quantity').val() < 1) {
  1010.           \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1011.           return true;
  1012.         } else {
  1013.           \$('#quantity')[0].setCustomValidity('');
  1014.         }
  1015.       }
  1016.       // floating cart
  1017.       if (\$form.prop('id') == 'form2') {
  1018.         if (\$('#quantity-a').val() < 1) {
  1019.           \$('#quantity-a')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1020.           return true;
  1021.         } else {
  1022.           \$('#quantity-a')[0].setCustomValidity('');
  1023.         }
  1024.       }
  1025.       formActionAJAX(\$form, event);
  1026.     });
  1027.   });
  1028. </script>
  1029. <script type=\"text/javascript\">
  1030.   {# URLに「act=addCart」が GET で渡された場合、自動でカートに入れる処理  ※商品規格には未対応 #}
  1031.   \$(function() {
  1032.     var actParam = getUrlParam('act');
  1033.     if(actParam == 'addCart') {
  1034.       \$('#form1').submit();
  1035.     }
  1036.   });
  1037. </script>
  1038. {% endblock %}
  1039. {% block main %}
  1040.   <div class=\"ec-productRole\">
  1041.     <div class=\"ec-grid2\">
  1042.       <div class=\"ec-grid2__cell\">
  1043.         <div class=\"ec-sliderItemRole\">
  1044.           <div class=\"item_visual\">
  1045.             {% for ProductImage in Product.ProductImage %}
  1046.               <div class=\"slide-item\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" loading=\"lazy\"></div>
  1047.             {% else %}
  1048.               <div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" loading=\"lazy\"></div>
  1049.             {% endfor %}
  1050.           </div>
  1051.           <div class=\"item_nav\">
  1052.             {% for ProductImage in Product.ProductImage %}
  1053.               <div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" loading=\"lazy\"></div>
  1054.             {% endfor %}
  1055.           </div>
  1056.         </div>
  1057.       </div>
  1058.       <div class=\"ec-grid2__cell\">
  1059.         <div class=\"ec-productRole__profile\">
  1060.           {# 商品名 #}
  1061.           <div class=\"ec-productRole__title\">
  1062.             <h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  1063.           </div>
  1064.           {# タグ #}
  1065.           {# {% if Product.Tags is not empty %} #}
  1066.           <ul class=\"ec-productRole__tags\">
  1067.             {% for Tag in Product.Tags %}
  1068.               <li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  1069.             {% endfor %}
  1070.           </ul>
  1071.           {# {% endif %} #}
  1072.           
  1073.           {# 通常価格 #}
  1074.           {% if Product.hasProductClass -%}
  1075.             <div class=\"ec-productRole__priceRegular\">
  1076.               {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1077.                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  1078.                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1079.               {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1080.                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
  1081.                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1082.               {% endif %}
  1083.             </div>
  1084.           {% else %}
  1085.             {% if Product.getPrice01Max is not null %}
  1086.               <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  1087.               <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1088.             {% endif %}
  1089.           {% endif %}
  1090.           {# 販売価格 #}
  1091.           <div class=\"ec-productRole__price\">
  1092.             {% if Product.hasProductClass -%}
  1093.               <div class=\"ec-price\">
  1094.                 <span class=\"ec-price__price price02-default\">
  1095.                   {% for name, price in Product.getClassNamePrice02IncTaxs %}
  1096.                     {% if loop.last %}
  1097.                       <div>{{ price|price }} <small>({{name}})</small></div>
  1098.                     {% else %}
  1099.                       <div>{{ price|price }} <small>({{name}})</small>&nbsp;/&nbsp;</div>
  1100.                     {% endif %}
  1101.                   {% endfor %}
  1102.                   <span class=\"ec-price__tax\">{{ '※全て税込'|trans }}</span>
  1103.                 </span>
  1104.               </div>
  1105.             {% else %}
  1106.               <div class=\"ec-price\">
  1107.                 <span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1108.                 <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1109.               </div>
  1110.             {% endif %}
  1111.           </div>
  1112.           {% if Product.description_detail %}  
  1113.             <div class=\"ec-productRole__description description_detail\">
  1114.               {# {{ Product.description_detail|raw|nl2br }} #}
  1115.               {% set tplPath = \"_Product/#{Product.description_detail|striptags|trim}.twig\" %}
  1116.               {% set content %}{% include tplPath ignore missing %}{% endset %}
  1117.               {% if content is not empty and content is defined %} 
  1118.                   {{ content|raw }}
  1119.               {% else %}
  1120.                   {{ Product.description_detail|raw }}
  1121.               {% endif %}
  1122.             </div>
  1123.           {% endif %}
  1124.           {# 商品コード #}
  1125. {# 
  1126.           {% if Product.code_min is not empty %}
  1127.             <div class=\"ec-productRole__code\">
  1128.               {{ '商品コード'|trans }}: <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  1129.             </div>
  1130.           {% endif %}
  1131.  #}
  1132.           {# 関連カテゴリ #}
  1133.           {# {% if Product.ProductCategories is not empty %}
  1134.             <div class=\"ec-productRole__category\">
  1135.               <div>{{ '関連カテゴリ'|trans }}</div>
  1136.               {% for ProductCategory in Product.ProductCategories %}
  1137.                 <ul>
  1138.                   <li>
  1139.                     {% for Category in ProductCategory.Category.path %}
  1140.                       <a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  1141.                       <span>></span>{% endif -%}
  1142.                     {% endfor %}
  1143.                   </li>
  1144.                 </ul>
  1145.               {% endfor %}
  1146.             </div>
  1147.           {% endif %} #}
  1148.           {{ include('Product/sales_restrictions_cart.twig') }}
  1149.           
  1150.           <div class=\"ec-modal\">
  1151.             <input type=\"checkbox\" id=\"ec-modal-checkbox\" class=\"checkbox\">
  1152.             <div class=\"ec-modal-overlay\">
  1153.               <label for=\"ec-modal-checkbox\" class=\"ec-modal-overlay-close\"></label>
  1154.               <div class=\"ec-modal-wrap\">
  1155.                 <label for=\"ec-modal-checkbox\" class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></label>
  1156.                 <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1157.                 <div class=\"ec-modal-box\">
  1158.                   <div class=\"ec-role\">
  1159.                     <label for=\"ec-modal-checkbox\" class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</label>
  1160.                     <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\"><i class=\"fas fa-shopping-cart fa-fw\"></i> {{ 'カートへ進む'|trans }}</a>
  1161.                   </div>
  1162.                 </div>
  1163.               </div>
  1164.             </div>
  1165.           </div>
  1166.           {% if BaseInfo.option_favorite_product %}
  1167.             <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1168.               <div class=\"ec-productRole__btn\">
  1169.                 {% if is_favorite == false %}
  1170.                   <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1171.                     <i class=\"fas fa-heart fa-fw\"></i> {{ 'お気に入りに追加'|trans }}
  1172.                   </button>
  1173.                 {% else %}
  1174.                   <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\" disabled=\"disabled\">
  1175.                     <i class=\"fas fa-heart fa-fw\"></i> {{ 'お気に入りに追加済です'|trans }}
  1176.                   </button>
  1177.                 {% endif %}
  1178.               </div>
  1179.             </form>
  1180.           {% endif %}
  1181.           <div class=\"ec-productRole__btn pt-4 mb-5 text-center\">
  1182.             <a href=\"{{ url('product_contact') }}?product_id={{ Product.id }}\" class=\"btn btn-sm mx-auto\" target=\"_blank\">この商品について問い合せる</a>
  1183.           </div>
  1184.       </div>
  1185.     </div>
  1186.   </div>
  1187.   {% if Product.freearea %}
  1188.     <div class=\"ec-productRole__description freearea\">
  1189.       {% set tplPath = \"_Product/#{Product.freearea|striptags|trim}.twig\" %}
  1190.       {% set content %}{% include tplPath ignore missing %}{% endset %}
  1191.       {% if content is not empty and content is defined %} 
  1192.           {{ content|raw }}
  1193.       {% else %}
  1194.           {{ include(template_from_string(Product.freearea)) }}
  1195.       {% endif %}
  1196.     </div>
  1197.   {% endif %}
  1198.   
  1199. {#   {% if Product.freearea %}
  1200.     <div class=\"ec-productRole__description freearea\">
  1201.       {{ include(template_from_string(Product.freearea)) }}
  1202.     </div>
  1203.   {% endif %} #}
  1204. </div>
  1205. <div id=\"blockRelatedProduct\"></div>
  1206. {% endblock %}
  1207. ""__string_template__b33644f6351efd43f35181eb579f59feba0fa7cd64d6287050317fc516260ead""");
  1208.     }
  1209. }