var/cache/dev/twig/ba/ba21cd88d51dded7a416e3d8a0c5bb1c7a2145349eebbeffba866abb2b4d4763.php line 55

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Product/detail.twig */
  14. class __TwigTemplate_290b7d7ccef30d191e4fc761afbd44084231dfc09d769fd0a65da2099519e675 extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.         $this->sandbox $this->env->getExtension('\Twig\Extension\SandboxExtension');
  28.         $this->checkSecurity();
  29.     }
  30.     protected function doGetParent(array $context)
  31.     {
  32.         // line 11
  33.         return "default_frame.twig";
  34.     }
  35.     protected function doDisplay(array $context, array $blocks = [])
  36.     {
  37.         $macros $this->macros;
  38.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  39.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  41.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  42.         // line 13
  43.         $context["body_class"] = "product_page";
  44.         // line 11
  45.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  46.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  49.         
  50.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  51.     }
  52.     // line 15
  53.     public function block_stylesheet($context, array $blocks = [])
  54.     {
  55.         $macros $this->macros;
  56.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  57.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  59.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  60.         // line 16
  61.         echo "    <style>
  62.         .slick-slider {
  63.             margin-bottom: 12px;
  64.         }
  65.         .item_visual{
  66.             opacity: 0;
  67.             transition: opacity .3s linear;
  68.         }
  69.         .item_visual.slick-initialized.slick-slider{
  70.             opacity: 1;
  71.         }
  72.         .item_visual .slide-item:focus,
  73.         .item_visual .slide-item:focus-visible{
  74.             outline: none;
  75.         }
  76.         #colorbox #cboxContent {
  77.           background-color: transparent;
  78.           padding: 8px 70px;
  79.         }
  80.         #cboxOverlay{
  81.             background: hsla(0,0%,88.6%,.9);
  82.         }
  83.         #cboxContent,
  84.         #cboxLoadedContent{
  85.             background: transparent;
  86.             border: none;
  87.         }
  88.         .cboxPhoto{
  89.             border-radius: 4px;
  90.         }
  91.         #cboxPrevious,
  92.         #cboxNext{
  93.             position: absolute;
  94.             top: 50%;
  95.             background: #fff;
  96.             padding: 10px;
  97.             border-radius: 50px;
  98.             width: 40px;
  99.             height: 40px;
  100.             z-index: 100;
  101.         } 
  102.         #cboxPrevious{
  103.             left: 0px;
  104.         }
  105.         #cboxPrevious::before{
  106.             content: \"\";
  107.             display: inline-block;
  108.             padding: 3px;
  109.             margin: 0 10px;
  110.             border-left: 2px solid #000;
  111.             border-bottom: 2px solid #000;
  112.             transform: rotate(45deg);
  113.             position: absolute;
  114.             top: 15px;
  115.             left: 8px;
  116.         }
  117.         #cboxNext{
  118.             right: 0px;
  119.         }
  120.         #cboxNext::before{
  121.             content: \"\";
  122.             display: inline-block;
  123.             padding: 3px;
  124.             margin: 0 10px;
  125.             border-top: 2px solid #000;
  126.             border-right: 2px solid #000;
  127.             transform: rotate(45deg);
  128.             position: absolute;
  129.             top: 15px;
  130.             right: 8px;
  131.         }
  132.         #cboxSlideshow{
  133.             display: none;
  134.         }
  135.         
  136.         #cboxClose{
  137.             background: #fff;
  138.             padding: 10px;
  139.             border-radius: 50px;
  140.             top: -10px;
  141.             right: 0px;
  142.             width: 40px;
  143.             height: 40px;
  144.             cursor: pointer;
  145.             display: block;
  146.         }
  147.         #cboxClose::before,
  148.         #cboxClose::after{
  149.             content: \"\";
  150.             display: block;
  151.             background-color: #000;
  152.             position: absolute;
  153.             top: 0;
  154.             left: 0;
  155.             right: 0;
  156.             bottom: 0;
  157.             margin: auto;
  158.             width: 1.25vw;
  159.             height: 1px;
  160.         }
  161.         #cboxClose::before{
  162.             transform: rotate(45deg);
  163.         }
  164.         #cboxClose::after{
  165.             transform: rotate(-45deg);
  166.         }
  167.         #cboxCloseSP{
  168.             display: none;
  169.         }
  170.         @media only screen and (max-width: 767px) {
  171.             .item_visual a:hover{
  172.                 opacity: 1;
  173.                 outline: none;
  174.             }
  175.             #colorbox #cboxContent{
  176.                 padding: 0;
  177.             }
  178.             #cboxClose{
  179.                 display: none;
  180.             }
  181.             #cboxClose::before,
  182.             #cboxClose::after{
  183.                 width: 5vw;
  184.             }
  185.             #cboxPrevious,
  186.             #cboxNext{
  187.                 display: none!important;
  188.             }
  189.             #cboxCloseSP{
  190.                 display: block;
  191.                 position: absolute;
  192.                 background: #fff;
  193.                 padding: 10px;
  194.                 border-radius: 50px;
  195.                 border: none;
  196.                 width: 40px;
  197.                 height: 40px;
  198.                 cursor: pointer;
  199.                 top: 10px;
  200.                 right: 10px;
  201.                 z-index: 9999;
  202.             }
  203.             #cboxCloseSP::before,
  204.             #cboxCloseSP::after{
  205.                 content: \"\";
  206.                 display: block;
  207.                 background-color: #000;
  208.                 position: absolute;
  209.                 top: 0;
  210.                 left: 0;
  211.                 right: 0;
  212.                 bottom: 0;
  213.                 margin: auto;
  214.                 width: 5vw;
  215.                 height: 1px;
  216.             }
  217.             #cboxCloseSP::before{
  218.                 transform: rotate(45deg);
  219.             }
  220.             #cboxCloseSP::after{
  221.                 transform: rotate(-45deg);
  222.             }
  223.         }
  224.     </style>
  225. ";
  226.         
  227.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  228.         
  229.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  230.     }
  231.     // line 182
  232.     public function block_javascript($context, array $blocks = [])
  233.     {
  234.         $macros $this->macros;
  235.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  236.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  237.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  238.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  239.         // line 183
  240.         echo "    <script>
  241.         eccube.classCategories = ";
  242.         // line 184
  243.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($this->sandbox->ensureToStringAllowed((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'184$this->source); })()), 184$this->source));
  244.         echo ";
  245.         // 規格2に選択肢を割り当てる。
  246.         function fnSetClassCategories(form, classcat_id2_selected) {
  247.             var \$form = \$(form);
  248.             var product_id = \$form.find('input[name=product_id]').val();
  249.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  250.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  251.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  252.         }
  253.         ";
  254.         // line 195
  255.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue195)) {
  256.             // line 196
  257.             echo "        fnSetClassCategories(
  258.             \$('#form1'), ";
  259.             // line 197
  260.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'197$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue197), "vars", [], "any"falsefalsetrue197), "value", [], "any"falsefalsetrue197), 197$this->source));
  261.             echo "
  262.         );
  263.         ";
  264.         } elseif (twig_get_attribute($this->env$this->source,         // line 199
  265. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue199)) {
  266.             // line 200
  267.             echo "        eccube.checkStock(\$('#form1'), ";
  268.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'200$this->source); })()), "id", [], "any"falsefalsetrue200), 200$this->source), "html"nulltrue);
  269.             echo ", ";
  270.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'200$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue200), "vars", [], "any"falsefalsetrue200), "value", [], "any"falsefalsetrue200), 200$this->source));
  271.             echo ", null);
  272.         ";
  273.         }
  274.         // line 202
  275.         echo "    </script>
  276.     <script>
  277.         \$(function() {
  278.             \$('.add-cart').on('click', function(event) {
  279.                 ";
  280.         // line 206
  281.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue206)) {
  282.             // line 207
  283.             echo "                // 規格1フォームの必須チェック
  284.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  285.                     \$('#classcategory_id1')[0].setCustomValidity('";
  286.             // line 209
  287.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  288.             echo "');
  289.                     return true;
  290.                 } else {
  291.                     \$('#classcategory_id1')[0].setCustomValidity('');
  292.                 }
  293.                 ";
  294.         }
  295.         // line 215
  296.         echo "
  297.                 ";
  298.         // line 216
  299.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue216)) {
  300.             // line 217
  301.             echo "                // 規格2フォームの必須チェック
  302.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  303.                     \$('#classcategory_id2')[0].setCustomValidity('";
  304.             // line 219
  305.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  306.             echo "');
  307.                     return true;
  308.                 } else {
  309.                     \$('#classcategory_id2')[0].setCustomValidity('');
  310.                 }
  311.                 ";
  312.         }
  313.         // line 225
  314.         echo "
  315.                 // 個数フォームのチェック
  316.                 if (\$('#quantity').val() < 1) {
  317.                     \$('#quantity')[0].setCustomValidity('";
  318.         // line 228
  319.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  320.         echo "');
  321.                     return true;
  322.                 } else {
  323.                     \$('#quantity')[0].setCustomValidity('');
  324.                 }
  325.                 event.preventDefault();
  326.                 \$form = \$('#form1');
  327.                 \$.ajax({
  328.                     url: \$form.attr('action'),
  329.                     type: \$form.attr('method'),
  330.                     data: \$form.serialize(),
  331.                     dataType: 'json',
  332.                     beforeSend: function(xhr, settings) {
  333.                         // Buttonを無効にする
  334.                         \$('.add-cart').prop('disabled', true);
  335.                     }
  336.                 }).done(function(data) {
  337.                     // レスポンス内のメッセージをalertで表示
  338.                     \$.each(data.messages, function() {
  339.                         \$('#ec-modal-header').text(this);
  340.                     });
  341.                     \$('.ec-modal').show()
  342.                     // カートブロックを更新する
  343.                     \$.ajax({
  344.                         url: \"";
  345.         // line 255
  346.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  347.         echo "\",
  348.                         type: 'GET',
  349.                         dataType: 'html'
  350.                     }).done(function(html) {
  351.                         \$('.ec-headerRole__cart').html(html);
  352.                     });
  353.                 }).fail(function(data) {
  354.                     alert('";
  355.         // line 262
  356.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  357.         echo "');
  358.                 }).always(function(data) {
  359.                     // Buttonを有効にする
  360.                     \$('.add-cart').prop('disabled', false);
  361.                 });
  362.             });
  363.         });
  364.         \$('.ec-modal-overlay, .ec-modal .ec-inlineBtn--cancel').on('click', function() {
  365.             \$('.ec-modal').hide()
  366.         });
  367.     </script>
  368.     <script>
  369.         \$(function() {
  370.             // bfcache無効化
  371.             \$(window).bind('pageshow', function(event) {
  372.                 if (event.originalEvent.persisted) {
  373.                     location.reload(true);
  374.                 }
  375.             });
  376.             
  377.             \$('.item_visual').slick({
  378.                 dots: false,
  379.                 arrows: false,
  380.                 infinite: false,
  381.             });
  382.             \$('.slideThumb:first-child').addClass(\"is-current\");
  383.             
  384.             \$('.slideThumb').on('click', function() {
  385.                 var index = \$(this).attr('data-index');
  386.                 var visual = \$('.slideThumb');
  387.                 \$(visual).removeClass(\"is-current\");
  388.                 \$(this).addClass(\"is-current\");
  389.                 \$('.item_visual').slick('slickGoTo', index, false);
  390.             });
  391.         });
  392.     </script>
  393.     
  394.     <script src=\"";
  395.         // line 301
  396.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/js/jquery.colorbox-min.js"), "html"nulltrue);
  397.         echo "\"></script>
  398.     <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.19/jquery.touchSwipe.min.js\"></script>
  399.     <script>
  400.         \$(document).bind('cbox_open', function(){
  401.             var test = document.getElementById('colorbox');
  402.             test.insertAdjacentHTML('beforebegin','<button type=\"button\" id=\"cboxCloseSP\"></button>');
  403.             if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)) {
  404.                 \$('#cboxCloseSP').on('click', function(){
  405.                     \$.colorbox.close();
  406.                     \$(\"#cboxCloseSP\").remove();
  407.                 });
  408.                 
  409.                 \$('#colorbox').swipe({
  410.                     swipeLeft:function(){
  411.                       \$.colorbox.next()
  412.                     },
  413.                     swipeRight:function(){
  414.                       \$.colorbox.prev()
  415.                     },
  416.                     threshold:0
  417.                 });
  418.             }
  419.             return false;
  420.         });
  421.         \$(document).ready(function(){
  422.             if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)) {
  423.                 \$(\"#cboxCurrent\").remove();
  424.                 \$(\".gallery-slide\").colorbox({
  425.                     rel:'slideshow',
  426.                     maxWidth:\"90%\",
  427.                     maxHeight:\"90%\",
  428.                     opacity: 0.7,
  429.                     overlayClose: true,
  430.                     returnFocus:false,
  431.                     onOpen:function() {
  432.                       var ycoord = \$(this).scrollTop();
  433.                       \$('#colorbox').data('ycoord',ycoord);
  434.                       ycoord = ycoord * -1;
  435.                       \$('body').css('position','fixed').css('left','0px').css('right','0px').css('top',ycoord + 'px');
  436.                     },
  437.                     onClosed:function(){
  438.                       \$('#cboxOverlay').removeClass('customization');
  439.                       \$('body').css('position','').css('left','auto').css('right','auto').css('top','auto');
  440.                       \$(window).scrollTop(\$('#colorbox').data('ycoord'));
  441.                     },
  442.                     onComplete: function() {
  443.                         \$.colorbox.position(0);
  444.                     }
  445.                 });
  446.                 \$('.gallery-slide').on('click', function(){
  447.                   \$('#cboxOverlay').addClass('customization');
  448.                 });
  449.             }
  450.             return false;
  451.         });
  452.         \$('.gallery-slide').on('click', function(){
  453.             if(window.matchMedia(\"(max-width: 768px)\").matches){
  454.                 return false;
  455.             }
  456.         });
  457.     </script>
  458. ";
  459.         
  460.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  461.         
  462.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  463.     }
  464.     // line 364
  465.     public function block_main($context, array $blocks = [])
  466.     {
  467.         $macros $this->macros;
  468.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  469.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  470.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  471.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  472.         // line 365
  473.         echo "    <link rel=\"stylesheet\" href=\"";
  474.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/js/colorbox/colorbox.css"), "html"nulltrue);
  475.         echo "\">
  476.     <div class=\"ec-productRole\">
  477.     
  478.         ";
  479.         // line 369
  480.         echo "        <ul class=\"ec-productRole__tags\">
  481.             ";
  482.         // line 370
  483.         $context['_parent'] = $context;
  484.         $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.'370$this->source); })()), "Tags", [], "any"falsefalsetrue370));
  485.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  486.             // line 371
  487.             echo "                <li class=\"ec-productRole__tag tag_";
  488.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsetrue371), 371$this->source), "html"nulltrue);
  489.             echo "\">";
  490.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed($context["Tag"], 371$this->source), "html"nulltrue);
  491.             echo "</li>
  492.             ";
  493.         }
  494.         $_parent $context['_parent'];
  495.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  496.         $context array_intersect_key($context$_parent) + $_parent;
  497.         // line 373
  498.         echo "        </ul>
  499.         ";
  500.         // line 375
  501.         echo "        <div class=\"ec-productRole__title\">
  502.             <h2 class=\"ec-headingTitle\">";
  503.         // line 376
  504.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'376$this->source); })()), "name", [], "any"falsefalsetrue376), 376$this->source), "html"nulltrue);
  505.         echo "</h2>
  506.         </div>
  507.     
  508.     
  509.         <div class=\"ec-grid2\">
  510.             <div class=\"ec-grid2__cell\">
  511.                 <div class=\"ec-sliderItemRole\">
  512.                     <div class=\"item_visual\">
  513.                         ";
  514.         // line 385
  515.         $context['_parent'] = $context;
  516.         $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.'385$this->source); })()), "ProductImage", [], "any"falsefalsetrue385));
  517.         $context['_iterated'] = false;
  518.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  519.             // line 386
  520.             echo "                            <a href=\"";
  521.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 386$this->source), "save_image"), "html"nulltrue);
  522.             echo "\" class=\"gallery-slide\">
  523.                                 <div class=\"slide-item\">
  524.                                     <img src=\"";
  525.             // line 388
  526.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 388$this->source), "save_image"), "html"nulltrue);
  527.             echo "\">
  528.                                     <div class=\"icon_zoom\"><img src=\"";
  529.             // line 389
  530.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/icon_zoom.svg"), "html"nulltrue);
  531.             echo "\"></div>
  532.                                 </div>
  533.                             </a>
  534.                         ";
  535.             $context['_iterated'] = true;
  536.         }
  537.         if (!$context['_iterated']) {
  538.             // line 393
  539.             echo "                            <div class=\"slide-item\"><img src=\"";
  540.             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);
  541.             echo "\"/></div>
  542.                         ";
  543.         }
  544.         $_parent $context['_parent'];
  545.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  546.         $context array_intersect_key($context$_parent) + $_parent;
  547.         // line 395
  548.         echo "                    </div>
  549.                     <div class=\"item_nav\">
  550.                         ";
  551.         // line 397
  552.         $context['_parent'] = $context;
  553.         $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.'397$this->source); })()), "ProductImage", [], "any"falsefalsetrue397));
  554.         $context['loop'] = [
  555.           'parent' => $context['_parent'],
  556.           'index0' => 0,
  557.           'index'  => 1,
  558.           'first'  => true,
  559.         ];
  560.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  561.             $length count($context['_seq']);
  562.             $context['loop']['revindex0'] = $length 1;
  563.             $context['loop']['revindex'] = $length;
  564.             $context['loop']['length'] = $length;
  565.             $context['loop']['last'] = === $length;
  566.         }
  567.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  568.             // line 398
  569.             echo "                            <div class=\"slideThumb\" data-index=\"";
  570.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsetrue398), 398$this->source), "html"nulltrue);
  571.             echo "\"><img src=\"";
  572.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 398$this->source), "save_image"), "html"nulltrue);
  573.             echo "\"></div>
  574.                         ";
  575.             ++$context['loop']['index0'];
  576.             ++$context['loop']['index'];
  577.             $context['loop']['first'] = false;
  578.             if (isset($context['loop']['length'])) {
  579.                 --$context['loop']['revindex0'];
  580.                 --$context['loop']['revindex'];
  581.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  582.             }
  583.         }
  584.         $_parent $context['_parent'];
  585.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  586.         $context array_intersect_key($context$_parent) + $_parent;
  587.         // line 400
  588.         echo "                    </div>
  589.                 </div>
  590.             </div>
  591.             <div class=\"ec-grid2__cell\">
  592.                 <div class=\"ec-productRole__profile\">
  593.                     
  594.                     ";
  595.         // line 407
  596.         echo "                    ";
  597.         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.'407$this->source); })()), "hasProductClass", [], "any"falsefalsetrue407)) {
  598.             // line 408
  599.             echo "<div class=\"ec-productRole__priceRegular\">
  600.                             ";
  601.             // line 409
  602.             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.'409$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue409)) && (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"falsefalsetrue409) == 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); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue409)))) {
  603.                 // line 410
  604.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  605.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  606.                 echo ":<span class=\"price01-default\">";
  607.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'410$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue410), 410$this->source)), "html"nulltrue);
  608.                 echo "</span></span>
  609.                                 <span class=\"ec-productRole__priceRegularTax\">";
  610.                 // line 411
  611.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  612.                 echo "</span>
  613.                             ";
  614.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 412
  615. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'412$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue412)) &&  !(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.'412$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue412)))) {
  616.                 // line 413
  617.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  618.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  619.                 echo ":<span class=\"price01-default\">";
  620.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'413$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue413), 413$this->source)), "html"nulltrue);
  621.                 echo "~ ";
  622.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'413$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue413), 413$this->source)), "html"nulltrue);
  623.                 echo "</span></span>
  624.                                 <span class=\"ec-productRole__priceRegularTax\">";
  625.                 // line 414
  626.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  627.                 echo "</span>
  628.                             ";
  629.             }
  630.             // line 416
  631.             echo "                        </div>
  632.                     ";
  633.         } else {
  634.             // line 418
  635.             echo "                        ";
  636.             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.'418$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue418))) {
  637.                 // line 419
  638.                 echo "                            <span class=\"ec-productRole__priceRegularPrice\">";
  639.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  640.                 echo ":";
  641.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'419$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue419), 419$this->source)), "html"nulltrue);
  642.                 echo "</span>
  643.                             <span class=\"ec-productRole__priceRegularTax\">";
  644.                 // line 420
  645.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  646.                 echo "</span>
  647.                         ";
  648.             }
  649.             // line 422
  650.             echo "                    ";
  651.         }
  652.         // line 423
  653.         echo "                    ";
  654.         // line 424
  655.         echo "                    <div class=\"ec-productRole__price\">
  656.                         ";
  657.         // line 425
  658.         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.'425$this->source); })()), "hasProductClass", [], "any"falsefalsetrue425)) {
  659.             // line 426
  660.             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.'426$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue426) == 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.'426$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue426))) {
  661.                 // line 427
  662.                 echo "                                <div class=\"ec-price\">
  663.                                     <span class=\"ec-price__price price02-default\">";
  664.                 // line 428
  665.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'428$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue428), 428$this->source)), "html"nulltrue);
  666.                 echo "</span>
  667.                                     <span class=\"ec-price__tax\">";
  668.                 // line 429
  669.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  670.                 echo "</span>
  671.                                 </div>
  672.                             ";
  673.             } else {
  674.                 // line 432
  675.                 echo "                                <div class=\"ec-price\">
  676.                                     <span class=\"ec-price__price price02-default\">";
  677.                 // line 433
  678.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'433$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue433), 433$this->source)), "html"nulltrue);
  679.                 echo " ~ ";
  680.                 echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'433$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue433), 433$this->source)), "html"nulltrue);
  681.                 echo "</span>
  682.                                     <span class=\"ec-price__tax\">";
  683.                 // line 434
  684.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  685.                 echo "</span>
  686.                                 </div>
  687.                             ";
  688.             }
  689.             // line 437
  690.             echo "                        ";
  691.         } else {
  692.             // line 438
  693.             echo "                            <div class=\"ec-price\">
  694.                                 <span class=\"ec-price__price\">";
  695.             // line 439
  696.             echo twig_escape_filter($this->envtwig_number_format_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'439$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue439), 439$this->source)), "html"nulltrue);
  697.             echo "</span>
  698.                                 <span class=\"ec-price__tax\">";
  699.             // line 440
  700.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("円(税込)"), "html"nulltrue);
  701.             echo "</span>
  702.                             </div>
  703.                         ";
  704.         }
  705.         // line 443
  706.         echo "                    </div>
  707.                     ";
  708.         // line 445
  709.         echo "                    <div class=\"ec-productRole__point ec-productRole__code point-display-container\" style=\"display:none\">
  710.                         <span class=\"product-point-default\">";
  711.         // line 446
  712.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("joolendisplaypoints4.front.point.label"), "html"nulltrue);
  713.         echo "</span>
  714.                         <span class=\"point-display\"></span>
  715.                     </div>
  716.                     <div class=\"border__box\">
  717.                         ";
  718.         // line 451
  719.         echo "                        ";
  720.         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.'451$this->source); })()), "code_min", [], "any"falsefalsetrue451))) {
  721.             // line 452
  722.             echo "                            <div class=\"ec-productRole__code\">
  723.                                 ";
  724.             // line 453
  725.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  726.             echo ": <span class=\"product-code-default\">";
  727.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'453$this->source); })()), "code_min", [], "any"falsefalsetrue453), 453$this->source), "html"nulltrue);
  728.             if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'453$this->source); })()), "code_min", [], "any"falsefalsetrue453) != 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.'453$this->source); })()), "code_max", [], "any"falsefalsetrue453))) {
  729.                 echo " ~ ";
  730.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'453$this->source); })()), "code_max", [], "any"falsefalsetrue453), 453$this->source), "html"nulltrue);
  731.             }
  732.             echo "</span>
  733.                             </div>
  734.                         ";
  735.         }
  736.         // line 456
  737.         echo "                        <form action=\"";
  738.         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.'456$this->source); })()), "id", [], "any"falsefalsetrue456)]), "html"nulltrue);
  739.         echo "\" method=\"post\" id=\"form1\" name=\"form1\" class=\"conversion_box\">
  740.                             ";
  741.         // line 457
  742.         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.'457$this->source); })()), "stock_find", [], "any"falsefalsetrue457)) {
  743.             // line 458
  744.             echo "                                <div class=\"ec-productRole__actions\">
  745.                                     ";
  746.             // line 459
  747.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue459)) {
  748.                 // line 460
  749.                 echo "                                        <div class=\"ec-select\">
  750.                                             ";
  751.                 // line 461
  752.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'461$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue461), 461$this->source), 'widget');
  753.                 echo "
  754.                                             ";
  755.                 // line 462
  756.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'462$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue462), 462$this->source), 'errors');
  757.                 echo "
  758.                                         </div>
  759.                                         ";
  760.                 // line 464
  761.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue464)) {
  762.                     // line 465
  763.                     echo "                                            <div class=\"ec-select\">
  764.                                                 ";
  765.                     // line 466
  766.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'466$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue466), 466$this->source), 'widget');
  767.                     echo "
  768.                                                 ";
  769.                     // line 467
  770.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'467$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue467), 467$this->source), 'errors');
  771.                     echo "
  772.                                             </div>
  773.                                         ";
  774.                 }
  775.                 // line 470
  776.                 echo "                                    ";
  777.             }
  778.             // line 471
  779.             echo "                                </div>
  780.                                 <div class=\"ec-productRole__btn conversion_btn\">
  781.                                     <div class=\"ec-numberInput select_amount\"><span class=\"amount\">";
  782.             // line 473
  783.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  784.             echo "</span>
  785.                                         ";
  786.             // line 474
  787.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'474$this->source); })()), "quantity", [], "any"falsefalsetrue474), 474$this->source), 'widget');
  788.             echo "
  789.                                         ";
  790.             // line 475
  791.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'475$this->source); })()), "quantity", [], "any"falsefalsetrue475), 475$this->source), 'errors');
  792.             echo "
  793.                                     </div>
  794.                                     <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  795.                                         ";
  796.             // line 478
  797.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  798.             echo "
  799. ";
  800.             // line 480
  801.             echo "                                    </button>
  802.                                 </div>
  803.                             ";
  804.         } else {
  805.             // line 483
  806.             echo "                                <div class=\"ec-productRole__btn conversion_btn\">
  807.                                     <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  808.                                         ";
  809.             // line 485
  810.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  811.             echo "
  812.                                     </button>
  813.                                 </div>
  814.                             ";
  815.         }
  816.         // line 489
  817.         echo "    
  818.                             ";
  819.         // line 490
  820.         echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'490$this->source); })()), 490$this->source), 'rest');
  821.         echo "
  822.                         </form>
  823.                     </div>
  824.                     <div class=\"ec-modal\">
  825.                         <div class=\"ec-modal-overlay\">
  826.                             <div class=\"ec-modal-wrap\">
  827.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  828.         // line 496
  829.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  830.         echo "\" alt=\"\"/></span></span>
  831.                                 <div id=\"ec-modal-header\" class=\"text-center\">";
  832.         // line 497
  833.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  834.         echo "</div>
  835.                                 <div class=\"ec-modal-box\">
  836.                                     <div class=\"ec-role\">
  837.                                         <span class=\"ec-inlineBtn--cancel\">";
  838.         // line 500
  839.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  840.         echo "</span>
  841.                                         <a href=\"";
  842.         // line 501
  843.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  844.         echo "\" class=\"ec-inlineBtn--action\">";
  845.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  846.         echo "</a>
  847.                                     </div>
  848.                                 </div>
  849.                             </div>
  850.                         </div>
  851.                     </div>
  852.                     ";
  853.         // line 507
  854.         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.'507$this->source); })()), "option_favorite_product", [], "any"falsefalsetrue507)) {
  855.             // line 508
  856.             echo "                        <form action=\"";
  857.             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.'508$this->source); })()), "id", [], "any"falsefalsetrue508)]), "html"nulltrue);
  858.             echo "\" method=\"post\">
  859.                             <div class=\"ec-productRole__btn\">
  860.                                 ";
  861.             // line 510
  862.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'510$this->source); })()) == false)) {
  863.                 // line 511
  864.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel btn_outline\">
  865.                                         <span class=\"ec-icon\"><img src=\"";
  866.                 // line 512
  867.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/icon_heart_line.svg"), "html"nulltrue);
  868.                 echo "\" alt=\"\"/></span>";
  869.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  870.                 echo "
  871.                                     </button>
  872.                                 ";
  873.             } else {
  874.                 // line 515
  875.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  876.                                             disabled=\"disabled\">";
  877.                 // line 516
  878.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  879.                 echo "
  880.                                     </button>
  881.                                 ";
  882.             }
  883.             // line 519
  884.             echo "                            </div>
  885.                         </form>
  886.                     ";
  887.         }
  888.         // line 522
  889.         echo "                </div>
  890.             </div>
  891.         </div>
  892.         
  893.         <div class=\"ec-productRole__description\">
  894.             ";
  895.         // line 527
  896.         echo nl2br($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'527$this->source); })()), "description_detail", [], "any"falsefalsetrue527), 527$this->source));
  897.         echo "
  898.         </div>
  899.         ";
  900.         // line 530
  901.         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.'530$this->source); })()), "freearea", [], "any"falsefalsetrue530)) {
  902.             // line 531
  903.             echo "             <div class=\"ec-productRole__description\">
  904.                  ";
  905.             // line 532
  906.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$contexttwig_template_from_string($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'532$this->source); })()), "freearea", [], "any"falsefalsetrue532), 532$this->source)), array(), truefalsetrue);
  907.             echo "
  908.             </div>
  909.         ";
  910.         }
  911.         // line 535
  912.         echo "        ";
  913.         // line 536
  914.         echo "        ";
  915.         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.'536$this->source); })()), "ProductCategories", [], "any"falsefalsetrue536))) {
  916.             // line 537
  917.             echo "            <div class=\"ec-productRole__category ec-productRole__description\">
  918.                 <h3><label>";
  919.             // line 538
  920.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html"nulltrue);
  921.             echo "</label></h3>
  922.                 ";
  923.             // line 539
  924.             $context['_parent'] = $context;
  925.             $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.'539$this->source); })()), "ProductCategories", [], "any"falsefalsetrue539));
  926.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  927.                 // line 540
  928.                 echo "                    <ul>
  929.                         <li>
  930.                             ";
  931.                 // line 542
  932.                 $context['_parent'] = $context;
  933.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue542), "path", [], "any"falsefalsetrue542));
  934.                 $context['loop'] = [
  935.                   'parent' => $context['_parent'],
  936.                   'index0' => 0,
  937.                   'index'  => 1,
  938.                   'first'  => true,
  939.                 ];
  940.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  941.                     $length count($context['_seq']);
  942.                     $context['loop']['revindex0'] = $length 1;
  943.                     $context['loop']['revindex'] = $length;
  944.                     $context['loop']['length'] = $length;
  945.                     $context['loop']['last'] = === $length;
  946.                 }
  947.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  948.                     // line 543
  949.                     echo "                                <a href=\"";
  950.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  951.                     echo "?category_id=";
  952.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue543), 543$this->source), "html"nulltrue);
  953.                     echo "\">";
  954.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsetrue543), 543$this->source), "html"nulltrue);
  955.                     echo "</a>";
  956.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue543) == false)) {
  957.                         // line 544
  958.                         echo "                                <span>></span>";
  959.                     }
  960.                     ++$context['loop']['index0'];
  961.                     ++$context['loop']['index'];
  962.                     $context['loop']['first'] = false;
  963.                     if (isset($context['loop']['length'])) {
  964.                         --$context['loop']['revindex0'];
  965.                         --$context['loop']['revindex'];
  966.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  967.                     }
  968.                 }
  969.                 $_parent $context['_parent'];
  970.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  971.                 $context array_intersect_key($context$_parent) + $_parent;
  972.                 // line 546
  973.                 echo "                        </li>
  974.                     </ul>
  975.                 ";
  976.             }
  977.             $_parent $context['_parent'];
  978.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  979.             $context array_intersect_key($context$_parent) + $_parent;
  980.             // line 549
  981.             echo "            </div>
  982.         ";
  983.         }
  984.         // line 551
  985.         echo "    </div>
  986.     
  987.     ";
  988.         // line 553
  989.         $this->loadTemplate("Block/guide.twig""Product/detail.twig"553)->display($context);
  990.         // line 554
  991.         echo "    
  992. ";
  993.         
  994.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  995.         
  996.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  997.     }
  998.     public function getTemplateName()
  999.     {
  1000.         return "Product/detail.twig";
  1001.     }
  1002.     public function isTraitable()
  1003.     {
  1004.         return false;
  1005.     }
  1006.     public function getDebugInfo()
  1007.     {
  1008.         return array (  1024 => 554,  1022 => 553,  1018 => 551,  1014 => 549,  1006 => 546,  991 => 544,  982 => 543,  965 => 542,  961 => 540,  957 => 539,  953 => 538,  950 => 537,  947 => 536,  945 => 535,  939 => 532,  936 => 531,  934 => 530,  928 => 527,  921 => 522,  916 => 519,  910 => 516,  907 => 515,  899 => 512,  896 => 511,  894 => 510,  888 => 508,  886 => 507,  875 => 501,  871 => 500,  865 => 497,  861 => 496,  852 => 490,  849 => 489,  842 => 485,  838 => 483,  833 => 480,  829 => 478,  823 => 475,  819 => 474,  815 => 473,  811 => 471,  808 => 470,  802 => 467,  798 => 466,  795 => 465,  793 => 464,  788 => 462,  784 => 461,  781 => 460,  779 => 459,  776 => 458,  774 => 457,  769 => 456,  757 => 453,  754 => 452,  751 => 451,  744 => 446,  741 => 445,  738 => 443,  732 => 440,  728 => 439,  725 => 438,  722 => 437,  716 => 434,  710 => 433,  707 => 432,  701 => 429,  697 => 428,  694 => 427,  692 => 426,  690 => 425,  687 => 424,  685 => 423,  682 => 422,  677 => 420,  670 => 419,  667 => 418,  663 => 416,  658 => 414,  649 => 413,  647 => 412,  643 => 411,  636 => 410,  634 => 409,  631 => 408,  628 => 407,  620 => 400,  601 => 398,  584 => 397,  580 => 395,  571 => 393,  562 => 389,  558 => 388,  552 => 386,  547 => 385,  535 => 376,  532 => 375,  529 => 373,  518 => 371,  514 => 370,  511 => 369,  504 => 365,  494 => 364,  422 => 301,  380 => 262,  370 => 255,  340 => 228,  335 => 225,  326 => 219,  322 => 217,  320 => 216,  317 => 215,  308 => 209,  304 => 207,  302 => 206,  296 => 202,  288 => 200,  286 => 199,  281 => 197,  278 => 196,  276 => 195,  262 => 184,  259 => 183,  249 => 182,  75 => 16,  65 => 15,  54 => 11,  52 => 13,  39 => 11,);
  1009.     }
  1010.     public function getSourceContext()
  1011.     {
  1012.         return new Source("{#
  1013. This file is part of EC-CUBE
  1014. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1015. http://www.ec-cube.co.jp/
  1016. For the full copyright and license information, please view the LICENSE
  1017. file that was distributed with this source code.
  1018. #}
  1019. {% extends 'default_frame.twig' %}
  1020. {% set body_class = 'product_page' %}
  1021. {% block stylesheet %}
  1022.     <style>
  1023.         .slick-slider {
  1024.             margin-bottom: 12px;
  1025.         }
  1026.         .item_visual{
  1027.             opacity: 0;
  1028.             transition: opacity .3s linear;
  1029.         }
  1030.         .item_visual.slick-initialized.slick-slider{
  1031.             opacity: 1;
  1032.         }
  1033.         .item_visual .slide-item:focus,
  1034.         .item_visual .slide-item:focus-visible{
  1035.             outline: none;
  1036.         }
  1037.         #colorbox #cboxContent {
  1038.           background-color: transparent;
  1039.           padding: 8px 70px;
  1040.         }
  1041.         #cboxOverlay{
  1042.             background: hsla(0,0%,88.6%,.9);
  1043.         }
  1044.         #cboxContent,
  1045.         #cboxLoadedContent{
  1046.             background: transparent;
  1047.             border: none;
  1048.         }
  1049.         .cboxPhoto{
  1050.             border-radius: 4px;
  1051.         }
  1052.         #cboxPrevious,
  1053.         #cboxNext{
  1054.             position: absolute;
  1055.             top: 50%;
  1056.             background: #fff;
  1057.             padding: 10px;
  1058.             border-radius: 50px;
  1059.             width: 40px;
  1060.             height: 40px;
  1061.             z-index: 100;
  1062.         } 
  1063.         #cboxPrevious{
  1064.             left: 0px;
  1065.         }
  1066.         #cboxPrevious::before{
  1067.             content: \"\";
  1068.             display: inline-block;
  1069.             padding: 3px;
  1070.             margin: 0 10px;
  1071.             border-left: 2px solid #000;
  1072.             border-bottom: 2px solid #000;
  1073.             transform: rotate(45deg);
  1074.             position: absolute;
  1075.             top: 15px;
  1076.             left: 8px;
  1077.         }
  1078.         #cboxNext{
  1079.             right: 0px;
  1080.         }
  1081.         #cboxNext::before{
  1082.             content: \"\";
  1083.             display: inline-block;
  1084.             padding: 3px;
  1085.             margin: 0 10px;
  1086.             border-top: 2px solid #000;
  1087.             border-right: 2px solid #000;
  1088.             transform: rotate(45deg);
  1089.             position: absolute;
  1090.             top: 15px;
  1091.             right: 8px;
  1092.         }
  1093.         #cboxSlideshow{
  1094.             display: none;
  1095.         }
  1096.         
  1097.         #cboxClose{
  1098.             background: #fff;
  1099.             padding: 10px;
  1100.             border-radius: 50px;
  1101.             top: -10px;
  1102.             right: 0px;
  1103.             width: 40px;
  1104.             height: 40px;
  1105.             cursor: pointer;
  1106.             display: block;
  1107.         }
  1108.         #cboxClose::before,
  1109.         #cboxClose::after{
  1110.             content: \"\";
  1111.             display: block;
  1112.             background-color: #000;
  1113.             position: absolute;
  1114.             top: 0;
  1115.             left: 0;
  1116.             right: 0;
  1117.             bottom: 0;
  1118.             margin: auto;
  1119.             width: 1.25vw;
  1120.             height: 1px;
  1121.         }
  1122.         #cboxClose::before{
  1123.             transform: rotate(45deg);
  1124.         }
  1125.         #cboxClose::after{
  1126.             transform: rotate(-45deg);
  1127.         }
  1128.         #cboxCloseSP{
  1129.             display: none;
  1130.         }
  1131.         @media only screen and (max-width: 767px) {
  1132.             .item_visual a:hover{
  1133.                 opacity: 1;
  1134.                 outline: none;
  1135.             }
  1136.             #colorbox #cboxContent{
  1137.                 padding: 0;
  1138.             }
  1139.             #cboxClose{
  1140.                 display: none;
  1141.             }
  1142.             #cboxClose::before,
  1143.             #cboxClose::after{
  1144.                 width: 5vw;
  1145.             }
  1146.             #cboxPrevious,
  1147.             #cboxNext{
  1148.                 display: none!important;
  1149.             }
  1150.             #cboxCloseSP{
  1151.                 display: block;
  1152.                 position: absolute;
  1153.                 background: #fff;
  1154.                 padding: 10px;
  1155.                 border-radius: 50px;
  1156.                 border: none;
  1157.                 width: 40px;
  1158.                 height: 40px;
  1159.                 cursor: pointer;
  1160.                 top: 10px;
  1161.                 right: 10px;
  1162.                 z-index: 9999;
  1163.             }
  1164.             #cboxCloseSP::before,
  1165.             #cboxCloseSP::after{
  1166.                 content: \"\";
  1167.                 display: block;
  1168.                 background-color: #000;
  1169.                 position: absolute;
  1170.                 top: 0;
  1171.                 left: 0;
  1172.                 right: 0;
  1173.                 bottom: 0;
  1174.                 margin: auto;
  1175.                 width: 5vw;
  1176.                 height: 1px;
  1177.             }
  1178.             #cboxCloseSP::before{
  1179.                 transform: rotate(45deg);
  1180.             }
  1181.             #cboxCloseSP::after{
  1182.                 transform: rotate(-45deg);
  1183.             }
  1184.         }
  1185.     </style>
  1186. {% endblock %}
  1187. {% block javascript %}
  1188.     <script>
  1189.         eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1190.         // 規格2に選択肢を割り当てる。
  1191.         function fnSetClassCategories(form, classcat_id2_selected) {
  1192.             var \$form = \$(form);
  1193.             var product_id = \$form.find('input[name=product_id]').val();
  1194.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1195.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1196.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1197.         }
  1198.         {% if form.classcategory_id2 is defined %}
  1199.         fnSetClassCategories(
  1200.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1201.         );
  1202.         {% elseif form.classcategory_id1 is defined %}
  1203.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1204.         {% endif %}
  1205.     </script>
  1206.     <script>
  1207.         \$(function() {
  1208.             \$('.add-cart').on('click', function(event) {
  1209.                 {% if form.classcategory_id1 is defined %}
  1210.                 // 規格1フォームの必須チェック
  1211.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1212.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1213.                     return true;
  1214.                 } else {
  1215.                     \$('#classcategory_id1')[0].setCustomValidity('');
  1216.                 }
  1217.                 {% endif %}
  1218.                 {% if form.classcategory_id2 is defined %}
  1219.                 // 規格2フォームの必須チェック
  1220.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1221.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1222.                     return true;
  1223.                 } else {
  1224.                     \$('#classcategory_id2')[0].setCustomValidity('');
  1225.                 }
  1226.                 {% endif %}
  1227.                 // 個数フォームのチェック
  1228.                 if (\$('#quantity').val() < 1) {
  1229.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1230.                     return true;
  1231.                 } else {
  1232.                     \$('#quantity')[0].setCustomValidity('');
  1233.                 }
  1234.                 event.preventDefault();
  1235.                 \$form = \$('#form1');
  1236.                 \$.ajax({
  1237.                     url: \$form.attr('action'),
  1238.                     type: \$form.attr('method'),
  1239.                     data: \$form.serialize(),
  1240.                     dataType: 'json',
  1241.                     beforeSend: function(xhr, settings) {
  1242.                         // Buttonを無効にする
  1243.                         \$('.add-cart').prop('disabled', true);
  1244.                     }
  1245.                 }).done(function(data) {
  1246.                     // レスポンス内のメッセージをalertで表示
  1247.                     \$.each(data.messages, function() {
  1248.                         \$('#ec-modal-header').text(this);
  1249.                     });
  1250.                     \$('.ec-modal').show()
  1251.                     // カートブロックを更新する
  1252.                     \$.ajax({
  1253.                         url: \"{{ url('block_cart') }}\",
  1254.                         type: 'GET',
  1255.                         dataType: 'html'
  1256.                     }).done(function(html) {
  1257.                         \$('.ec-headerRole__cart').html(html);
  1258.                     });
  1259.                 }).fail(function(data) {
  1260.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1261.                 }).always(function(data) {
  1262.                     // Buttonを有効にする
  1263.                     \$('.add-cart').prop('disabled', false);
  1264.                 });
  1265.             });
  1266.         });
  1267.         \$('.ec-modal-overlay, .ec-modal .ec-inlineBtn--cancel').on('click', function() {
  1268.             \$('.ec-modal').hide()
  1269.         });
  1270.     </script>
  1271.     <script>
  1272.         \$(function() {
  1273.             // bfcache無効化
  1274.             \$(window).bind('pageshow', function(event) {
  1275.                 if (event.originalEvent.persisted) {
  1276.                     location.reload(true);
  1277.                 }
  1278.             });
  1279.             
  1280.             \$('.item_visual').slick({
  1281.                 dots: false,
  1282.                 arrows: false,
  1283.                 infinite: false,
  1284.             });
  1285.             \$('.slideThumb:first-child').addClass(\"is-current\");
  1286.             
  1287.             \$('.slideThumb').on('click', function() {
  1288.                 var index = \$(this).attr('data-index');
  1289.                 var visual = \$('.slideThumb');
  1290.                 \$(visual).removeClass(\"is-current\");
  1291.                 \$(this).addClass(\"is-current\");
  1292.                 \$('.item_visual').slick('slickGoTo', index, false);
  1293.             });
  1294.         });
  1295.     </script>
  1296.     
  1297.     <script src=\"{{ asset('assets/js/jquery.colorbox-min.js') }}\"></script>
  1298.     <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.19/jquery.touchSwipe.min.js\"></script>
  1299.     <script>
  1300.         \$(document).bind('cbox_open', function(){
  1301.             var test = document.getElementById('colorbox');
  1302.             test.insertAdjacentHTML('beforebegin','<button type=\"button\" id=\"cboxCloseSP\"></button>');
  1303.             if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)) {
  1304.                 \$('#cboxCloseSP').on('click', function(){
  1305.                     \$.colorbox.close();
  1306.                     \$(\"#cboxCloseSP\").remove();
  1307.                 });
  1308.                 
  1309.                 \$('#colorbox').swipe({
  1310.                     swipeLeft:function(){
  1311.                       \$.colorbox.next()
  1312.                     },
  1313.                     swipeRight:function(){
  1314.                       \$.colorbox.prev()
  1315.                     },
  1316.                     threshold:0
  1317.                 });
  1318.             }
  1319.             return false;
  1320.         });
  1321.         \$(document).ready(function(){
  1322.             if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)) {
  1323.                 \$(\"#cboxCurrent\").remove();
  1324.                 \$(\".gallery-slide\").colorbox({
  1325.                     rel:'slideshow',
  1326.                     maxWidth:\"90%\",
  1327.                     maxHeight:\"90%\",
  1328.                     opacity: 0.7,
  1329.                     overlayClose: true,
  1330.                     returnFocus:false,
  1331.                     onOpen:function() {
  1332.                       var ycoord = \$(this).scrollTop();
  1333.                       \$('#colorbox').data('ycoord',ycoord);
  1334.                       ycoord = ycoord * -1;
  1335.                       \$('body').css('position','fixed').css('left','0px').css('right','0px').css('top',ycoord + 'px');
  1336.                     },
  1337.                     onClosed:function(){
  1338.                       \$('#cboxOverlay').removeClass('customization');
  1339.                       \$('body').css('position','').css('left','auto').css('right','auto').css('top','auto');
  1340.                       \$(window).scrollTop(\$('#colorbox').data('ycoord'));
  1341.                     },
  1342.                     onComplete: function() {
  1343.                         \$.colorbox.position(0);
  1344.                     }
  1345.                 });
  1346.                 \$('.gallery-slide').on('click', function(){
  1347.                   \$('#cboxOverlay').addClass('customization');
  1348.                 });
  1349.             }
  1350.             return false;
  1351.         });
  1352.         \$('.gallery-slide').on('click', function(){
  1353.             if(window.matchMedia(\"(max-width: 768px)\").matches){
  1354.                 return false;
  1355.             }
  1356.         });
  1357.     </script>
  1358. {% endblock %}
  1359. {% block main %}
  1360.     <link rel=\"stylesheet\" href=\"{{ asset('assets/js/colorbox/colorbox.css') }}\">
  1361.     <div class=\"ec-productRole\">
  1362.     
  1363.         {# タグ #}
  1364.         <ul class=\"ec-productRole__tags\">
  1365.             {% for Tag in Product.Tags %}
  1366.                 <li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  1367.             {% endfor %}
  1368.         </ul>
  1369.         {# 商品名 #}
  1370.         <div class=\"ec-productRole__title\">
  1371.             <h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  1372.         </div>
  1373.     
  1374.     
  1375.         <div class=\"ec-grid2\">
  1376.             <div class=\"ec-grid2__cell\">
  1377.                 <div class=\"ec-sliderItemRole\">
  1378.                     <div class=\"item_visual\">
  1379.                         {% for ProductImage in Product.ProductImage %}
  1380.                             <a href=\"{{ asset(ProductImage, 'save_image') }}\" class=\"gallery-slide\">
  1381.                                 <div class=\"slide-item\">
  1382.                                     <img src=\"{{ asset(ProductImage, 'save_image') }}\">
  1383.                                     <div class=\"icon_zoom\"><img src=\"{{ asset('assets/icon/icon_zoom.svg') }}\"></div>
  1384.                                 </div>
  1385.                             </a>
  1386.                         {% else %}
  1387.                             <div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\"/></div>
  1388.                         {% endfor %}
  1389.                     </div>
  1390.                     <div class=\"item_nav\">
  1391.                         {% for ProductImage in Product.ProductImage %}
  1392.                             <div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\"></div>
  1393.                         {% endfor %}
  1394.                     </div>
  1395.                 </div>
  1396.             </div>
  1397.             <div class=\"ec-grid2__cell\">
  1398.                 <div class=\"ec-productRole__profile\">
  1399.                     
  1400.                     {# 通常価格 #}
  1401.                     {% if Product.hasProductClass -%}
  1402.                         <div class=\"ec-productRole__priceRegular\">
  1403.                             {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1404.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|number_format }}</span></span>
  1405.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '円(税込)'|trans }}</span>
  1406.                             {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1407.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|number_format }}~ {{ Product.getPrice01IncTaxMax|number_format }}</span></span>
  1408.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '円(税込)'|trans }}</span>
  1409.                             {% endif %}
  1410.                         </div>
  1411.                     {% else %}
  1412.                         {% if Product.getPrice01Max is not null %}
  1413.                             <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|number_format }}</span>
  1414.                             <span class=\"ec-productRole__priceRegularTax\">{{ '円(税込)'|trans }}</span>
  1415.                         {% endif %}
  1416.                     {% endif %}
  1417.                     {# 販売価格 #}
  1418.                     <div class=\"ec-productRole__price\">
  1419.                         {% if Product.hasProductClass -%}
  1420.                             {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1421.                                 <div class=\"ec-price\">
  1422.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|number_format }}</span>
  1423.                                     <span class=\"ec-price__tax\">{{ '円(税込)'|trans }}</span>
  1424.                                 </div>
  1425.                             {% else %}
  1426.                                 <div class=\"ec-price\">
  1427.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|number_format }} ~ {{ Product.getPrice02IncTaxMax|number_format }}</span>
  1428.                                     <span class=\"ec-price__tax\">{{ '円(税込)'|trans }}</span>
  1429.                                 </div>
  1430.                             {% endif %}
  1431.                         {% else %}
  1432.                             <div class=\"ec-price\">
  1433.                                 <span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|number_format }}</span>
  1434.                                 <span class=\"ec-price__tax\">{{ '円(税込)'|trans }}</span>
  1435.                             </div>
  1436.                         {% endif %}
  1437.                     </div>
  1438.                     {# ポイント #}
  1439.                     <div class=\"ec-productRole__point ec-productRole__code point-display-container\" style=\"display:none\">
  1440.                         <span class=\"product-point-default\">{{ 'joolendisplaypoints4.front.point.label'|trans }}</span>
  1441.                         <span class=\"point-display\"></span>
  1442.                     </div>
  1443.                     <div class=\"border__box\">
  1444.                         {# 商品コード #}
  1445.                         {% if Product.code_min is not empty %}
  1446.                             <div class=\"ec-productRole__code\">
  1447.                                 {{ '商品コード'|trans }}: <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  1448.                             </div>
  1449.                         {% endif %}
  1450.                         <form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\" class=\"conversion_box\">
  1451.                             {% if Product.stock_find %}
  1452.                                 <div class=\"ec-productRole__actions\">
  1453.                                     {% if form.classcategory_id1 is defined %}
  1454.                                         <div class=\"ec-select\">
  1455.                                             {{ form_widget(form.classcategory_id1) }}
  1456.                                             {{ form_errors(form.classcategory_id1) }}
  1457.                                         </div>
  1458.                                         {% if form.classcategory_id2 is defined %}
  1459.                                             <div class=\"ec-select\">
  1460.                                                 {{ form_widget(form.classcategory_id2) }}
  1461.                                                 {{ form_errors(form.classcategory_id2) }}
  1462.                                             </div>
  1463.                                         {% endif %}
  1464.                                     {% endif %}
  1465.                                 </div>
  1466.                                 <div class=\"ec-productRole__btn conversion_btn\">
  1467.                                     <div class=\"ec-numberInput select_amount\"><span class=\"amount\">{{ '数量'|trans }}</span>
  1468.                                         {{ form_widget(form.quantity) }}
  1469.                                         {{ form_errors(form.quantity) }}
  1470.                                     </div>
  1471.                                     <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  1472.                                         {{ 'カートに入れる'|trans }}
  1473. {#                                         <span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/icon_cart_wh.svg') }}\" alt=\"カートアイコン\"/></span> #}
  1474.                                     </button>
  1475.                                 </div>
  1476.                             {% else %}
  1477.                                 <div class=\"ec-productRole__btn conversion_btn\">
  1478.                                     <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1479.                                         {{ 'ただいま品切れ中です。'|trans }}
  1480.                                     </button>
  1481.                                 </div>
  1482.                             {% endif %}
  1483.     
  1484.                             {{ form_rest(form) }}
  1485.                         </form>
  1486.                     </div>
  1487.                     <div class=\"ec-modal\">
  1488.                         <div class=\"ec-modal-overlay\">
  1489.                             <div class=\"ec-modal-wrap\">
  1490.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  1491.                                 <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1492.                                 <div class=\"ec-modal-box\">
  1493.                                     <div class=\"ec-role\">
  1494.                                         <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1495.                                         <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  1496.                                     </div>
  1497.                                 </div>
  1498.                             </div>
  1499.                         </div>
  1500.                     </div>
  1501.                     {% if BaseInfo.option_favorite_product %}
  1502.                         <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1503.                             <div class=\"ec-productRole__btn\">
  1504.                                 {% if is_favorite == false %}
  1505.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel btn_outline\">
  1506.                                         <span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/icon_heart_line.svg') }}\" alt=\"\"/></span>{{ 'お気に入りに追加'|trans }}
  1507.                                     </button>
  1508.                                 {% else %}
  1509.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  1510.                                             disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  1511.                                     </button>
  1512.                                 {% endif %}
  1513.                             </div>
  1514.                         </form>
  1515.                     {% endif %}
  1516.                 </div>
  1517.             </div>
  1518.         </div>
  1519.         
  1520.         <div class=\"ec-productRole__description\">
  1521.             {{ Product.description_detail|raw|nl2br }}
  1522.         </div>
  1523.         {% if Product.freearea %}
  1524.              <div class=\"ec-productRole__description\">
  1525.                  {{ include(template_from_string(Product.freearea), sandboxed = true) }}
  1526.             </div>
  1527.         {% endif %}
  1528.         {# 関連カテゴリ #}
  1529.         {% if Product.ProductCategories is not empty %}
  1530.             <div class=\"ec-productRole__category ec-productRole__description\">
  1531.                 <h3><label>{{ '関連カテゴリ'|trans }}</label></h3>
  1532.                 {% for ProductCategory in Product.ProductCategories %}
  1533.                     <ul>
  1534.                         <li>
  1535.                             {% for Category in ProductCategory.Category.path %}
  1536.                                 <a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  1537.                                 <span>></span>{% endif -%}
  1538.                             {% endfor %}
  1539.                         </li>
  1540.                     </ul>
  1541.                 {% endfor %}
  1542.             </div>
  1543.         {% endif %}
  1544.     </div>
  1545.     
  1546.     {% include 'Block/guide.twig' %}
  1547.     
  1548. {% endblock %}""Product/detail.twig""/home/nakatomishop/www/NfNudtBdkd/app/template/default/Product/detail.twig");
  1549.     }
  1550.     
  1551.     public function checkSecurity()
  1552.     {
  1553.         static $tags = array("set" => 13"if" => 195"for" => 370"include" => 553);
  1554.         static $filters = array("raw" => 184"json_encode" => 197"escape" => 200"trans" => 209"no_image_product" => 393"number_format" => 410"nl2br" => 527);
  1555.         static $functions = array("class_categories_as_json" => 184"url" => 255"asset" => 301"form_widget" => 461"form_errors" => 462"form_rest" => 490"include" => 532"template_from_string" => 532);
  1556.         try {
  1557.             $this->sandbox->checkSecurity(
  1558.                 ['set''if''for''include'],
  1559.                 ['raw''json_encode''escape''trans''no_image_product''number_format''nl2br'],
  1560.                 ['class_categories_as_json''url''asset''form_widget''form_errors''form_rest''include''template_from_string']
  1561.             );
  1562.         } catch (SecurityError $e) {
  1563.             $e->setSourceContext($this->source);
  1564.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  1565.                 $e->setTemplateLine($tags[$e->getTagName()]);
  1566.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  1567.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  1568.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  1569.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  1570.             }
  1571.             throw $e;
  1572.         }
  1573.     }
  1574. }