var/cache/dev/twig/9b/9ba8fff9bfdd0b604178f3f51e9be875.php line 42

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Product/detail.twig */
  14. class __TwigTemplate_5c590d3b1215fdbafc7d493a1cf5eac1 extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.         $this->sandbox $this->env->getExtension('\Twig\Extension\SandboxExtension');
  28.         $this->checkSecurity();
  29.     }
  30.     protected function doGetParent(array $context)
  31.     {
  32.         // line 11
  33.         return "default_frame.twig";
  34.     }
  35.     protected function doDisplay(array $context, array $blocks = [])
  36.     {
  37.         $macros $this->macros;
  38.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  39.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  41.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  42.         // line 13
  43.         $context["body_class"] = "product_page";
  44.         // line 11
  45.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  46.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  49.         
  50.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  51.     }
  52.     // line 15
  53.     public function block_stylesheet($context, array $blocks = [])
  54.     {
  55.         $macros $this->macros;
  56.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  57.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  59.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  60.         // line 16
  61.         echo "    <style>
  62.         .slick-slider {
  63.             margin-bottom: 30px;
  64.         }
  65.         .slick-dots {
  66.             position: absolute;
  67.             bottom: -45px;
  68.             display: block;
  69.             width: 100%;
  70.             padding: 0;
  71.             list-style: none;
  72.             text-align: center;
  73.         }
  74.         .slick-dots li {
  75.             position: relative;
  76.             display: inline-block;
  77.             width: 20px;
  78.             height: 20px;
  79.             margin: 0 5px;
  80.             padding: 0;
  81.             cursor: pointer;
  82.         }
  83.         .slick-dots li button {
  84.             font-size: 0;
  85.             line-height: 0;
  86.             display: block;
  87.             width: 20px;
  88.             height: 20px;
  89.             padding: 5px;
  90.             cursor: pointer;
  91.             color: transparent;
  92.             border: 0;
  93.             outline: none;
  94.             background: transparent;
  95.         }
  96.         .slick-dots li button:hover,
  97.         .slick-dots li button:focus {
  98.             outline: none;
  99.         }
  100.         .slick-dots li button:hover:before,
  101.         .slick-dots li button:focus:before {
  102.             opacity: 1;
  103.         }
  104.         .slick-dots li button:before {
  105.             content: \" \";
  106.             line-height: 20px;
  107.             position: absolute;
  108.             top: 0;
  109.             left: 0;
  110.             width: 12px;
  111.             height: 12px;
  112.             text-align: center;
  113.             opacity: .25;
  114.             background-color: black;
  115.             border-radius: 50%;
  116.         }
  117.         .slick-dots li.slick-active button:before {
  118.             opacity: .75;
  119.             background-color: black;
  120.         }
  121.         .slick-dots li button.thumbnail img {
  122.             width: 0;
  123.             height: 0;
  124.         }
  125.     </style>
  126. ";
  127.         
  128.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  129.         
  130.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  131.     }
  132.     // line 95
  133.     public function block_javascript($context, array $blocks = [])
  134.     {
  135.         $macros $this->macros;
  136.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  137.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  138.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  139.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  140.         // line 96
  141.         echo "    <script>
  142.         eccube.classCategories = ";
  143.         // line 97
  144.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($this->sandbox->ensureToStringAllowed((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'97$this->source); })()), 97$this->source));
  145.         echo ";
  146.         // 規格2に選択肢を割り当てる。
  147.         function fnSetClassCategories(form, classcat_id2_selected) {
  148.             var \$form = \$(form);
  149.             var product_id = \$form.find('input[name=product_id]').val();
  150.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  151.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  152.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  153.         }
  154.         ";
  155.         // line 108
  156.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue108)) {
  157.             // line 109
  158.             echo "        fnSetClassCategories(
  159.             \$('#form1'), ";
  160.             // line 110
  161.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'110$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue110), "vars", [], "any"falsefalsetrue110), "value", [], "any"falsefalsetrue110), 110$this->source));
  162.             echo "
  163.         );
  164.         ";
  165.         } elseif (twig_get_attribute($this->env$this->source,         // line 112
  166. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue112)) {
  167.             // line 113
  168.             echo "        eccube.checkStock(\$('#form1'), ";
  169.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'113$this->source); })()), "id", [], "any"falsefalsetrue113), 113$this->source), "html"nulltrue);
  170.             echo ", ";
  171.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'113$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue113), "vars", [], "any"falsefalsetrue113), "value", [], "any"falsefalsetrue113), 113$this->source));
  172.             echo ", null);
  173.         ";
  174.         }
  175.         // line 115
  176.         echo "    </script>
  177.     <script>
  178.         \$(function() {
  179.             // bfcache無効化
  180.             \$(window).bind('pageshow', function(event) {
  181.                 if (event.originalEvent.persisted) {
  182.                     location.reload(true);
  183.                 }
  184.             });
  185.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  186.             // img タグに width, height が付与されている.
  187.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  188.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  189.             \$('.ec-grid2__cell').hide();
  190.             var removeSize = function () {
  191.                 \$('.slide-item').height('');
  192.                 \$('.slide-item img')
  193.                     .removeAttr('width')
  194.                     .removeAttr('height')
  195.                     .removeAttr('style');
  196.             };
  197.             var slickInitial = function(slick) {
  198.                 \$('.ec-grid2__cell').fadeIn(1500);
  199.                 var baseHeight = \$(slick.target).height();
  200.                 var baseWidth = \$(slick.target).width();
  201.                 var rate = baseWidth / baseHeight;
  202.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  203.                 // transform を使用することでCLSの影響を受けないようにする
  204.                 \$('.slide-item img')
  205.                     .css(
  206.                         {
  207.                             'transform-origin': 'top left',
  208.                             'transform': 'scaleY(' + rate + ')',
  209.                             'transition': 'transform .1s'
  210.                         }
  211.                     );
  212.                 // 正しいサイズに近くなったら属性を解除する
  213.                 setTimeout(removeSize, 500);
  214.             };
  215.             \$('.item_visual').on('init', slickInitial);
  216.             // リサイズ時は CLS の影響を受けないため属性を解除する
  217.             \$(window).resize(removeSize);
  218.             \$('.item_visual').slick({
  219.                 dots: false,
  220.                 arrows: false,
  221.                 responsive: [{
  222.                     breakpoint: 768,
  223.                     settings: {
  224.                         dots: true
  225.                     }
  226.                 }]
  227.             });
  228.             \$('.slideThumb').on('click', function() {
  229.                 var index = \$(this).attr('data-index');
  230.                 \$('.item_visual').slick('slickGoTo', index, false);
  231.             })
  232.         });
  233.     </script>
  234.     <script>
  235.         \$(function() {
  236.             \$('.add-cart').on('click', function(event) {
  237.                 // 入力チェックここから
  238.                 if(\$(this).hasClass('add-cart_left') || \$(this).hasClass('add-cart_set') || \$(this).hasClass('add-cart_no_type')) {
  239.                     var data_0_classcategory_id1 = document.getElementById(\"form_data_0_classcategory_id1\");
  240.                     if (data_0_classcategory_id1 === null) {
  241.                     } else {
  242.                         // 規格1フォームの必須チェック
  243.                         if (\$('#form_data_0_classcategory_id1').val() == '__unselected' || \$('#form_data_0_classcategory_id1').val() == '') {
  244.                             \$('#form_data_0_classcategory_id1')[0].setCustomValidity('";
  245.         // line 186
  246.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  247.         echo "');
  248.                             return true;
  249.                         } else {
  250.                             \$('#form_data_0_classcategory_id1')[0].setCustomValidity('');
  251.                         }
  252.                     }
  253.                     var data_0_classcategory_id2 = document.getElementById(\"form_data_0_classcategory_id2\");
  254.                     if (data_0_classcategory_id2 === null) {
  255.                     } else {
  256.                         // 規格2フォームの必須チェック
  257.                         if (\$('#form_data_0_classcategory_id2').val() == '__unselected' || \$('#form_data_0_classcategory_id2').val() == '') {
  258.                             \$('#form_data_0_classcategory_id2')[0].setCustomValidity('";
  259.         // line 197
  260.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  261.         echo "');
  262.                             return true;
  263.                         } else {
  264.                             \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  265.                         }
  266.                     }
  267.                     // サイズの入力チェックは結婚指輪・婚約指輪の場合のみ
  268.                     var category=0;
  269.                     ";
  270.         // line 205
  271.         $context['_parent'] = $context;
  272.         $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.'205$this->source); })()), "ProductCategories", [], "any"falsefalsetrue205));
  273.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  274.             // line 206
  275.             echo "                        ";
  276.             if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue206), "id", [], "any"falsefalsetrue206) == 1)) {
  277.                 // line 207
  278.                 echo "                            // 結婚指輪
  279.                             category = 1;
  280.                         ";
  281.             } elseif ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,             // line 209
  282. $context["ProductCategory"], "Category", [], "any"falsefalsetrue209), "id", [], "any"falsefalsetrue209) == 2)) {
  283.                 // line 210
  284.                 echo "                            // 婚約指輪
  285.                             category = 2;
  286.                         ";
  287.             }
  288.             // line 213
  289.             echo "                    ";
  290.         }
  291.         $_parent $context['_parent'];
  292.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  293.         $context array_intersect_key($context$_parent) + $_parent;
  294.         // line 214
  295.         echo "                    if (category == 1 || category == 2) {
  296.                         var form_data_0_size = document.getElementById(\"form_data_0_size\");
  297.                         if (form_data_0_size === null) {
  298.                         } else {
  299.                             // サイズ フォームの必須チェック
  300.                             if (\$('#form_data_0_size').val() == '__unselected' || \$('#form_data_0_size').val() == '') {
  301.                                 \$('#form_data_0_size')[0].setCustomValidity('";
  302.         // line 220
  303.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  304.         echo "');
  305.                                 return true;
  306.                             } else {
  307.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  308.                             }
  309.                         }
  310.                     }
  311.                 }
  312.            
  313.                 if(\$(this).hasClass('add-cart_right') || \$(this).hasClass('add-cart_set')) {
  314.                     var data_1_classcategory_id1 = document.getElementById(\"form_data_1_classcategory_id1\");
  315.                     if (data_1_classcategory_id1 === null) {
  316.                     } else {
  317.                         // 規格1フォームの必須チェック
  318.                         if (\$('#form_data_1_classcategory_id1').val() == '__unselected' || \$('#form_data_1_classcategory_id1').val() == '') {
  319.                             \$('#form_data_1_classcategory_id1')[0].setCustomValidity('";
  320.         // line 235
  321.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  322.         echo "');
  323.                             if (\$(this).hasClass('add-cart_right')) {
  324.                                 \$('#form_data_0_classcategory_id1')[0].setCustomValidity('');
  325.                                 \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  326.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  327.                             }
  328.                             return true;
  329.                         } else {
  330.                             \$('#form_data_1_classcategory_id1')[0].setCustomValidity('');
  331.                         }
  332.                     }
  333.                     var data_1_classcategory_id2 = document.getElementById(\"form_data_1_classcategory_id2\");
  334.                     if (data_1_classcategory_id2 === null) {
  335.                     } else {
  336.                         // 規格2フォームの必須チェック
  337.                         if (\$('#form_data_1_classcategory_id2').val() == '__unselected' || \$('#form_data_1_classcategory_id2').val() == '') {
  338.                             \$('#form_data_1_classcategory_id2')[0].setCustomValidity('";
  339.         // line 251
  340.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  341.         echo "');
  342.                             if (\$(this).hasClass('add-cart_right')) {
  343.                                 \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  344.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  345.                             }
  346.                             return true;
  347.                         } else {
  348.                             \$('#form_data_1_classcategory_id2')[0].setCustomValidity('');
  349.                         }
  350.                     }
  351.                     var form_data_1_size = document.getElementById(\"form_data_1_size\");
  352.                     if (form_data_1_size === null) {
  353.                     } else {
  354.                         // サイズ フォームの必須チェック
  355.                         if (\$('#form_data_1_size').val() == '__unselected' || \$('#form_data_1_size').val() == '') {
  356.                             \$('#form_data_1_size')[0].setCustomValidity('";
  357.         // line 266
  358.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  359.         echo "');
  360.                             if (\$(this).hasClass('add-cart_right')) {
  361.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  362.                             }
  363.                             return true;
  364.                         } else {
  365.                             \$('#form_data_1_size')[0].setCustomValidity('');
  366.                         }
  367.                     }
  368.                 }
  369.                 if(\$(this).hasClass('add-cart_left')) {
  370.                     document.getElementById(\"form1\").action = \"";
  371.         // line 278
  372.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_addmulti_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.'278$this->source); })()), "id", [], "any"falsefalsetrue278), "type" => "left"]), "html"nulltrue);
  373.         echo "\";
  374.                 } else if(\$(this).hasClass('add-cart_right')) {
  375.                     document.getElementById(\"form1\").action = \"";
  376.         // line 280
  377.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_addmulti_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.'280$this->source); })()), "id", [], "any"falsefalsetrue280), "type" => "right"]), "html"nulltrue);
  378.         echo "\";
  379.                 } else if(\$(this).hasClass('add-cart_set')) {
  380.                     document.getElementById(\"form1\").action = \"";
  381.         // line 282
  382.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_addmulti_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.'282$this->source); })()), "id", [], "any"falsefalsetrue282), "type" => "set"]), "html"nulltrue);
  383.         echo "\";
  384.                 }
  385.                 // 入力チェックここまで
  386.                 
  387.                 ";
  388.         // line 286
  389.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue286)) {
  390.             // line 287
  391.             echo "                // 規格1フォームの必須チェック
  392.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  393.                     \$('#classcategory_id1')[0].setCustomValidity('";
  394.             // line 289
  395.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  396.             echo "');
  397.                     return true;
  398.                 } else {
  399.                     \$('#classcategory_id1')[0].setCustomValidity('');
  400.                 }
  401.                 ";
  402.         }
  403.         // line 295
  404.         echo "
  405.                 ";
  406.         // line 296
  407.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue296)) {
  408.             // line 297
  409.             echo "                // 規格2フォームの必須チェック
  410.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  411.                     \$('#classcategory_id2')[0].setCustomValidity('";
  412.             // line 299
  413.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  414.             echo "');
  415.                     return true;
  416.                 } else {
  417.                     \$('#classcategory_id2')[0].setCustomValidity('');
  418.                 }
  419.                 ";
  420.         }
  421.         // line 305
  422.         echo "
  423.                 // 個数フォームのチェック
  424.                 /*
  425.                 if (\$('#quantity').val() < 1) {
  426.                     \$('#quantity')[0].setCustomValidity('";
  427.         // line 309
  428.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  429.         echo "');
  430.                     return true;
  431.                 } else {
  432.                     \$('#quantity')[0].setCustomValidity('');
  433.                 }
  434.                 */
  435.                 
  436.                 event.preventDefault();
  437.                 \$form = \$('#form1');
  438.                 \$.ajax({
  439.                     url: \$form.attr('action'),
  440.                     type: \$form.attr('method'),
  441.                     data: \$form.serialize(),
  442.                     dataType: 'json',
  443.                     beforeSend: function(xhr, settings) {
  444.                         // Buttonを無効にする
  445.                         \$('.add-cart').prop('disabled', true);
  446.                     }
  447.                 }).done(function(data) {
  448.                     // レスポンス内のメッセージをalertで表示
  449.                     \$.each(data.messages, function() {
  450.                         \$('#ec-modal-header').text(this);
  451.                     });
  452.                     \$('.ec-modal').show()
  453.                     // カートブロックを更新する
  454.                     \$.ajax({
  455.                         url: \"";
  456.         // line 337
  457.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  458.         echo "\",
  459.                         type: 'GET',
  460.                         dataType: 'html'
  461.                     }).done(function(html) {
  462.                         \$('.ec-headerRole__cart').html(html);
  463.                     });
  464.                 }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
  465.                     console.log(\"XMLHttpRequest : \" + XMLHttpRequest.status);
  466.                     console.log(\"textStatus     : \" + textStatus);
  467.                     console.log(\"errorThrown    : \" + errorThrown.message);
  468.                     alert('";
  469.         // line 347
  470.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  471.         echo "');
  472.                 }).always(function(data) {
  473.                     // Buttonを有効にする
  474.                     \$('.add-cart').prop('disabled', false);
  475.                 });
  476.             });
  477.         });
  478.         \$('.ec-modal-wrap').on('click', function(e) {
  479.             // モーダル内の処理は外側にバブリングさせない
  480.             e.stopPropagation();
  481.         });
  482.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  483.             \$('.ec-modal').hide()
  484.         });
  485.     </script>
  486.     <script type=\"application/ld+json\">
  487.     {
  488.         \"@context\": \"https://schema.org/\",
  489.         \"@type\": \"Product\",
  490.         \"name\": \"";
  491.         // line 367
  492.         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.'367$this->source); })()), "name", [], "any"falsefalsetrue367), 367$this->source), "html"nulltrue);
  493.         echo "\",
  494.         \"image\": [
  495.             ";
  496.         // line 369
  497.         $context['_parent'] = $context;
  498.         $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.'369$this->source); })()), "ProductImage", [], "any"falsefalsetrue369));
  499.         $context['_iterated'] = false;
  500.         $context['loop'] = [
  501.           'parent' => $context['_parent'],
  502.           'index0' => 0,
  503.           'index'  => 1,
  504.           'first'  => true,
  505.         ];
  506.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  507.             $length count($context['_seq']);
  508.             $context['loop']['revindex0'] = $length 1;
  509.             $context['loop']['revindex'] = $length;
  510.             $context['loop']['length'] = $length;
  511.             $context['loop']['last'] = === $length;
  512.         }
  513.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  514.             // line 370
  515.             echo "                \"";
  516.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'370$this->source); })()), "request", [], "any"falsefalsetrue370), "schemeAndHttpHost", [], "any"falsefalsetrue370), 370$this->source), "html"nulltrue);
  517.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 370$this->source), "save_image"), "html"nulltrue);
  518.             echo "\"";
  519.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue370)) {
  520.                 echo ",";
  521.             }
  522.             // line 371
  523.             echo "
  524.             ";
  525.             $context['_iterated'] = true;
  526.             ++$context['loop']['index0'];
  527.             ++$context['loop']['index'];
  528.             $context['loop']['first'] = false;
  529.             if (isset($context['loop']['length'])) {
  530.                 --$context['loop']['revindex0'];
  531.                 --$context['loop']['revindex'];
  532.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  533.             }
  534.         }
  535.         if (!$context['_iterated']) {
  536.             // line 373
  537.             echo "                \"";
  538.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'373$this->source); })()), "request", [], "any"falsefalsetrue373), "schemeAndHttpHost", [], "any"falsefalsetrue373), 373$this->source), "html"nulltrue);
  539.             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);
  540.             echo "\"
  541.             ";
  542.         }
  543.         $_parent $context['_parent'];
  544.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  545.         $context array_intersect_key($context$_parent) + $_parent;
  546.         // line 375
  547.         echo "        ],
  548.         // description_list 使わない 2024.10 \"description\": \"";
  549.         // line 376
  550.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruetrue376)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsetrue376), 376$this->source), $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'376$this->source); })()), "description_detail", [], "any"falsefalsetrue376), 376$this->source))) : (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'376$this->source); })()), "description_detail", [], "any"falsefalsetrue376))), ["
  551. => """ " => ""]), 0300), "html"nulltrue);
  552.         echo "\",
  553.         \"description\": \"";
  554.         // line 377
  555.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter($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.'377$this->source); })()), "description_detail", [], "any"falsefalsetrue377), 377$this->source), ["
  556. => """ " => ""]), 0300), "html"nulltrue);
  557.         echo "\",
  558.         ";
  559.         // line 378
  560.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'378$this->source); })()), "code_min", [], "any"falsefalsetrue378)) {
  561.             // line 379
  562.             echo "        \"sku\": \"";
  563.             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.'379$this->source); })()), "code_min", [], "any"falsefalsetrue379), 379$this->source), "html"nulltrue);
  564.             echo "\",
  565.         ";
  566.         }
  567.         // line 381
  568.         echo "        \"offers\": {
  569.             \"@type\": \"Offer\",
  570.             \"url\": \"";
  571.         // line 383
  572.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'383$this->source); })()), "id", [], "any"falsefalsetrue383)]), "html"nulltrue);
  573.         echo "\",
  574.             \"priceCurrency\": \"";
  575.         // line 384
  576.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["eccube_config"]) || array_key_exists("eccube_config"$context) ? $context["eccube_config"] : (function () { throw new RuntimeError('Variable "eccube_config" does not exist.'384$this->source); })()), "currency", [], "any"falsefalsetrue384), 384$this->source), "html"nulltrue);
  577.         echo "\",
  578.             \"price\": ";
  579.         // line 385
  580.         ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'385$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue385)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'385$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue385), "html"nulltrue))) : (print (0)));
  581.         echo ",
  582.             \"availability\": \"";
  583.         // line 386
  584.         echo ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'386$this->source); })()), "stock_find", [], "any"falsefalsetrue386)) ? ("InStock") : ("OutOfStock"));
  585.         echo "\"
  586.         }
  587.     }
  588.     </script>
  589.     <script>
  590.         var localfavo = localStorage.getItem('favo');
  591.         if(localfavo) {
  592.             var lsfavo = JSON.parse(localfavo);
  593.             if (lsfavo.length) {
  594.                 console.log(lsfavo);
  595.                 for (i=0;i<lsfavo.length;i++) {
  596.                     if(lsfavo[i][0] == ";
  597.         // line 397
  598.         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.'397$this->source); })()), "id", [], "any"falsefalsetrue397), 397$this->source), "html"nulltrue);
  599.         echo ") {
  600.                         //\$(\"#favorite_local\").removeAttr(\"onclick\");
  601.                         //\$(\"#favorite_local\").prop('disabled', true);
  602.                         \$(\"#favorite_local\").addClass(\"registered\");
  603.                         \$(\"#favorite_local\").html(\"お気に入りに追加済みです\");
  604.                     }
  605.                 }
  606.             }
  607.         }
  608.     </script>
  609.     <script>
  610.         \$(function() {
  611.             //\$('.js_form_add').on('click', function(e) {
  612.                 //e.preventDefault
  613.             var category=0;
  614.             ";
  615.         // line 412
  616.         $context['_parent'] = $context;
  617.         $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.'412$this->source); })()), "ProductCategories", [], "any"falsefalsetrue412));
  618.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  619.             // line 413
  620.             echo "                ";
  621.             if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue413), "id", [], "any"falsefalsetrue413) == 1)) {
  622.                 // line 414
  623.                 echo "                    // 結婚指輪
  624.                     category = 1;
  625.                 ";
  626.             } elseif ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,             // line 416
  627. $context["ProductCategory"], "Category", [], "any"falsefalsetrue416), "id", [], "any"falsefalsetrue416) == 2)) {
  628.                 // line 417
  629.                 echo "                    // 婚約指輪
  630.                     category = 2;
  631.                 ";
  632.             }
  633.             // line 420
  634.             echo "            ";
  635.         }
  636.         $_parent $context['_parent'];
  637.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  638.         $context array_intersect_key($context$_parent) + $_parent;
  639.         // line 421
  640.         echo "            // 結婚指輪は規格1がタイプ、規格2が素材
  641.             // 婚約指輪は規格1が素材、規格2がカラット数
  642.             for (let i = 0; i < 2; i++){ 
  643.                 // Get the data-prototype explained earlier
  644.                 var prototype = \$('.product-class-item').data('prototype');
  645.                 // get the new index
  646.                 var index = \$('.product-class-item').data('index');
  647.                 // Replace '__name__' in the prototype's HTML to
  648.                 // instead be a number based on how many items we have
  649.                 var newForm = '';
  650.                 if (index == 0) {
  651.                     if(category == 1) {
  652.                         newForm += '<div class=\"category1 left_option\"><p class=\"fw-bold\">左のリング:<span class=\"ps-3 fs-3 text-danger fw-normal left_price\"></span></p>';
  653.                     } else if (category == 2) {
  654.                         ";
  655.         // line 435
  656.         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.'435$this->source); })()), "id", [], "any"falsefalsetrue435) == 119)) {
  657.             // line 436
  658.             echo "                            newForm += '<div class=\"category2\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p>';
  659.                         ";
  660.         } else {
  661.             // line 438
  662.             echo "                            newForm += '<div class=\"category2\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p><p>まず素材を選択してください。<br>素材を選択するとダイヤモンドの選択肢が表示されます。</p>';
  663.                         ";
  664.         }
  665.         // line 440
  666.         echo "                    } else {
  667.                         newForm += '<div class=\"category0\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p>';
  668.                     }
  669.                 } else {
  670.                     if(category == 1) {
  671.                         newForm += '<div class=\"category1 right_option\"><p class=\"fw-bold\">右のリング:<span class=\"ps-3 fs-3 text-danger fw-normal right_price\"></span></p>';
  672.                     } else if (category == 2) {
  673.                         newForm += '<div class=\"category2\">';
  674.                     } else {
  675.                         newForm += '<div class=\"category0\">';
  676.                     }
  677.                 }
  678.                 newForm += prototype.replace(/__name__/g, index);
  679.                 newForm += '</div>';
  680.                 // increase the index with one for the next item
  681.                 \$('.product-class-item').data('index', index + 1);
  682.                 // Display the form in the page before the \"new\" link
  683.                 //\$(this).before(newForm);
  684.                 \$('.js_form_add').before(newForm);
  685.             }
  686.             
  687.             if(category == 1) {
  688.                 document.getElementById(\"form_data_0_classcategory_id1\").value = 1;
  689.                 document.getElementById(\"form_data_1_classcategory_id1\").value = 2;
  690.             }
  691.             var data_0_classcategory_id1 = document.getElementById(\"form_data_0_classcategory_id1\");
  692.             if (data_0_classcategory_id1 === null) {
  693.             } else {
  694.                 // 規格2に選択肢を割り当てる。
  695.                 function fnSetClassCategories(form, classcat_id2_selected) {
  696.                     var \$form = \$(form);
  697.                     var product_id = \$form.find('input[name=product_id]').val();
  698.                     var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  699.                     var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  700.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  701.                 }
  702.                 var \$form = \$('#form1');
  703.                 var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  704.                 if (data_0_classcategory_id1 === null) {
  705.                     
  706.                 } else {
  707.                     ";
  708.         // line 481
  709.         if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, ($context["form"] ?? null), "data", [], "any"falsetruetrue481), "vars", [], "any"falsetruetrue481), "prototype", [], "any"falsetruetrue481), "classcategory_id2", [], "any"truetruetrue481)) {
  710.             // line 482
  711.             echo "                        fnSetClassCategories(
  712.                             \$('#form1'), ";
  713.             // line 483
  714.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'483$this->source); })()), "data", [], "any"falsefalsetrue483), "vars", [], "any"falsefalsetrue483), "prototype", [], "any"falsefalsetrue483), "classcategory_id2", [], "any"falsefalsetrue483), "vars", [], "any"falsefalsetrue483), "value", [], "any"falsefalsetrue483), 483$this->source));
  715.             echo "
  716.                         );
  717.                     ";
  718.         } elseif (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,         // line 485
  719. ($context["form"] ?? null), "data", [], "any"falsetruetrue485), "vars", [], "any"falsetruetrue485), "prototype", [], "any"falsetruetrue485), "classcategory_id1", [], "any"truetruetrue485)) {
  720.             // line 486
  721.             echo "                        eccube.checkStock(\$('#form1'), ";
  722.             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.'486$this->source); })()), "id", [], "any"falsefalsetrue486), 486$this->source), "html"nulltrue);
  723.             echo ", ";
  724.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'486$this->source); })()), "data", [], "any"falsefalsetrue486), "vars", [], "any"falsefalsetrue486), "prototype", [], "any"falsefalsetrue486), "classcategory_id1", [], "any"falsefalsetrue486), "vars", [], "any"falsefalsetrue486), "value", [], "any"falsefalsetrue486), 486$this->source));
  725.             echo ", null);
  726.                     ";
  727.         }
  728.         // line 488
  729.         echo "                }
  730.             }
  731.             
  732.             var data_1_classcategory_id1 = document.getElementById(\"form_data_1_classcategory_id1\");
  733.             if (data_1_classcategory_id1 === null) {
  734.             } else {
  735.                 // 規格2に選択肢を割り当てる。
  736.                 function fnSetClassCategories(form, classcat_id2_selected) {
  737.                     var \$form = \$(form);
  738.                     var product_id = \$form.find('input[name=product_id]').val();
  739.                     var \$sele1 = \$form.find('#form_data_1_classcategory_id1');
  740.                     var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  741.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  742.                 }
  743.                 var \$form = \$('#form1');
  744.                 var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  745.                 if (data_0_classcategory_id1 === null) {
  746.                     
  747.                 } else {
  748.                     ";
  749.         // line 507
  750.         if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, ($context["form"] ?? null), "data", [], "any"falsetruetrue507), "vars", [], "any"falsetruetrue507), "prototype", [], "any"falsetruetrue507), "classcategory_id2", [], "any"truetruetrue507)) {
  751.             // line 508
  752.             echo "                        fnSetClassCategories(
  753.                             \$('#form1'), ";
  754.             // line 509
  755.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'509$this->source); })()), "data", [], "any"falsefalsetrue509), "vars", [], "any"falsefalsetrue509), "prototype", [], "any"falsefalsetrue509), "classcategory_id2", [], "any"falsefalsetrue509), "vars", [], "any"falsefalsetrue509), "value", [], "any"falsefalsetrue509), 509$this->source));
  756.             echo "
  757.                         );
  758.                     ";
  759.         } elseif (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,         // line 511
  760. ($context["form"] ?? null), "data", [], "any"falsetruetrue511), "vars", [], "any"falsetruetrue511), "prototype", [], "any"falsetruetrue511), "classcategory_id1", [], "any"truetruetrue511)) {
  761.             // line 512
  762.             echo "                        eccube.checkStock(\$('#form1'), ";
  763.             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.'512$this->source); })()), "id", [], "any"falsefalsetrue512), 512$this->source), "html"nulltrue);
  764.             echo ", ";
  765.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'512$this->source); })()), "data", [], "any"falsefalsetrue512), "vars", [], "any"falsefalsetrue512), "prototype", [], "any"falsefalsetrue512), "classcategory_id1", [], "any"falsefalsetrue512), "vars", [], "any"falsefalsetrue512), "value", [], "any"falsefalsetrue512), 512$this->source));
  766.             echo ", null);
  767.                     ";
  768.         }
  769.         // line 514
  770.         echo "                }
  771.             }
  772.             //});
  773.             ";
  774.         // line 517
  775.         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.'517$this->source); })()), "hasProductClass", [], "any"falsefalsetrue517)) {
  776.             // line 518
  777.             echo "                if(category == 2) {
  778.                     // 婚約指輪は2本同時購入はない
  779.                     const element = document.getElementById('form_data_1'); 
  780.                     element.remove();
  781.                 }
  782.             ";
  783.         } else {
  784.             // line 524
  785.             echo "                // 規格なし
  786.                 \$('#form1').addClass('no_product_class');
  787.                 const element = document.getElementById('form_data_1'); 
  788.                 element.remove();
  789.             ";
  790.         }
  791.         // line 529
  792.         echo "            
  793.             // 婚約指輪で素材が選択されたとき
  794.             if (category == 2) {
  795.                 \$('#form_data_0_classcategory_id1').change(function() {
  796.                     // 規格2に選択肢を割り当てる。
  797.                     function fnSetClassCategories(form, classcat_id2_selected) {
  798.                         var \$form = \$(form);
  799.                         var product_id = \$form.find('input[name=product_id]').val();
  800.                         var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  801.                         var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  802.                         eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  803.                     }
  804.                     
  805.                     var \$form = \$('#form1');
  806.                     var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  807.                     ";
  808.         // line 544
  809.         if (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, ($context["form"] ?? null), "data", [], "any"falsetruetrue544), "vars", [], "any"falsetruetrue544), "prototype", [], "any"falsetruetrue544), "classcategory_id2", [], "any"truetruetrue544)) {
  810.             // line 545
  811.             echo "                    fnSetClassCategories(
  812.                         \$('#form1'), ";
  813.             // line 546
  814.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'546$this->source); })()), "data", [], "any"falsefalsetrue546), "vars", [], "any"falsefalsetrue546), "prototype", [], "any"falsefalsetrue546), "classcategory_id2", [], "any"falsefalsetrue546), "vars", [], "any"falsefalsetrue546), "value", [], "any"falsefalsetrue546), 546$this->source));
  815.             echo "
  816.                     );
  817.                     ";
  818.         } elseif (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,         // line 548
  819. ($context["form"] ?? null), "data", [], "any"falsetruetrue548), "vars", [], "any"falsetruetrue548), "prototype", [], "any"falsetruetrue548), "classcategory_id1", [], "any"truetruetrue548)) {
  820.             // line 549
  821.             echo "                    eccube.checkStock(\$('#form1'), ";
  822.             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.'549$this->source); })()), "id", [], "any"falsefalsetrue549), 549$this->source), "html"nulltrue);
  823.             echo ", ";
  824.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'549$this->source); })()), "data", [], "any"falsefalsetrue549), "vars", [], "any"falsefalsetrue549), "prototype", [], "any"falsefalsetrue549), "classcategory_id1", [], "any"falsefalsetrue549), "vars", [], "any"falsefalsetrue549), "value", [], "any"falsefalsetrue549), 549$this->source));
  825.             echo ", null);
  826.                     ";
  827.         }
  828.         // line 551
  829.         echo "                });
  830.             }
  831.             
  832.             // 選択肢と連動する価格の表示
  833.             ";
  834.         // line 555
  835.         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.'555$this->source); })()), "hasProductClass", [], "any"falsefalsetrue555)) {
  836.             // line 556
  837.             echo "                if(category == 1) {
  838.                     var default_left_price = \$('.ec-layoutRole__main').find('.price02-default_left').first();
  839.                     var default_right_price = \$('.ec-layoutRole__main').find('.price02-default_right').first();
  840.                     \$('.left_price').text(default_left_price.text());
  841.                     \$('.right_price').text(default_right_price.text());
  842.                 } else if(category == 2) {
  843.                     var default_ring_price = \$('.ec-layoutRole__main').find('.price02-default_ring').first();
  844.                     \$('.ring_price').text(default_ring_price.text());
  845.                 }
  846.             ";
  847.         } else {
  848.             // line 566
  849.             echo "                // 規格なし
  850.                 var default_ring_price = \$('.ec-layoutRole__main').find('.price02-default_ring').first();
  851.                 \$('.ring_price').text(default_ring_price.text());
  852.             ";
  853.         }
  854.         // line 570
  855.         echo "            
  856.             // 結婚指輪・婚約指輪以外の場合
  857.             if(category != 1 && category != 2) {
  858.                 \$('#form_data_0_size').parent().css('display','none'); // サイズ不要
  859.             }
  860.             
  861.             // Android firefox 対策
  862.             if (navigator.userAgent.indexOf('Android') > 0) {
  863.                 let main = document.getElementsByTagName('main')[0]; 
  864.                 main.classList.add('Android'); 
  865.             }
  866.         });
  867.     </script>
  868.     <script>
  869.         \$(function() {
  870.             function changePrice(category, change_class, classcategory_id1, classcategory_id2, size, product_id) {
  871.                 var price = '';
  872.                 price = \$('#price_' + classcategory_id1 + '_' + classcategory_id2).text();
  873.                 price = price * 1; //number
  874.                 if (category == 1) { // 結婚指輪の場合のみサイズによる加算あり
  875.                     if (size) {
  876.                         if(size >= 16.5) {
  877.                             price = price + 22000; // 割り増し(税込)
  878.                         } else if(size >= 12.5) {
  879.                             price = price + 11000; // 割り増し(税込)
  880.                         }
  881.                     }
  882.                 } else if(category == 2) { // 婚約指輪の C110、C112の場合のみサイズによる加算あり
  883.                     if (product_id == 110 || product_id == 112) {
  884.                         if (size) {
  885.                             if(size >= 16) {
  886.                                 price = price + 22000; // 割り増し(税込)
  887.                             }
  888.                         }
  889.                     }
  890.                 }
  891.                 price = String(price).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '\$1,');
  892.                 \$(change_class).text(\"¥\" + price);
  893.             }
  894.             
  895.             \$('.form-select').on('change', function(event) {
  896.                 var category=0;
  897.                 ";
  898.         // line 612
  899.         $context['_parent'] = $context;
  900.         $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.'612$this->source); })()), "ProductCategories", [], "any"falsefalsetrue612));
  901.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  902.             // line 613
  903.             echo "                    ";
  904.             if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue613), "id", [], "any"falsefalsetrue613) == 1)) {
  905.                 // line 614
  906.                 echo "                        category = 1; // 結婚指輪
  907.                     ";
  908.             } elseif ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source,             // line 615
  909. $context["ProductCategory"], "Category", [], "any"falsefalsetrue615), "id", [], "any"falsefalsetrue615) == 2)) {
  910.                 // line 616
  911.                 echo "                        category = 2; // 婚約指輪
  912.                     ";
  913.             }
  914.             // line 618
  915.             echo "                ";
  916.         }
  917.         $_parent $context['_parent'];
  918.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  919.         $context array_intersect_key($context$_parent) + $_parent;
  920.         // line 619
  921.         echo "                
  922.                 ";
  923.         // line 620
  924.         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.'620$this->source); })()), "hasProductClass", [], "any"falsefalsetrue620)) {
  925.             // line 621
  926.             echo "                    if (\$(this).attr(\"id\") == 'form_data_0_classcategory_id1') {
  927.                         if (category == 1) {
  928.                             changePrice(category, \".ring_price\", \$(this).val(), '', \$('#form_data_0_size').val(), ";
  929.             // line 623
  930.             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.'623$this->source); })()), "id", [], "any"falsefalsetrue623), 623$this->source), "html"nulltrue);
  931.             echo ");
  932.                         } else if (category == 2) {
  933.                             // 規格2の最安値(class_category2 = 19)を表示
  934.                             changePrice(category, \".ring_price\", \$(this).val(), 19, '', ";
  935.             // line 626
  936.             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.'626$this->source); })()), "id", [], "any"falsefalsetrue626), 626$this->source), "html"nulltrue);
  937.             echo ");
  938.                         }
  939.                     } else if (\$(this).attr(\"id\") == 'form_data_0_classcategory_id2') {
  940.                         if (category == 1) {
  941.                             changePrice(category, \".left_price\", 1, \$(this).val(), \$('#form_data_0_size').val(), ";
  942.             // line 630
  943.             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.'630$this->source); })()), "id", [], "any"falsefalsetrue630), 630$this->source), "html"nulltrue);
  944.             echo ");
  945.                         } else if (category == 2) {
  946.                             changePrice(category, \".ring_price\", \$('#form_data_0_classcategory_id1').val(), \$(this).val(), \$('#form_data_0_size').val(), ";
  947.             // line 632
  948.             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.'632$this->source); })()), "id", [], "any"falsefalsetrue632), 632$this->source), "html"nulltrue);
  949.             echo ");
  950.                         }
  951.                     } else if (\$(this).attr(\"id\") == 'form_data_1_classcategory_id2') {
  952.                         if (category == 1) {
  953.                             changePrice(category, \".right_price\", 2, \$(this).val(), \$('#form_data_1_size').val(), ";
  954.             // line 636
  955.             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.'636$this->source); })()), "id", [], "any"falsefalsetrue636), 636$this->source), "html"nulltrue);
  956.             echo ");
  957.                         }
  958.                     } else if (\$(this).attr(\"id\") == 'form_data_0_size') {
  959.                         if (category == 1) {
  960.                             changePrice(category,\".left_price\", 1, \$('#form_data_0_classcategory_id2').val(), \$(this).val(), ";
  961.             // line 640
  962.             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.'640$this->source); })()), "id", [], "any"falsefalsetrue640), 640$this->source), "html"nulltrue);
  963.             echo ");
  964.                         } else if (category == 2) {
  965.                             changePrice(category, \".ring_price\", \$('#form_data_0_classcategory_id1').val(), \$('#form_data_0_classcategory_id2').val(), \$(this).val(), ";
  966.             // line 642
  967.             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.'642$this->source); })()), "id", [], "any"falsefalsetrue642), 642$this->source), "html"nulltrue);
  968.             echo ");
  969.                         }
  970.                     } else if (\$(this).attr(\"id\") == 'form_data_1_size') {
  971.                         if (category == 1) {
  972.                             changePrice(category, \".right_price\", 2, \$('#form_data_1_classcategory_id2').val(), \$(this).val(), ";
  973.             // line 646
  974.             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.'646$this->source); })()), "id", [], "any"falsefalsetrue646), 646$this->source), "html"nulltrue);
  975.             echo ");
  976.                         }
  977.                     }
  978.                 ";
  979.         } else {
  980.             // line 650
  981.             echo "                    // 規格なし
  982.                     if (\$(this).attr(\"id\") == 'form_data_0_size') {
  983.                         changePrice(category, \".ring_price\", '', '', \$('#form_data_0_size').val(), ";
  984.             // line 652
  985.             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.'652$this->source); })()), "id", [], "any"falsefalsetrue652), 652$this->source), "html"nulltrue);
  986.             echo ");
  987.                     }
  988.                 ";
  989.         }
  990.         // line 655
  991.         echo "            })
  992.         });
  993.     </script>
  994.     <script>
  995.         \$(function() {
  996.             // 119 の場合
  997.             ";
  998.         // line 661
  999.         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.'661$this->source); })()), "id", [], "any"falsefalsetrue661) == 119)) {
  1000.             // line 662
  1001.             echo "                \$('#form_data_0_classcategory_id1').val('27');
  1002.                 \$('#form_data_0_classcategory_id1').parent().css('display','none');
  1003.                 \$('#form_data_0_size').val('11');
  1004.                 \$('#form_data_0_size').parent().css('display','none');
  1005.                 
  1006.                 // 規格2に選択肢を割り当てる。
  1007.                 function fnSetClassCategories(form, classcat_id2_selected) {
  1008.                     var \$form = \$(form);
  1009.                     var product_id = \$form.find('input[name=product_id]').val();
  1010.                     var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  1011.                     var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  1012.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1013.                 }
  1014.                 fnSetClassCategories(
  1015.                     \$('#form1'), ";
  1016.             // line 676
  1017.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'676$this->source); })()), "data", [], "any"falsefalsetrue676), "vars", [], "any"falsefalsetrue676), "prototype", [], "any"falsefalsetrue676), "classcategory_id2", [], "any"falsefalsetrue676), "vars", [], "any"falsefalsetrue676), "value", [], "any"falsefalsetrue676), 676$this->source));
  1018.             echo "
  1019.                 );
  1020.             ";
  1021.         }
  1022.         // line 679
  1023.         echo "        });
  1024.     </script>
  1025. ";
  1026.         
  1027.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1028.         
  1029.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1030.     }
  1031.     // line 683
  1032.     public function block_main($context, array $blocks = [])
  1033.     {
  1034.         $macros $this->macros;
  1035.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  1036.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  1037.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  1038.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  1039.         // line 684
  1040.         echo "    <div class=\"ec-productRole\">
  1041.         <div class=\"ec-grid2\">
  1042.             <div class=\"ec-grid2__cell\">
  1043.                 <div class=\"ec-sliderItemRole\">
  1044.                     <div class=\"item_visual\">
  1045.                         ";
  1046.         // line 690
  1047.         $context["img"] = "";
  1048.         // line 691
  1049.         echo "                        ";
  1050.         $context['_parent'] = $context;
  1051.         $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.'691$this->source); })()), "ProductImage", [], "any"falsefalsetrue691));
  1052.         $context['_iterated'] = false;
  1053.         $context['loop'] = [
  1054.           'parent' => $context['_parent'],
  1055.           'index0' => 0,
  1056.           'index'  => 1,
  1057.           'first'  => true,
  1058.         ];
  1059.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1060.             $length count($context['_seq']);
  1061.             $context['loop']['revindex0'] = $length 1;
  1062.             $context['loop']['revindex'] = $length;
  1063.             $context['loop']['length'] = $length;
  1064.             $context['loop']['last'] = === $length;
  1065.         }
  1066.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  1067.             // line 692
  1068.             echo "                            ";
  1069.             if (twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue692)) {
  1070.                 $context["img"] = $context["ProductImage"];
  1071.             }
  1072.             // line 693
  1073.             echo "                            <div class=\"slide-item\"><img src=\"";
  1074.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 693$this->source), "save_image"), "html"nulltrue);
  1075.             echo "\" alt=\"";
  1076.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue693)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'693$this->source); })()), "name", [], "any"falsefalsetrue693), "html"nulltrue))) : (print ("")));
  1077.             echo "\" width=\"550\" height=\"550\"";
  1078.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsetrue693) > 1)) {
  1079.                 echo " loading=\"lazy\"";
  1080.             }
  1081.             echo "></div>
  1082.                         ";
  1083.             $context['_iterated'] = true;
  1084.             ++$context['loop']['index0'];
  1085.             ++$context['loop']['index'];
  1086.             $context['loop']['first'] = false;
  1087.             if (isset($context['loop']['length'])) {
  1088.                 --$context['loop']['revindex0'];
  1089.                 --$context['loop']['revindex'];
  1090.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  1091.             }
  1092.         }
  1093.         if (!$context['_iterated']) {
  1094.             // line 695
  1095.             echo "                            <div class=\"slide-item\"><img src=\"";
  1096.             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);
  1097.             echo "\" alt=\"";
  1098.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue695)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'695$this->source); })()), "name", [], "any"falsefalsetrue695), "html"nulltrue))) : (print ("")));
  1099.             echo "\" width=\"550\" height=\"550\"></div>
  1100.                         ";
  1101.         }
  1102.         $_parent $context['_parent'];
  1103.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  1104.         $context array_intersect_key($context$_parent) + $_parent;
  1105.         // line 697
  1106.         echo "                    </div>
  1107.                     <div class=\"item_nav\">
  1108.                         ";
  1109.         // line 699
  1110.         $context['_parent'] = $context;
  1111.         $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.'699$this->source); })()), "ProductImage", [], "any"falsefalsetrue699));
  1112.         $context['loop'] = [
  1113.           'parent' => $context['_parent'],
  1114.           'index0' => 0,
  1115.           'index'  => 1,
  1116.           'first'  => true,
  1117.         ];
  1118.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1119.             $length count($context['_seq']);
  1120.             $context['loop']['revindex0'] = $length 1;
  1121.             $context['loop']['revindex'] = $length;
  1122.             $context['loop']['length'] = $length;
  1123.             $context['loop']['last'] = === $length;
  1124.         }
  1125.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  1126.             // line 700
  1127.             echo "                            <div class=\"slideThumb\" data-index=\"";
  1128.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsetrue700), 700$this->source), "html"nulltrue);
  1129.             echo "\"><img src=\"";
  1130.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 700$this->source), "save_image"), "html"nulltrue);
  1131.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  1132.                         ";
  1133.             ++$context['loop']['index0'];
  1134.             ++$context['loop']['index'];
  1135.             $context['loop']['first'] = false;
  1136.             if (isset($context['loop']['length'])) {
  1137.                 --$context['loop']['revindex0'];
  1138.                 --$context['loop']['revindex'];
  1139.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  1140.             }
  1141.         }
  1142.         $_parent $context['_parent'];
  1143.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  1144.         $context array_intersect_key($context$_parent) + $_parent;
  1145.         // line 702
  1146.         echo "                    </div>
  1147.                 </div>
  1148.             </div>
  1149.             <div class=\"ec-grid2__cell\">
  1150.                 <div class=\"ec-productRole__profile\">
  1151.                     ";
  1152.         // line 708
  1153.         echo "                    <div class=\"ec-productRole__title\">
  1154.                         <h2 class=\"ec-headingTitle\">";
  1155.         // line 709
  1156.         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.'709$this->source); })()), "name", [], "any"falsefalsetrue709), 709$this->source), "html"nulltrue);
  1157.         echo "</h2>
  1158.                     </div>
  1159.                     ";
  1160.         // line 712
  1161.         echo "                    <ul class=\"ec-productRole__tags\">
  1162.                         ";
  1163.         // line 713
  1164.         $context['_parent'] = $context;
  1165.         $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.'713$this->source); })()), "Tags", [], "any"falsefalsetrue713));
  1166.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  1167.             // line 714
  1168.             echo "                            <li class=\"ec-productRole__tag tag_";
  1169.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsetrue714), 714$this->source), "html"nulltrue);
  1170.             echo "\">";
  1171.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed($context["Tag"], 714$this->source), "html"nulltrue);
  1172.             echo "</li>
  1173.                         ";
  1174.         }
  1175.         $_parent $context['_parent'];
  1176.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  1177.         $context array_intersect_key($context$_parent) + $_parent;
  1178.         // line 716
  1179.         echo "                    </ul>
  1180.                     ";
  1181.         // line 718
  1182.         echo "                    ";
  1183.         // line 736
  1184.         echo "
  1185.                     ";
  1186.         // line 738
  1187.         echo "                    ";
  1188.         $context["category"] = 0;
  1189.         // line 739
  1190.         echo "                    ";
  1191.         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.'739$this->source); })()), "ProductCategories", [], "any"falsefalsetrue739))) {
  1192.             // line 740
  1193.             echo "                        ";
  1194.             $context['_parent'] = $context;
  1195.             $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.'740$this->source); })()), "ProductCategories", [], "any"falsefalsetrue740));
  1196.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  1197.                 // line 741
  1198.                 echo "                            ";
  1199.                 $context['_parent'] = $context;
  1200.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue741), "path", [], "any"falsefalsetrue741));
  1201.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  1202.                     // line 742
  1203.                     echo "                                ";
  1204.                     if ((twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue742) == 1)) {
  1205.                         // line 743
  1206.                         echo "                                    ";
  1207.                         $context["category"] = 1;
  1208.                         // line 744
  1209.                         echo "                                ";
  1210.                     } elseif ((twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue744) == 2)) {
  1211.                         // line 745
  1212.                         echo "                                    ";
  1213.                         $context["category"] = 2;
  1214.                         // line 746
  1215.                         echo "                                ";
  1216.                     }
  1217.                     // line 747
  1218.                     echo "                            ";
  1219.                 }
  1220.                 $_parent $context['_parent'];
  1221.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  1222.                 $context array_intersect_key($context$_parent) + $_parent;
  1223.                 // line 748
  1224.                 echo "                        ";
  1225.             }
  1226.             $_parent $context['_parent'];
  1227.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  1228.             $context array_intersect_key($context$_parent) + $_parent;
  1229.             // line 749
  1230.             echo "                    ";
  1231.         }
  1232.         // line 750
  1233.         echo "
  1234.                     ";
  1235.         // line 752
  1236.         echo "                    <div id=\"calc_price\" class=\"d-none\">
  1237.                         ";
  1238.         // line 753
  1239.         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.'753$this->source); })()), "hasProductClass", [], "any"falsefalsetrue753)) {
  1240.             // line 754
  1241.             $context["ProductClass_info_all"] = twig_get_attribute($this->env$this->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\ProductClass"), "findBy", [=> ["Product" => (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'754$this->source); })())], => ["ClassCategory1" => "asc""ClassCategory2" => "asc"]], "method"falsefalsetrue754);
  1242.             // line 755
  1243.             echo "                            ";
  1244.             $context['_parent'] = $context;
  1245.             $context['_seq'] = twig_ensure_traversable((isset($context["ProductClass_info_all"]) || array_key_exists("ProductClass_info_all"$context) ? $context["ProductClass_info_all"] : (function () { throw new RuntimeError('Variable "ProductClass_info_all" does not exist.'755$this->source); })()));
  1246.             foreach ($context['_seq'] as $context["_key"] => $context["ProductClass_info"]) {
  1247.                 // line 756
  1248.                 echo "                                <p id=\"price_";
  1249.                 ((twig_get_attribute($this->env$this->source$context["ProductClass_info"], "ClassCategory1", [], "any"falsefalsetrue756)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass_info"], "ClassCategory1", [], "any"falsefalsetrue756), "id", [], "any"falsefalsetrue756), "html"nulltrue))) : (print ("")));
  1250.                 echo "_";
  1251.                 ((twig_get_attribute($this->env$this->source$context["ProductClass_info"], "ClassCategory2", [], "any"falsefalsetrue756)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass_info"], "ClassCategory2", [], "any"falsefalsetrue756), "id", [], "any"falsefalsetrue756), "html"nulltrue))) : (print ("")));
  1252.                 echo "\">";
  1253.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["ProductClass_info"], "price02_inc_tax", [], "any"falsefalsetrue756), 756$this->source), "html"nulltrue);
  1254.                 echo "</p>
  1255.                             ";
  1256.             }
  1257.             $_parent $context['_parent'];
  1258.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductClass_info'], $context['_parent'], $context['loop']);
  1259.             $context array_intersect_key($context$_parent) + $_parent;
  1260.             // line 758
  1261.             echo "                        ";
  1262.         } else {
  1263.             // line 759
  1264.             echo "                            <p id=\"price__\">";
  1265.             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.'759$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue759), 759$this->source), "html"nulltrue);
  1266.             echo "</p>
  1267.                         ";
  1268.         }
  1269.         // line 761
  1270.         echo "                    </div>
  1271.                     <div class=\"ec-productRole__price\">
  1272.                         ";
  1273.         // line 763
  1274.         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.'763$this->source); })()), "hasProductClass", [], "any"falsefalsetrue763)) {
  1275.             // line 764
  1276.             if (((isset($context["category"]) || array_key_exists("category"$context) ? $context["category"] : (function () { throw new RuntimeError('Variable "category" does not exist.'764$this->source); })()) == 1)) {
  1277.                 // line 765
  1278.                 echo "                                ";
  1279.                 $context["ProductClass_left"] = twig_get_attribute($this->env$this->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\ProductClass"), "findBy", [=> ["Product" => (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'765$this->source); })()), "ClassCategory1" => 1], => ["price02" => "asc"], => 1], "method"falsefalsetrue765);
  1280.                 // line 766
  1281.                 echo "                                ";
  1282.                 $context["ProductClass_right"] = twig_get_attribute($this->env$this->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\ProductClass"), "findBy", [=> ["Product" => (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'766$this->source); })()), "ClassCategory1" => 2], => ["price02" => "asc"], => 1], "method"falsefalsetrue766);
  1283.                 // line 767
  1284.                 echo "                                <div class=\"ec-price\">
  1285.                                     <span class=\"fs-4\">";
  1286.                 // line 768
  1287.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("左のリング"), "html"nulltrue);
  1288.                 echo "</span>
  1289.                                     <span class=\"ec-price__price price02-default price02-default_left pe-0\">";
  1290.                 // line 769
  1291.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["ProductClass_left"]) || array_key_exists("ProductClass_left"$context) ? $context["ProductClass_left"] : (function () { throw new RuntimeError('Variable "ProductClass_left" does not exist.'769$this->source); })()), 0, [], "array"falsefalsetrue769), "price02_inc_tax", [], "any"falsefalsetrue769), 769$this->source)), "html"nulltrue);
  1292.                 echo "</span>
  1293.                                     <span class=\"ec-price__tax\">";
  1294.                 // line 770
  1295.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("(税込) ~"), "html"nulltrue);
  1296.                 echo "</span>
  1297.                                 </div>
  1298.                                 <div class=\"ec-price\">
  1299.                                     <span class=\"fs-4\">";
  1300.                 // line 773
  1301.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("右のリング"), "html"nulltrue);
  1302.                 echo "</span>
  1303.                                     <span class=\"ec-price__price price02-default price02-default_right pe-0\">";
  1304.                 // line 774
  1305.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["ProductClass_right"]) || array_key_exists("ProductClass_right"$context) ? $context["ProductClass_right"] : (function () { throw new RuntimeError('Variable "ProductClass_right" does not exist.'774$this->source); })()), 0, [], "array"falsefalsetrue774), "price02_inc_tax", [], "any"falsefalsetrue774), 774$this->source)), "html"nulltrue);
  1306.                 echo "</span>
  1307.                                     <span class=\"ec-price__tax\">";
  1308.                 // line 775
  1309.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("(税込) ~"), "html"nulltrue);
  1310.                 echo "</span>
  1311.                                 </div>
  1312.                             ";
  1313.             } elseif ((            // line 777
  1314. (isset($context["category"]) || array_key_exists("category"$context) ? $context["category"] : (function () { throw new RuntimeError('Variable "category" does not exist.'777$this->source); })()) == 2)) {
  1315.                 // line 778
  1316.                 echo "                                <div class=\"ec-price\">
  1317.                                     <span class=\"ec-price__price price02-default price02-default_ring pe-0\">";
  1318.                 // line 779
  1319.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'779$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue779), 779$this->source)), "html"nulltrue);
  1320.                 echo "</span>
  1321.                                     <span class=\"ec-price__tax\">";
  1322.                 // line 780
  1323.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("(税込) ~"), "html"nulltrue);
  1324.                 echo "</span>
  1325.                                 </div>
  1326.                             ";
  1327.             }
  1328.             // line 783
  1329.             echo "                        ";
  1330.         } else {
  1331.             // line 784
  1332.             echo "                            <div class=\"ec-price\">
  1333.                                 <span class=\"ec-price__price price02-default_ring pe-0\">";
  1334.             // line 785
  1335.             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'785$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue785), 785$this->source)), "html"nulltrue);
  1336.             echo "</span>
  1337.                                 <span class=\"ec-price__tax\">";
  1338.             // line 786
  1339.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("(税込)"), "html"nulltrue);
  1340.             echo "</span>
  1341.                             </div>
  1342.                         ";
  1343.         }
  1344.         // line 789
  1345.         echo "                    </div>
  1346.                     ";
  1347.         // line 791
  1348.         echo "                    <div class=\"ec-productRole__description mt-5\">";
  1349.         echo twig_nl2br($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'791$this->source); })()), "description_detail", [], "any"falsefalsetrue791), 791$this->source));
  1350.         echo "
  1351.                     </div>
  1352.                     ";
  1353.         // line 795
  1354.         echo "                    ";
  1355.         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.'795$this->source); })()), "code_min", [], "any"falsefalsetrue795))) {
  1356.             // line 796
  1357.             echo "                        <div class=\"ec-productRole__code\">
  1358.                             ";
  1359.             // line 797
  1360.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  1361.             echo ": <span class=\"product-code-default\">";
  1362.             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.'797$this->source); })()), "code_min", [], "any"falsefalsetrue797), 797$this->source), "html"nulltrue);
  1363.             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.'797$this->source); })()), "code_min", [], "any"falsefalsetrue797) != 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.'797$this->source); })()), "code_max", [], "any"falsefalsetrue797))) {
  1364.                 echo " ~ ";
  1365.                 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.'797$this->source); })()), "code_max", [], "any"falsefalsetrue797), 797$this->source), "html"nulltrue);
  1366.             }
  1367.             echo "</span>
  1368.                         </div>
  1369.                     ";
  1370.         }
  1371.         // line 800
  1372.         echo "                    
  1373.                     ";
  1374.         // line 802
  1375.         echo "                    ";
  1376.         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.'802$this->source); })()), "ProductCategories", [], "any"falsefalsetrue802))) {
  1377.             // line 803
  1378.             echo "                        <div class=\"ec-productRole__category mb-3\">
  1379.                             <div>";
  1380.             // line 804
  1381.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html"nulltrue);
  1382.             echo "</div>
  1383.                             ";
  1384.             // line 805
  1385.             $context['_parent'] = $context;
  1386.             $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.'805$this->source); })()), "ProductCategories", [], "any"falsefalsetrue805));
  1387.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  1388.                 // line 806
  1389.                 echo "                                <ul>
  1390.                                     <li>
  1391.                                         ";
  1392.                 // line 808
  1393.                 $context['_parent'] = $context;
  1394.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue808), "path", [], "any"falsefalsetrue808));
  1395.                 $context['loop'] = [
  1396.                   'parent' => $context['_parent'],
  1397.                   'index0' => 0,
  1398.                   'index'  => 1,
  1399.                   'first'  => true,
  1400.                 ];
  1401.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1402.                     $length count($context['_seq']);
  1403.                     $context['loop']['revindex0'] = $length 1;
  1404.                     $context['loop']['revindex'] = $length;
  1405.                     $context['loop']['length'] = $length;
  1406.                     $context['loop']['last'] = === $length;
  1407.                 }
  1408.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  1409.                     // line 809
  1410.                     echo "                                            <a href=\"";
  1411.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  1412.                     echo "?category_id=";
  1413.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue809), 809$this->source), "html"nulltrue);
  1414.                     echo "\">";
  1415.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsetrue809), 809$this->source), "html"nulltrue);
  1416.                     echo "</a>";
  1417.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue809) == false)) {
  1418.                         // line 810
  1419.                         echo "                                            <span>></span>";
  1420.                     }
  1421.                     ++$context['loop']['index0'];
  1422.                     ++$context['loop']['index'];
  1423.                     $context['loop']['first'] = false;
  1424.                     if (isset($context['loop']['length'])) {
  1425.                         --$context['loop']['revindex0'];
  1426.                         --$context['loop']['revindex'];
  1427.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  1428.                     }
  1429.                 }
  1430.                 $_parent $context['_parent'];
  1431.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  1432.                 $context array_intersect_key($context$_parent) + $_parent;
  1433.                 // line 812
  1434.                 echo "                                    </li>
  1435.                                 </ul>
  1436.                             ";
  1437.             }
  1438.             $_parent $context['_parent'];
  1439.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  1440.             $context array_intersect_key($context$_parent) + $_parent;
  1441.             // line 815
  1442.             echo "                        </div>
  1443.                     ";
  1444.         }
  1445.         // line 817
  1446.         echo "                    
  1447.                     ";
  1448.         // line 818
  1449.         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.'818$this->source); })()), "id", [], "any"falsefalsetrue818) == 38) || (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.'818$this->source); })()), "id", [], "any"falsefalsetrue818) == 39)) || (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.'818$this->source); })()), "id", [], "any"falsefalsetrue818) == 47))) {
  1450.             // line 819
  1451.             echo "                        <div class=\"text_brown lead mt-4 mb-3\">
  1452.                             男性用リングをお求めの場合は「左のリング」を、<br>
  1453.                             女性用リングをお求めの場合は「右のリング」をお選びください。
  1454.                         </div>
  1455.                     ";
  1456.         }
  1457.         // line 824
  1458.         echo "                    
  1459.                     <form action=\"";
  1460.         // line 825
  1461.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_addmulti_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.'825$this->source); })()), "id", [], "any"falsefalsetrue825), "type" => "no_type"]), "html"nulltrue);
  1462.         echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  1463.                         <div class=\"product-class-item\" data-prototype=\"";
  1464.         // line 826
  1465.         echo twig_escape_filter($this->env$this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($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.'826$this->source); })()), "data", [], "any"falsefalsetrue826), "vars", [], "any"falsefalsetrue826), "prototype", [], "any"falsefalsetrue826), 826$this->source), 'widget'), "html_attr");
  1466.         echo "\" data-index=0></div>
  1467.                         
  1468.                         ";
  1469.         // line 828
  1470.         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.'828$this->source); })()), "stock_find", [], "any"falsefalsetrue828)) {
  1471.             // line 829
  1472.             echo "                            ";
  1473.             // line 849
  1474.             echo "                            
  1475.                             <a href=\"#\" class=\"js_form_add d-none\">
  1476.                                 <span class=\"fa fa-plus-circle\"></span>
  1477.                                 Add Another
  1478.                             </a>
  1479.                             
  1480.                             <!-- trigger modal -->
  1481.                             ";
  1482.             // line 856
  1483.             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.'856$this->source); })()), "id", [], "any"falsefalsetrue856) != 119) && ((isset($context["category"]) || array_key_exists("category"$context) ? $context["category"] : (function () { throw new RuntimeError('Variable "category" does not exist.'856$this->source); })()) != 0))) {
  1484.                 // line 857
  1485.                 echo "                                <p role=\"button\" class=\"text-end pb-4 text-danger fw-bold\" data-bs-toggle=\"modal\" data-bs-target=\"#colorSample\">
  1486.                                     素材サンプル画像はこちらをご覧ください
  1487.                                 </p>
  1488.                             ";
  1489.             }
  1490.             // line 861
  1491.             echo "
  1492.                             <!-- Modal -->
  1493.                             <div class=\"modal fade\" id=\"colorSample\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">
  1494.                               <div class=\"modal-dialog modal-dialog-centered\">
  1495.                                 <div class=\"modal-content\">
  1496.                                   <div class=\"modal-body\">
  1497.                                       <img src=\"";
  1498.             // line 867
  1499.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/pages/material.jpg"), "html"nulltrue);
  1500.             echo "\">
  1501.                                   </div>
  1502.                                   <div class=\"modal-footer\">
  1503.                                     <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>
  1504.                                   </div>
  1505.                                 </div>
  1506.                               </div>
  1507.                             </div>
  1508.                             
  1509.                             ";
  1510.             // line 877
  1511.             echo "                                ";
  1512.             $context["delivery_duration"] = twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_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.'877$this->source); })()), "ProductClasses", [], "any"falsefalsetrue877), 0, [], "array"falsefalsetrue877), "getDeliveryDuration", [], "method"falsefalsetrue877);
  1513.             // line 878
  1514.             echo "                                ";
  1515.             if ((isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'878$this->source); })())) {
  1516.                 // line 879
  1517.                 echo "                                    <div id=\"delivery_duration\" class=\"mt-4\">
  1518.                                         <p class=\"fw-bold\">
  1519.                                             ";
  1520.                 // line 881
  1521.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("納期のめやす:"), "html"nulltrue);
  1522.                 echo "<span class=\"ps-3 fs-4\">
  1523.                                             ";
  1524.                 // line 882
  1525.                 if ((twig_get_attribute($this->env$this->source, (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'882$this->source); })()), "getId", [], "method"falsefalsetrue882) == 11)) {
  1526.                     // line 883
  1527.                     echo "                                                ";
  1528.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+105 day"), "n月d日"), "html"nulltrue);
  1529.                     echo "
  1530.                                             ";
  1531.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 884
  1532. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'884$this->source); })()), "getId", [], "method"falsefalsetrue884) == 10)) {
  1533.                     // line 885
  1534.                     echo "                                                ";
  1535.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+90 day"), "n月d日"), "html"nulltrue);
  1536.                     echo "
  1537.                                             ";
  1538.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 886
  1539. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'886$this->source); })()), "getId", [], "method"falsefalsetrue886) == 9)) {
  1540.                     // line 887
  1541.                     echo "                                                ";
  1542.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+60 day"), "n月d日"), "html"nulltrue);
  1543.                     echo "
  1544.                                             ";
  1545.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 888
  1546. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'888$this->source); })()), "getId", [], "method"falsefalsetrue888) == 8)) {
  1547.                     // line 889
  1548.                     echo "                                                ";
  1549.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+60 day"), "n月d日"), "html"nulltrue);
  1550.                     echo "
  1551.                                             ";
  1552.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 890
  1553. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'890$this->source); })()), "getId", [], "method"falsefalsetrue890) == 7)) {
  1554.                     // line 891
  1555.                     echo "                                                ";
  1556.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+30 day"), "n月d日"), "html"nulltrue);
  1557.                     echo "
  1558.                                             ";
  1559.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 892
  1560. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'892$this->source); })()), "getId", [], "method"falsefalsetrue892) == 6)) {
  1561.                     // line 893
  1562.                     echo "                                                ";
  1563.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+21 day"), "n月d日"), "html"nulltrue);
  1564.                     echo "
  1565.                                             ";
  1566.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 894
  1567. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'894$this->source); })()), "getId", [], "method"falsefalsetrue894) == 5)) {
  1568.                     // line 895
  1569.                     echo "                                                ";
  1570.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+14 day"), "n月d日"), "html"nulltrue);
  1571.                     echo "
  1572.                                             ";
  1573.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 896
  1574. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'896$this->source); })()), "getId", [], "method"falsefalsetrue896) == 4)) {
  1575.                     // line 897
  1576.                     echo "                                                ";
  1577.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+7 day"), "n月d日"), "html"nulltrue);
  1578.                     echo "
  1579.                                             ";
  1580.                 } elseif ((twig_get_attribute($this->env$this->source,                 // line 898
  1581. (isset($context["delivery_duration"]) || array_key_exists("delivery_duration"$context) ? $context["delivery_duration"] : (function () { throw new RuntimeError('Variable "delivery_duration" does not exist.'898$this->source); })()), "getId", [], "method"falsefalsetrue898) == 3)) {
  1582.                     // line 899
  1583.                     echo "                                                ";
  1584.                     echo twig_escape_filter($this->envtwig_date_format_filter($this->envtwig_date_modify_filter($this->env"now""+3 day"), "n月d日"), "html"nulltrue);
  1585.                     echo "
  1586.                                             ";
  1587.                 }
  1588.                 // line 901
  1589.                 echo "                                           </span> ";
  1590.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("頃です。"), "html"nulltrue);
  1591.                 echo "
  1592.                                         </p>
  1593.                                         <p>短納期をご希望の方は購入手続き画面のお問い合わせ欄にご記入ください。<br>
  1594.                                         事前にご相談されたい場合は下記のお問い合わせからお問い合わせ下さい。<br>
  1595.                                         <a class=\"d-inline-block pt-2\" href=\"";
  1596.                 // line 905
  1597.                 echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("contact");
  1598.                 echo "\">お問い合わせはこちら<i class=\"fas fa-angle-right ps-2\"></i></a></p>
  1599.                                     </div>
  1600.                                 ";
  1601.             }
  1602.             // line 908
  1603.             echo "                            ";
  1604.             // line 909
  1605.             echo "                            
  1606.                             <div class=\"row cartin_btn_area pt-3 gx-2\">
  1607.                                 ";
  1608.             // line 911
  1609.             if (((isset($context["category"]) || array_key_exists("category"$context) ? $context["category"] : (function () { throw new RuntimeError('Variable "category" does not exist.'911$this->source); })()) == 1)) {
  1610.                 // line 912
  1611.                 echo "                                    <div id=\"cartin_left\" class=\"/*ec-productRole__btn*/ col-6 mb-3\">
  1612.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_left lh-sm text-wrap\">
  1613.                                             ";
  1614.                 // line 914
  1615.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("左のリングを"), "html"nulltrue);
  1616.                 echo "<span class=\"aks\">";
  1617.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1618.                 echo "</span>
  1619.                                         </button>
  1620.                                     </div>
  1621.                                     <div id=\"cartin_right\" class=\"/*ec-productRole__btn*/ col-6 mb-3\">
  1622.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_right lh-sm text-wrap\">
  1623.                                             ";
  1624.                 // line 919
  1625.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("右のリングを"), "html"nulltrue);
  1626.                 echo "<span class=\"aks\">";
  1627.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1628.                 echo "</span>
  1629.                                         </button>
  1630.                                     </div>
  1631.                                     <div id=\"cartin_set\" class=\"/*ec-productRole__btn*/ col-12 lh-sm text-wrap\">
  1632.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_set\">
  1633.                                             ";
  1634.                 // line 924
  1635.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("2本セットでカートに入れる"), "html"nulltrue);
  1636.                 echo "
  1637.                                         </button>
  1638.                                     </div>
  1639.                                 ";
  1640.             } else {
  1641.                 // line 928
  1642.                 echo "                                    <div id=\"cartin_no_type\"  class=\"/*ec-productRole__btn*/ col-12\">
  1643.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_no_type\">
  1644.                                             ";
  1645.                 // line 930
  1646.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1647.                 echo "
  1648.                                         </button>
  1649.                                     </div>
  1650.                                 ";
  1651.             }
  1652.             // line 934
  1653.             echo "                            </div>
  1654.                         ";
  1655.         } else {
  1656.             // line 936
  1657.             echo "                            <div class=\"ec-productRole__btn w-100\">
  1658.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1659.                                     ";
  1660.             // line 938
  1661.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  1662.             echo "
  1663.                                 </button>
  1664.                             </div>
  1665.                         ";
  1666.         }
  1667.         // line 942
  1668.         echo "
  1669.                         ";
  1670.         // line 943
  1671.         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.'943$this->source); })()), 943$this->source), 'rest');
  1672.         echo "
  1673.                     </form>
  1674.                     <div class=\"ec-modal\">
  1675.                         <div class=\"ec-modal-overlay\">
  1676.                             <div class=\"ec-modal-wrap\">
  1677.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  1678.         // line 948
  1679.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  1680.         echo "\" alt=\"\"/></span></span>
  1681.                                 <div id=\"ec-modal-header\" class=\"text-center\">";
  1682.         // line 949
  1683.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  1684.         echo "</div>
  1685.                                 <div class=\"ec-modal-box\">
  1686.                                     <div class=\"ec-role\">
  1687.                                         <span class=\"ec-inlineBtn--cancel mb-2\">";
  1688.         // line 952
  1689.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  1690.         echo "</span>
  1691.                                         <a href=\"";
  1692.         // line 953
  1693.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  1694.         echo "\" class=\"ec-inlineBtn--action mb-2\">";
  1695.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  1696.         echo "</a>
  1697.                                     </div>
  1698.                                 </div>
  1699.                             </div>
  1700.                         </div>
  1701.                     </div>
  1702.                     
  1703.                     <div class=\"ec-productRole__btn w-100 mt-3 favorite_btn_area\">
  1704.                         ";
  1705.         // line 961
  1706.         if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'961$this->source); })()) == false)) {
  1707.             // line 962
  1708.             echo "                            ";
  1709.             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.'962$this->source); })()), "hasProductClass", [], "any"falsefalsetrue962)) {
  1710.                 // line 963
  1711.                 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.'963$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue963) == 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.'963$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue963))) {
  1712.                     // line 964
  1713.                     echo "                                    <button onclick=\"favo(";
  1714.                     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.'964$this->source); })()), "id", [], "any"falsefalsetrue964), 964$this->source), "html"nulltrue);
  1715.                     echo ", '";
  1716.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["img"]) || array_key_exists("img"$context) ? $context["img"] : (function () { throw new RuntimeError('Variable "img" does not exist.'964$this->source); })()), 964$this->source), "html"nulltrue);
  1717.                     echo "', '";
  1718.                     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.'964$this->source); })()), "name", [], "any"falsefalsetrue964), 964$this->source), "html"nulltrue);
  1719.                     echo "', '";
  1720.                     echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'964$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue964), 964$this->source)), "html"nulltrue);
  1721.                     echo "')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  1722.                                         ";
  1723.                     // line 965
  1724.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1725.                     echo "
  1726.                                     </button>
  1727.                                 ";
  1728.                 } else {
  1729.                     // line 968
  1730.                     echo "                                    <button onclick=\"favo(";
  1731.                     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.'968$this->source); })()), "id", [], "any"falsefalsetrue968), 968$this->source), "html"nulltrue);
  1732.                     echo ", '";
  1733.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["img"]) || array_key_exists("img"$context) ? $context["img"] : (function () { throw new RuntimeError('Variable "img" does not exist.'968$this->source); })()), 968$this->source), "html"nulltrue);
  1734.                     echo "', '";
  1735.                     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.'968$this->source); })()), "name", [], "any"falsefalsetrue968), 968$this->source), "html"nulltrue);
  1736.                     echo "', '";
  1737.                     echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'968$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue968), 968$this->source)), "html"nulltrue);
  1738.                     echo " ~ ";
  1739.                     echo "')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  1740.                                         ";
  1741.                     // line 969
  1742.                     echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1743.                     echo "
  1744.                                     </button>
  1745.                                 ";
  1746.                 }
  1747.                 // line 972
  1748.                 echo "                            ";
  1749.             } else {
  1750.                 // line 973
  1751.                 echo "                                <button onclick=\"favo(";
  1752.                 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.'973$this->source); })()), "id", [], "any"falsefalsetrue973), 973$this->source), "html"nulltrue);
  1753.                 echo ", '";
  1754.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["img"]) || array_key_exists("img"$context) ? $context["img"] : (function () { throw new RuntimeError('Variable "img" does not exist.'973$this->source); })()), 973$this->source), "html"nulltrue);
  1755.                 echo "', '";
  1756.                 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.'973$this->source); })()), "name", [], "any"falsefalsetrue973), 973$this->source), "html"nulltrue);
  1757.                 echo "', '";
  1758.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'973$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue973), 973$this->source)), "html"nulltrue);
  1759.                 echo "')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  1760.                                     ";
  1761.                 // line 974
  1762.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1763.                 echo "
  1764.                                 </button>
  1765.                             ";
  1766.             }
  1767.             // line 977
  1768.             echo "                        ";
  1769.         } else {
  1770.             // line 978
  1771.             echo "                            <button id=\"favorite_local\" class=\"ec-blockBtn--cancel\"
  1772.                                 disabled=\"disabled\">";
  1773.             // line 979
  1774.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  1775.             echo "
  1776.                             </button>
  1777.                         ";
  1778.         }
  1779.         // line 982
  1780.         echo "                    </div>
  1781.                     
  1782.                 </div>
  1783.             </div>
  1784.         </div>
  1785.         <!--div class=\"row\">
  1786.             <div class=\"col-md-6 offset-md-3\">
  1787.                 <img src=\"";
  1788.         // line 989
  1789.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/pages/material.jpg"), "html"nulltrue);
  1790.         echo "\">
  1791.             </div>
  1792.         </div>-->
  1793.         ";
  1794.         // line 992
  1795.         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.'992$this->source); })()), "freearea", [], "any"falsefalsetrue992)) {
  1796.             // line 993
  1797.             echo "             <div class=\"ec-productRole__description\">
  1798.                  ";
  1799.             // line 994
  1800.             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.'994$this->source); })()), "freearea", [], "any"falsefalsetrue994), 994$this->source)), array(), truefalsetrue);
  1801.             echo "
  1802.             </div>
  1803.         ";
  1804.         }
  1805.         // line 997
  1806.         echo "    </div>
  1807. ";
  1808.         
  1809.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1810.         
  1811.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1812.     }
  1813.     public function getTemplateName()
  1814.     {
  1815.         return "Product/detail.twig";
  1816.     }
  1817.     public function isTraitable()
  1818.     {
  1819.         return false;
  1820.     }
  1821.     public function getDebugInfo()
  1822.     {
  1823.         return array (  1853 => 997,  1847 => 994,  1844 => 993,  1842 => 992,  1836 => 989,  1827 => 982,  1821 => 979,  1818 => 978,  1815 => 977,  1809 => 974,  1798 => 973,  1795 => 972,  1789 => 969,  1777 => 968,  1771 => 965,  1760 => 964,  1758 => 963,  1755 => 962,  1753 => 961,  1740 => 953,  1736 => 952,  1730 => 949,  1726 => 948,  1718 => 943,  1715 => 942,  1708 => 938,  1704 => 936,  1700 => 934,  1693 => 930,  1689 => 928,  1682 => 924,  1672 => 919,  1662 => 914,  1658 => 912,  1656 => 911,  1652 => 909,  1650 => 908,  1644 => 905,  1636 => 901,  1630 => 899,  1628 => 898,  1623 => 897,  1621 => 896,  1616 => 895,  1614 => 894,  1609 => 893,  1607 => 892,  1602 => 891,  1600 => 890,  1595 => 889,  1593 => 888,  1588 => 887,  1586 => 886,  1581 => 885,  1579 => 884,  1574 => 883,  1572 => 882,  1568 => 881,  1564 => 879,  1561 => 878,  1558 => 877,  1546 => 867,  1538 => 861,  1532 => 857,  1530 => 856,  1521 => 849,  1519 => 829,  1517 => 828,  1512 => 826,  1508 => 825,  1505 => 824,  1498 => 819,  1496 => 818,  1493 => 817,  1489 => 815,  1481 => 812,  1466 => 810,  1457 => 809,  1440 => 808,  1436 => 806,  1432 => 805,  1428 => 804,  1425 => 803,  1422 => 802,  1419 => 800,  1407 => 797,  1404 => 796,  1401 => 795,  1394 => 791,  1391 => 789,  1385 => 786,  1381 => 785,  1378 => 784,  1375 => 783,  1369 => 780,  1365 => 779,  1362 => 778,  1360 => 777,  1355 => 775,  1351 => 774,  1347 => 773,  1341 => 770,  1337 => 769,  1333 => 768,  1330 => 767,  1327 => 766,  1324 => 765,  1322 => 764,  1320 => 763,  1316 => 761,  1310 => 759,  1307 => 758,  1294 => 756,  1289 => 755,  1287 => 754,  1285 => 753,  1282 => 752,  1279 => 750,  1276 => 749,  1270 => 748,  1264 => 747,  1261 => 746,  1258 => 745,  1255 => 744,  1252 => 743,  1249 => 742,  1244 => 741,  1239 => 740,  1236 => 739,  1233 => 738,  1230 => 736,  1228 => 718,  1225 => 716,  1214 => 714,  1210 => 713,  1207 => 712,  1202 => 709,  1199 => 708,  1192 => 702,  1173 => 700,  1156 => 699,  1152 => 697,  1141 => 695,  1119 => 693,  1114 => 692,  1095 => 691,  1093 => 690,  1085 => 684,  1075 => 683,  1063 => 679,  1057 => 676,  1041 => 662,  1039 => 661,  1031 => 655,  1025 => 652,  1021 => 650,  1014 => 646,  1007 => 642,  1002 => 640,  995 => 636,  988 => 632,  983 => 630,  976 => 626,  970 => 623,  966 => 621,  964 => 620,  961 => 619,  955 => 618,  951 => 616,  949 => 615,  946 => 614,  943 => 613,  939 => 612,  895 => 570,  889 => 566,  877 => 556,  875 => 555,  869 => 551,  861 => 549,  859 => 548,  854 => 546,  851 => 545,  849 => 544,  832 => 529,  825 => 524,  817 => 518,  815 => 517,  810 => 514,  802 => 512,  800 => 511,  795 => 509,  792 => 508,  790 => 507,  769 => 488,  761 => 486,  759 => 485,  754 => 483,  751 => 482,  749 => 481,  706 => 440,  702 => 438,  698 => 436,  696 => 435,  680 => 421,  674 => 420,  669 => 417,  667 => 416,  663 => 414,  660 => 413,  656 => 412,  638 => 397,  624 => 386,  620 => 385,  616 => 384,  612 => 383,  608 => 381,  602 => 379,  600 => 378,  595 => 377,  590 => 376,  587 => 375,  577 => 373,  563 => 371,  555 => 370,  537 => 369,  532 => 367,  509 => 347,  496 => 337,  465 => 309,  459 => 305,  450 => 299,  446 => 297,  444 => 296,  441 => 295,  432 => 289,  428 => 287,  426 => 286,  419 => 282,  414 => 280,  409 => 278,  394 => 266,  376 => 251,  357 => 235,  339 => 220,  331 => 214,  325 => 213,  320 => 210,  318 => 209,  314 => 207,  311 => 206,  307 => 205,  296 => 197,  282 => 186,  209 => 115,  201 => 113,  199 => 112,  194 => 110,  191 => 109,  189 => 108,  175 => 97,  172 => 96,  162 => 95,  75 => 16,  65 => 15,  54 => 11,  52 => 13,  39 => 11,);
  1824.     }
  1825.     public function getSourceContext()
  1826.     {
  1827.         return new Source("{#
  1828. This file is part of EC-CUBE
  1829. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1830. http://www.ec-cube.co.jp/
  1831. For the full copyright and license information, please view the LICENSE
  1832. file that was distributed with this source code.
  1833. #}
  1834. {% extends 'default_frame.twig' %}
  1835. {% set body_class = 'product_page' %}
  1836. {% block stylesheet %}
  1837.     <style>
  1838.         .slick-slider {
  1839.             margin-bottom: 30px;
  1840.         }
  1841.         .slick-dots {
  1842.             position: absolute;
  1843.             bottom: -45px;
  1844.             display: block;
  1845.             width: 100%;
  1846.             padding: 0;
  1847.             list-style: none;
  1848.             text-align: center;
  1849.         }
  1850.         .slick-dots li {
  1851.             position: relative;
  1852.             display: inline-block;
  1853.             width: 20px;
  1854.             height: 20px;
  1855.             margin: 0 5px;
  1856.             padding: 0;
  1857.             cursor: pointer;
  1858.         }
  1859.         .slick-dots li button {
  1860.             font-size: 0;
  1861.             line-height: 0;
  1862.             display: block;
  1863.             width: 20px;
  1864.             height: 20px;
  1865.             padding: 5px;
  1866.             cursor: pointer;
  1867.             color: transparent;
  1868.             border: 0;
  1869.             outline: none;
  1870.             background: transparent;
  1871.         }
  1872.         .slick-dots li button:hover,
  1873.         .slick-dots li button:focus {
  1874.             outline: none;
  1875.         }
  1876.         .slick-dots li button:hover:before,
  1877.         .slick-dots li button:focus:before {
  1878.             opacity: 1;
  1879.         }
  1880.         .slick-dots li button:before {
  1881.             content: \" \";
  1882.             line-height: 20px;
  1883.             position: absolute;
  1884.             top: 0;
  1885.             left: 0;
  1886.             width: 12px;
  1887.             height: 12px;
  1888.             text-align: center;
  1889.             opacity: .25;
  1890.             background-color: black;
  1891.             border-radius: 50%;
  1892.         }
  1893.         .slick-dots li.slick-active button:before {
  1894.             opacity: .75;
  1895.             background-color: black;
  1896.         }
  1897.         .slick-dots li button.thumbnail img {
  1898.             width: 0;
  1899.             height: 0;
  1900.         }
  1901.     </style>
  1902. {% endblock %}
  1903. {% block javascript %}
  1904.     <script>
  1905.         eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1906.         // 規格2に選択肢を割り当てる。
  1907.         function fnSetClassCategories(form, classcat_id2_selected) {
  1908.             var \$form = \$(form);
  1909.             var product_id = \$form.find('input[name=product_id]').val();
  1910.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1911.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1912.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1913.         }
  1914.         {% if form.classcategory_id2 is defined %}
  1915.         fnSetClassCategories(
  1916.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1917.         );
  1918.         {% elseif form.classcategory_id1 is defined %}
  1919.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1920.         {% endif %}
  1921.     </script>
  1922.     <script>
  1923.         \$(function() {
  1924.             // bfcache無効化
  1925.             \$(window).bind('pageshow', function(event) {
  1926.                 if (event.originalEvent.persisted) {
  1927.                     location.reload(true);
  1928.                 }
  1929.             });
  1930.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1931.             // img タグに width, height が付与されている.
  1932.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1933.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1934.             \$('.ec-grid2__cell').hide();
  1935.             var removeSize = function () {
  1936.                 \$('.slide-item').height('');
  1937.                 \$('.slide-item img')
  1938.                     .removeAttr('width')
  1939.                     .removeAttr('height')
  1940.                     .removeAttr('style');
  1941.             };
  1942.             var slickInitial = function(slick) {
  1943.                 \$('.ec-grid2__cell').fadeIn(1500);
  1944.                 var baseHeight = \$(slick.target).height();
  1945.                 var baseWidth = \$(slick.target).width();
  1946.                 var rate = baseWidth / baseHeight;
  1947.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1948.                 // transform を使用することでCLSの影響を受けないようにする
  1949.                 \$('.slide-item img')
  1950.                     .css(
  1951.                         {
  1952.                             'transform-origin': 'top left',
  1953.                             'transform': 'scaleY(' + rate + ')',
  1954.                             'transition': 'transform .1s'
  1955.                         }
  1956.                     );
  1957.                 // 正しいサイズに近くなったら属性を解除する
  1958.                 setTimeout(removeSize, 500);
  1959.             };
  1960.             \$('.item_visual').on('init', slickInitial);
  1961.             // リサイズ時は CLS の影響を受けないため属性を解除する
  1962.             \$(window).resize(removeSize);
  1963.             \$('.item_visual').slick({
  1964.                 dots: false,
  1965.                 arrows: false,
  1966.                 responsive: [{
  1967.                     breakpoint: 768,
  1968.                     settings: {
  1969.                         dots: true
  1970.                     }
  1971.                 }]
  1972.             });
  1973.             \$('.slideThumb').on('click', function() {
  1974.                 var index = \$(this).attr('data-index');
  1975.                 \$('.item_visual').slick('slickGoTo', index, false);
  1976.             })
  1977.         });
  1978.     </script>
  1979.     <script>
  1980.         \$(function() {
  1981.             \$('.add-cart').on('click', function(event) {
  1982.                 // 入力チェックここから
  1983.                 if(\$(this).hasClass('add-cart_left') || \$(this).hasClass('add-cart_set') || \$(this).hasClass('add-cart_no_type')) {
  1984.                     var data_0_classcategory_id1 = document.getElementById(\"form_data_0_classcategory_id1\");
  1985.                     if (data_0_classcategory_id1 === null) {
  1986.                     } else {
  1987.                         // 規格1フォームの必須チェック
  1988.                         if (\$('#form_data_0_classcategory_id1').val() == '__unselected' || \$('#form_data_0_classcategory_id1').val() == '') {
  1989.                             \$('#form_data_0_classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1990.                             return true;
  1991.                         } else {
  1992.                             \$('#form_data_0_classcategory_id1')[0].setCustomValidity('');
  1993.                         }
  1994.                     }
  1995.                     var data_0_classcategory_id2 = document.getElementById(\"form_data_0_classcategory_id2\");
  1996.                     if (data_0_classcategory_id2 === null) {
  1997.                     } else {
  1998.                         // 規格2フォームの必須チェック
  1999.                         if (\$('#form_data_0_classcategory_id2').val() == '__unselected' || \$('#form_data_0_classcategory_id2').val() == '') {
  2000.                             \$('#form_data_0_classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2001.                             return true;
  2002.                         } else {
  2003.                             \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  2004.                         }
  2005.                     }
  2006.                     // サイズの入力チェックは結婚指輪・婚約指輪の場合のみ
  2007.                     var category=0;
  2008.                     {% for ProductCategory in Product.ProductCategories %}
  2009.                         {% if ProductCategory.Category.id == 1 %}
  2010.                             // 結婚指輪
  2011.                             category = 1;
  2012.                         {% elseif ProductCategory.Category.id == 2 %}
  2013.                             // 婚約指輪
  2014.                             category = 2;
  2015.                         {% endif %}
  2016.                     {% endfor %}
  2017.                     if (category == 1 || category == 2) {
  2018.                         var form_data_0_size = document.getElementById(\"form_data_0_size\");
  2019.                         if (form_data_0_size === null) {
  2020.                         } else {
  2021.                             // サイズ フォームの必須チェック
  2022.                             if (\$('#form_data_0_size').val() == '__unselected' || \$('#form_data_0_size').val() == '') {
  2023.                                 \$('#form_data_0_size')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2024.                                 return true;
  2025.                             } else {
  2026.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  2027.                             }
  2028.                         }
  2029.                     }
  2030.                 }
  2031.            
  2032.                 if(\$(this).hasClass('add-cart_right') || \$(this).hasClass('add-cart_set')) {
  2033.                     var data_1_classcategory_id1 = document.getElementById(\"form_data_1_classcategory_id1\");
  2034.                     if (data_1_classcategory_id1 === null) {
  2035.                     } else {
  2036.                         // 規格1フォームの必須チェック
  2037.                         if (\$('#form_data_1_classcategory_id1').val() == '__unselected' || \$('#form_data_1_classcategory_id1').val() == '') {
  2038.                             \$('#form_data_1_classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2039.                             if (\$(this).hasClass('add-cart_right')) {
  2040.                                 \$('#form_data_0_classcategory_id1')[0].setCustomValidity('');
  2041.                                 \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  2042.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  2043.                             }
  2044.                             return true;
  2045.                         } else {
  2046.                             \$('#form_data_1_classcategory_id1')[0].setCustomValidity('');
  2047.                         }
  2048.                     }
  2049.                     var data_1_classcategory_id2 = document.getElementById(\"form_data_1_classcategory_id2\");
  2050.                     if (data_1_classcategory_id2 === null) {
  2051.                     } else {
  2052.                         // 規格2フォームの必須チェック
  2053.                         if (\$('#form_data_1_classcategory_id2').val() == '__unselected' || \$('#form_data_1_classcategory_id2').val() == '') {
  2054.                             \$('#form_data_1_classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2055.                             if (\$(this).hasClass('add-cart_right')) {
  2056.                                 \$('#form_data_0_classcategory_id2')[0].setCustomValidity('');
  2057.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  2058.                             }
  2059.                             return true;
  2060.                         } else {
  2061.                             \$('#form_data_1_classcategory_id2')[0].setCustomValidity('');
  2062.                         }
  2063.                     }
  2064.                     var form_data_1_size = document.getElementById(\"form_data_1_size\");
  2065.                     if (form_data_1_size === null) {
  2066.                     } else {
  2067.                         // サイズ フォームの必須チェック
  2068.                         if (\$('#form_data_1_size').val() == '__unselected' || \$('#form_data_1_size').val() == '') {
  2069.                             \$('#form_data_1_size')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2070.                             if (\$(this).hasClass('add-cart_right')) {
  2071.                                 \$('#form_data_0_size')[0].setCustomValidity('');
  2072.                             }
  2073.                             return true;
  2074.                         } else {
  2075.                             \$('#form_data_1_size')[0].setCustomValidity('');
  2076.                         }
  2077.                     }
  2078.                 }
  2079.                 if(\$(this).hasClass('add-cart_left')) {
  2080.                     document.getElementById(\"form1\").action = \"{{ url('product_addmulti_cart', {id:Product.id, type:\"left\"}) }}\";
  2081.                 } else if(\$(this).hasClass('add-cart_right')) {
  2082.                     document.getElementById(\"form1\").action = \"{{ url('product_addmulti_cart', {id:Product.id, type:\"right\"}) }}\";
  2083.                 } else if(\$(this).hasClass('add-cart_set')) {
  2084.                     document.getElementById(\"form1\").action = \"{{ url('product_addmulti_cart', {id:Product.id, type:\"set\"}) }}\";
  2085.                 }
  2086.                 // 入力チェックここまで
  2087.                 
  2088.                 {% if form.classcategory_id1 is defined %}
  2089.                 // 規格1フォームの必須チェック
  2090.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  2091.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2092.                     return true;
  2093.                 } else {
  2094.                     \$('#classcategory_id1')[0].setCustomValidity('');
  2095.                 }
  2096.                 {% endif %}
  2097.                 {% if form.classcategory_id2 is defined %}
  2098.                 // 規格2フォームの必須チェック
  2099.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  2100.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2101.                     return true;
  2102.                 } else {
  2103.                     \$('#classcategory_id2')[0].setCustomValidity('');
  2104.                 }
  2105.                 {% endif %}
  2106.                 // 個数フォームのチェック
  2107.                 /*
  2108.                 if (\$('#quantity').val() < 1) {
  2109.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  2110.                     return true;
  2111.                 } else {
  2112.                     \$('#quantity')[0].setCustomValidity('');
  2113.                 }
  2114.                 */
  2115.                 
  2116.                 event.preventDefault();
  2117.                 \$form = \$('#form1');
  2118.                 \$.ajax({
  2119.                     url: \$form.attr('action'),
  2120.                     type: \$form.attr('method'),
  2121.                     data: \$form.serialize(),
  2122.                     dataType: 'json',
  2123.                     beforeSend: function(xhr, settings) {
  2124.                         // Buttonを無効にする
  2125.                         \$('.add-cart').prop('disabled', true);
  2126.                     }
  2127.                 }).done(function(data) {
  2128.                     // レスポンス内のメッセージをalertで表示
  2129.                     \$.each(data.messages, function() {
  2130.                         \$('#ec-modal-header').text(this);
  2131.                     });
  2132.                     \$('.ec-modal').show()
  2133.                     // カートブロックを更新する
  2134.                     \$.ajax({
  2135.                         url: \"{{ url('block_cart') }}\",
  2136.                         type: 'GET',
  2137.                         dataType: 'html'
  2138.                     }).done(function(html) {
  2139.                         \$('.ec-headerRole__cart').html(html);
  2140.                     });
  2141.                 }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
  2142.                     console.log(\"XMLHttpRequest : \" + XMLHttpRequest.status);
  2143.                     console.log(\"textStatus     : \" + textStatus);
  2144.                     console.log(\"errorThrown    : \" + errorThrown.message);
  2145.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  2146.                 }).always(function(data) {
  2147.                     // Buttonを有効にする
  2148.                     \$('.add-cart').prop('disabled', false);
  2149.                 });
  2150.             });
  2151.         });
  2152.         \$('.ec-modal-wrap').on('click', function(e) {
  2153.             // モーダル内の処理は外側にバブリングさせない
  2154.             e.stopPropagation();
  2155.         });
  2156.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  2157.             \$('.ec-modal').hide()
  2158.         });
  2159.     </script>
  2160.     <script type=\"application/ld+json\">
  2161.     {
  2162.         \"@context\": \"https://schema.org/\",
  2163.         \"@type\": \"Product\",
  2164.         \"name\": \"{{ Product.name }}\",
  2165.         \"image\": [
  2166.             {% for img in Product.ProductImage %}
  2167.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  2168.             {% else %}
  2169.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  2170.             {% endfor %}
  2171.         ],
  2172.         // description_list 使わない 2024.10 \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  2173.         \"description\": \"{{ Product.description_detail | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  2174.         {% if Product.code_min %}
  2175.         \"sku\": \"{{ Product.code_min }}\",
  2176.         {% endif %}
  2177.         \"offers\": {
  2178.             \"@type\": \"Offer\",
  2179.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  2180.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  2181.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  2182.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  2183.         }
  2184.     }
  2185.     </script>
  2186.     <script>
  2187.         var localfavo = localStorage.getItem('favo');
  2188.         if(localfavo) {
  2189.             var lsfavo = JSON.parse(localfavo);
  2190.             if (lsfavo.length) {
  2191.                 console.log(lsfavo);
  2192.                 for (i=0;i<lsfavo.length;i++) {
  2193.                     if(lsfavo[i][0] == {{ Product.id }}) {
  2194.                         //\$(\"#favorite_local\").removeAttr(\"onclick\");
  2195.                         //\$(\"#favorite_local\").prop('disabled', true);
  2196.                         \$(\"#favorite_local\").addClass(\"registered\");
  2197.                         \$(\"#favorite_local\").html(\"お気に入りに追加済みです\");
  2198.                     }
  2199.                 }
  2200.             }
  2201.         }
  2202.     </script>
  2203.     <script>
  2204.         \$(function() {
  2205.             //\$('.js_form_add').on('click', function(e) {
  2206.                 //e.preventDefault
  2207.             var category=0;
  2208.             {% for ProductCategory in Product.ProductCategories %}
  2209.                 {% if ProductCategory.Category.id == 1 %}
  2210.                     // 結婚指輪
  2211.                     category = 1;
  2212.                 {% elseif ProductCategory.Category.id == 2 %}
  2213.                     // 婚約指輪
  2214.                     category = 2;
  2215.                 {% endif %}
  2216.             {% endfor %}
  2217.             // 結婚指輪は規格1がタイプ、規格2が素材
  2218.             // 婚約指輪は規格1が素材、規格2がカラット数
  2219.             for (let i = 0; i < 2; i++){ 
  2220.                 // Get the data-prototype explained earlier
  2221.                 var prototype = \$('.product-class-item').data('prototype');
  2222.                 // get the new index
  2223.                 var index = \$('.product-class-item').data('index');
  2224.                 // Replace '__name__' in the prototype's HTML to
  2225.                 // instead be a number based on how many items we have
  2226.                 var newForm = '';
  2227.                 if (index == 0) {
  2228.                     if(category == 1) {
  2229.                         newForm += '<div class=\"category1 left_option\"><p class=\"fw-bold\">左のリング:<span class=\"ps-3 fs-3 text-danger fw-normal left_price\"></span></p>';
  2230.                     } else if (category == 2) {
  2231.                         {% if Product.id == 119 %}
  2232.                             newForm += '<div class=\"category2\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p>';
  2233.                         {% else %}
  2234.                             newForm += '<div class=\"category2\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p><p>まず素材を選択してください。<br>素材を選択するとダイヤモンドの選択肢が表示されます。</p>';
  2235.                         {% endif %}
  2236.                     } else {
  2237.                         newForm += '<div class=\"category0\"><p class=\"mb-3\"><span class=\"fs-3 text-danger ring_price\"></p>';
  2238.                     }
  2239.                 } else {
  2240.                     if(category == 1) {
  2241.                         newForm += '<div class=\"category1 right_option\"><p class=\"fw-bold\">右のリング:<span class=\"ps-3 fs-3 text-danger fw-normal right_price\"></span></p>';
  2242.                     } else if (category == 2) {
  2243.                         newForm += '<div class=\"category2\">';
  2244.                     } else {
  2245.                         newForm += '<div class=\"category0\">';
  2246.                     }
  2247.                 }
  2248.                 newForm += prototype.replace(/__name__/g, index);
  2249.                 newForm += '</div>';
  2250.                 // increase the index with one for the next item
  2251.                 \$('.product-class-item').data('index', index + 1);
  2252.                 // Display the form in the page before the \"new\" link
  2253.                 //\$(this).before(newForm);
  2254.                 \$('.js_form_add').before(newForm);
  2255.             }
  2256.             
  2257.             if(category == 1) {
  2258.                 document.getElementById(\"form_data_0_classcategory_id1\").value = 1;
  2259.                 document.getElementById(\"form_data_1_classcategory_id1\").value = 2;
  2260.             }
  2261.             var data_0_classcategory_id1 = document.getElementById(\"form_data_0_classcategory_id1\");
  2262.             if (data_0_classcategory_id1 === null) {
  2263.             } else {
  2264.                 // 規格2に選択肢を割り当てる。
  2265.                 function fnSetClassCategories(form, classcat_id2_selected) {
  2266.                     var \$form = \$(form);
  2267.                     var product_id = \$form.find('input[name=product_id]').val();
  2268.                     var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  2269.                     var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  2270.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  2271.                 }
  2272.                 var \$form = \$('#form1');
  2273.                 var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  2274.                 if (data_0_classcategory_id1 === null) {
  2275.                     
  2276.                 } else {
  2277.                     {% if form.data.vars.prototype.classcategory_id2 is defined %}
  2278.                         fnSetClassCategories(
  2279.                             \$('#form1'), {{ form.data.vars.prototype.classcategory_id2.vars.value|json_encode|raw }}
  2280.                         );
  2281.                     {% elseif form.data.vars.prototype.classcategory_id1 is defined %}
  2282.                         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.data.vars.prototype.classcategory_id1.vars.value|json_encode|raw }}, null);
  2283.                     {% endif %}
  2284.                 }
  2285.             }
  2286.             
  2287.             var data_1_classcategory_id1 = document.getElementById(\"form_data_1_classcategory_id1\");
  2288.             if (data_1_classcategory_id1 === null) {
  2289.             } else {
  2290.                 // 規格2に選択肢を割り当てる。
  2291.                 function fnSetClassCategories(form, classcat_id2_selected) {
  2292.                     var \$form = \$(form);
  2293.                     var product_id = \$form.find('input[name=product_id]').val();
  2294.                     var \$sele1 = \$form.find('#form_data_1_classcategory_id1');
  2295.                     var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  2296.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  2297.                 }
  2298.                 var \$form = \$('#form1');
  2299.                 var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  2300.                 if (data_0_classcategory_id1 === null) {
  2301.                     
  2302.                 } else {
  2303.                     {% if form.data.vars.prototype.classcategory_id2 is defined %}
  2304.                         fnSetClassCategories(
  2305.                             \$('#form1'), {{ form.data.vars.prototype.classcategory_id2.vars.value|json_encode|raw }}
  2306.                         );
  2307.                     {% elseif form.data.vars.prototype.classcategory_id1 is defined %}
  2308.                         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.data.vars.prototype.classcategory_id1.vars.value|json_encode|raw }}, null);
  2309.                     {% endif %}
  2310.                 }
  2311.             }
  2312.             //});
  2313.             {% if Product.hasProductClass %}
  2314.                 if(category == 2) {
  2315.                     // 婚約指輪は2本同時購入はない
  2316.                     const element = document.getElementById('form_data_1'); 
  2317.                     element.remove();
  2318.                 }
  2319.             {% else %}
  2320.                 // 規格なし
  2321.                 \$('#form1').addClass('no_product_class');
  2322.                 const element = document.getElementById('form_data_1'); 
  2323.                 element.remove();
  2324.             {% endif %}
  2325.             
  2326.             // 婚約指輪で素材が選択されたとき
  2327.             if (category == 2) {
  2328.                 \$('#form_data_0_classcategory_id1').change(function() {
  2329.                     // 規格2に選択肢を割り当てる。
  2330.                     function fnSetClassCategories(form, classcat_id2_selected) {
  2331.                         var \$form = \$(form);
  2332.                         var product_id = \$form.find('input[name=product_id]').val();
  2333.                         var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  2334.                         var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  2335.                         eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  2336.                     }
  2337.                     
  2338.                     var \$form = \$('#form1');
  2339.                     var \$sele2 = \$form.find('#form_data_1_classcategory_id2');
  2340.                     {% if form.data.vars.prototype.classcategory_id2 is defined %}
  2341.                     fnSetClassCategories(
  2342.                         \$('#form1'), {{ form.data.vars.prototype.classcategory_id2.vars.value|json_encode|raw }}
  2343.                     );
  2344.                     {% elseif form.data.vars.prototype.classcategory_id1 is defined %}
  2345.                     eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.data.vars.prototype.classcategory_id1.vars.value|json_encode|raw }}, null);
  2346.                     {% endif %}
  2347.                 });
  2348.             }
  2349.             
  2350.             // 選択肢と連動する価格の表示
  2351.             {% if Product.hasProductClass %}
  2352.                 if(category == 1) {
  2353.                     var default_left_price = \$('.ec-layoutRole__main').find('.price02-default_left').first();
  2354.                     var default_right_price = \$('.ec-layoutRole__main').find('.price02-default_right').first();
  2355.                     \$('.left_price').text(default_left_price.text());
  2356.                     \$('.right_price').text(default_right_price.text());
  2357.                 } else if(category == 2) {
  2358.                     var default_ring_price = \$('.ec-layoutRole__main').find('.price02-default_ring').first();
  2359.                     \$('.ring_price').text(default_ring_price.text());
  2360.                 }
  2361.             {% else %}
  2362.                 // 規格なし
  2363.                 var default_ring_price = \$('.ec-layoutRole__main').find('.price02-default_ring').first();
  2364.                 \$('.ring_price').text(default_ring_price.text());
  2365.             {% endif %}
  2366.             
  2367.             // 結婚指輪・婚約指輪以外の場合
  2368.             if(category != 1 && category != 2) {
  2369.                 \$('#form_data_0_size').parent().css('display','none'); // サイズ不要
  2370.             }
  2371.             
  2372.             // Android firefox 対策
  2373.             if (navigator.userAgent.indexOf('Android') > 0) {
  2374.                 let main = document.getElementsByTagName('main')[0]; 
  2375.                 main.classList.add('Android'); 
  2376.             }
  2377.         });
  2378.     </script>
  2379.     <script>
  2380.         \$(function() {
  2381.             function changePrice(category, change_class, classcategory_id1, classcategory_id2, size, product_id) {
  2382.                 var price = '';
  2383.                 price = \$('#price_' + classcategory_id1 + '_' + classcategory_id2).text();
  2384.                 price = price * 1; //number
  2385.                 if (category == 1) { // 結婚指輪の場合のみサイズによる加算あり
  2386.                     if (size) {
  2387.                         if(size >= 16.5) {
  2388.                             price = price + 22000; // 割り増し(税込)
  2389.                         } else if(size >= 12.5) {
  2390.                             price = price + 11000; // 割り増し(税込)
  2391.                         }
  2392.                     }
  2393.                 } else if(category == 2) { // 婚約指輪の C110、C112の場合のみサイズによる加算あり
  2394.                     if (product_id == 110 || product_id == 112) {
  2395.                         if (size) {
  2396.                             if(size >= 16) {
  2397.                                 price = price + 22000; // 割り増し(税込)
  2398.                             }
  2399.                         }
  2400.                     }
  2401.                 }
  2402.                 price = String(price).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '\$1,');
  2403.                 \$(change_class).text(\"¥\" + price);
  2404.             }
  2405.             
  2406.             \$('.form-select').on('change', function(event) {
  2407.                 var category=0;
  2408.                 {% for ProductCategory in Product.ProductCategories %}
  2409.                     {% if ProductCategory.Category.id == 1 %}
  2410.                         category = 1; // 結婚指輪
  2411.                     {% elseif ProductCategory.Category.id == 2 %}
  2412.                         category = 2; // 婚約指輪
  2413.                     {% endif %}
  2414.                 {% endfor %}
  2415.                 
  2416.                 {% if Product.hasProductClass %}
  2417.                     if (\$(this).attr(\"id\") == 'form_data_0_classcategory_id1') {
  2418.                         if (category == 1) {
  2419.                             changePrice(category, \".ring_price\", \$(this).val(), '', \$('#form_data_0_size').val(), {{ Product.id}});
  2420.                         } else if (category == 2) {
  2421.                             // 規格2の最安値(class_category2 = 19)を表示
  2422.                             changePrice(category, \".ring_price\", \$(this).val(), 19, '', {{ Product.id}});
  2423.                         }
  2424.                     } else if (\$(this).attr(\"id\") == 'form_data_0_classcategory_id2') {
  2425.                         if (category == 1) {
  2426.                             changePrice(category, \".left_price\", 1, \$(this).val(), \$('#form_data_0_size').val(), {{ Product.id}});
  2427.                         } else if (category == 2) {
  2428.                             changePrice(category, \".ring_price\", \$('#form_data_0_classcategory_id1').val(), \$(this).val(), \$('#form_data_0_size').val(), {{ Product.id}});
  2429.                         }
  2430.                     } else if (\$(this).attr(\"id\") == 'form_data_1_classcategory_id2') {
  2431.                         if (category == 1) {
  2432.                             changePrice(category, \".right_price\", 2, \$(this).val(), \$('#form_data_1_size').val(), {{ Product.id}});
  2433.                         }
  2434.                     } else if (\$(this).attr(\"id\") == 'form_data_0_size') {
  2435.                         if (category == 1) {
  2436.                             changePrice(category,\".left_price\", 1, \$('#form_data_0_classcategory_id2').val(), \$(this).val(), {{ Product.id}});
  2437.                         } else if (category == 2) {
  2438.                             changePrice(category, \".ring_price\", \$('#form_data_0_classcategory_id1').val(), \$('#form_data_0_classcategory_id2').val(), \$(this).val(), {{ Product.id}});
  2439.                         }
  2440.                     } else if (\$(this).attr(\"id\") == 'form_data_1_size') {
  2441.                         if (category == 1) {
  2442.                             changePrice(category, \".right_price\", 2, \$('#form_data_1_classcategory_id2').val(), \$(this).val(), {{ Product.id}});
  2443.                         }
  2444.                     }
  2445.                 {% else %}
  2446.                     // 規格なし
  2447.                     if (\$(this).attr(\"id\") == 'form_data_0_size') {
  2448.                         changePrice(category, \".ring_price\", '', '', \$('#form_data_0_size').val(), {{ Product.id}});
  2449.                     }
  2450.                 {% endif %}
  2451.             })
  2452.         });
  2453.     </script>
  2454.     <script>
  2455.         \$(function() {
  2456.             // 119 の場合
  2457.             {% if(Product.id == 119) %}
  2458.                 \$('#form_data_0_classcategory_id1').val('27');
  2459.                 \$('#form_data_0_classcategory_id1').parent().css('display','none');
  2460.                 \$('#form_data_0_size').val('11');
  2461.                 \$('#form_data_0_size').parent().css('display','none');
  2462.                 
  2463.                 // 規格2に選択肢を割り当てる。
  2464.                 function fnSetClassCategories(form, classcat_id2_selected) {
  2465.                     var \$form = \$(form);
  2466.                     var product_id = \$form.find('input[name=product_id]').val();
  2467.                     var \$sele1 = \$form.find('#form_data_0_classcategory_id1');
  2468.                     var \$sele2 = \$form.find('#form_data_0_classcategory_id2');
  2469.                     eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  2470.                 }
  2471.                 fnSetClassCategories(
  2472.                     \$('#form1'), {{ form.data.vars.prototype.classcategory_id2.vars.value|json_encode|raw }}
  2473.                 );
  2474.             {% endif %}
  2475.         });
  2476.     </script>
  2477. {% endblock %}
  2478. {% block main %}
  2479.     <div class=\"ec-productRole\">
  2480.         <div class=\"ec-grid2\">
  2481.             <div class=\"ec-grid2__cell\">
  2482.                 <div class=\"ec-sliderItemRole\">
  2483.                     <div class=\"item_visual\">
  2484.                         {% set img =\"\" %}{# お気に入りリスト登録用 #}
  2485.                         {% for ProductImage in Product.ProductImage %}
  2486.                             {% if loop.first %}{% set img = ProductImage %}{% endif %}
  2487.                             <div class=\"slide-item\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"{% if loop.index > 1 %} loading=\"lazy\"{% endif %}></div>
  2488.                         {% else %}
  2489.                             <div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"></div>
  2490.                         {% endfor %}
  2491.                     </div>
  2492.                     <div class=\"item_nav\">
  2493.                         {% for ProductImage in Product.ProductImage %}
  2494.                             <div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  2495.                         {% endfor %}
  2496.                     </div>
  2497.                 </div>
  2498.             </div>
  2499.             <div class=\"ec-grid2__cell\">
  2500.                 <div class=\"ec-productRole__profile\">
  2501.                     {# 商品名 #}
  2502.                     <div class=\"ec-productRole__title\">
  2503.                         <h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  2504.                     </div>
  2505.                     {# タグ #}
  2506.                     <ul class=\"ec-productRole__tags\">
  2507.                         {% for Tag in Product.Tags %}
  2508.                             <li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  2509.                         {% endfor %}
  2510.                     </ul>
  2511.                     {# 通常価格 #}
  2512.                     {# 表示しない
  2513.                     {% if Product.hasProductClass -%}
  2514.                         <div class=\"ec-productRole__priceRegular\">
  2515.                             {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  2516.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  2517.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2518.                             {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  2519.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
  2520.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2521.                             {% endif %}
  2522.                         </div>
  2523.                     {% else %}
  2524.                         {% if Product.getPrice01Max is not null %}
  2525.                             <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  2526.                             <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2527.                         {% endif %}
  2528.                     {% endif %}
  2529.                     #}
  2530.                     {# カテゴリ判定用 1:結婚指輪 2:婚約指輪 #}
  2531.                     {% set category = 0 %}
  2532.                     {% if Product.ProductCategories is not empty %}
  2533.                         {% for ProductCategory in Product.ProductCategories %}
  2534.                             {% for Category in ProductCategory.Category.path %}
  2535.                                 {% if Category.id == 1 %}
  2536.                                     {% set category = 1 %}
  2537.                                 {% elseif Category.id == 2 %}
  2538.                                     {% set category = 2 %}
  2539.                                 {% endif %}
  2540.                             {% endfor %}
  2541.                         {% endfor %}
  2542.                     {% endif %}
  2543.                     {# 販売価格 #}
  2544.                     <div id=\"calc_price\" class=\"d-none\">
  2545.                         {% if Product.hasProductClass -%}
  2546.                             {% set ProductClass_info_all = repository('Eccube\\\\Entity\\\\ProductClass').findBy({ Product: Product }, { ClassCategory1: 'asc', ClassCategory2: 'asc' }) %}
  2547.                             {% for ProductClass_info in ProductClass_info_all %}
  2548.                                 <p id=\"price_{{ ProductClass_info.ClassCategory1 ? ProductClass_info.ClassCategory1.id }}_{{ ProductClass_info.ClassCategory2 ? ProductClass_info.ClassCategory2.id }}\">{{ ProductClass_info.price02_inc_tax }}</p>
  2549.                             {% endfor %}
  2550.                         {% else %}
  2551.                             <p id=\"price__\">{{ Product.getPrice02IncTaxMin }}</p>
  2552.                         {% endif %}
  2553.                     </div>
  2554.                     <div class=\"ec-productRole__price\">
  2555.                         {% if Product.hasProductClass -%}
  2556.                             {% if category == 1 %}
  2557.                                 {% set ProductClass_left = repository('Eccube\\\\Entity\\\\ProductClass').findBy({ Product: Product, ClassCategory1: 1 }, { price02: 'asc' }, 1) %}
  2558.                                 {% set ProductClass_right = repository('Eccube\\\\Entity\\\\ProductClass').findBy({ Product: Product, ClassCategory1: 2 }, { price02: 'asc' }, 1) %}
  2559.                                 <div class=\"ec-price\">
  2560.                                     <span class=\"fs-4\">{{ '左のリング'|trans }}</span>
  2561.                                     <span class=\"ec-price__price price02-default price02-default_left pe-0\">{{ ProductClass_left[0].price02_inc_tax|price }}</span>
  2562.                                     <span class=\"ec-price__tax\">{{ '(税込) ~'|trans }}</span>
  2563.                                 </div>
  2564.                                 <div class=\"ec-price\">
  2565.                                     <span class=\"fs-4\">{{ '右のリング'|trans }}</span>
  2566.                                     <span class=\"ec-price__price price02-default price02-default_right pe-0\">{{ ProductClass_right[0].price02_inc_tax|price }}</span>
  2567.                                     <span class=\"ec-price__tax\">{{ '(税込) ~'|trans }}</span>
  2568.                                 </div>
  2569.                             {% elseif category == 2 %}
  2570.                                 <div class=\"ec-price\">
  2571.                                     <span class=\"ec-price__price price02-default price02-default_ring pe-0\">{{ Product.getPrice02IncTaxMin|price }}</span>
  2572.                                     <span class=\"ec-price__tax\">{{ '(税込) ~'|trans }}</span>
  2573.                                 </div>
  2574.                             {% endif %}
  2575.                         {% else %}
  2576.                             <div class=\"ec-price\">
  2577.                                 <span class=\"ec-price__price price02-default_ring pe-0\">{{ Product.getPrice02IncTaxMin|price }}</span>
  2578.                                 <span class=\"ec-price__tax\">{{ '(税込)'|trans }}</span>
  2579.                             </div>
  2580.                         {% endif %}
  2581.                     </div>
  2582.                     {# 詳細説明 #}
  2583.                     <div class=\"ec-productRole__description mt-5\">{{ Product.description_detail|raw|nl2br }}
  2584.                     </div>
  2585.                     {# 商品コード #}
  2586.                     {% if Product.code_min is not empty %}
  2587.                         <div class=\"ec-productRole__code\">
  2588.                             {{ '商品コード'|trans }}: <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  2589.                         </div>
  2590.                     {% endif %}
  2591.                     
  2592.                     {# 関連カテゴリ #}
  2593.                     {% if Product.ProductCategories is not empty %}
  2594.                         <div class=\"ec-productRole__category mb-3\">
  2595.                             <div>{{ '関連カテゴリ'|trans }}</div>
  2596.                             {% for ProductCategory in Product.ProductCategories %}
  2597.                                 <ul>
  2598.                                     <li>
  2599.                                         {% for Category in ProductCategory.Category.path %}
  2600.                                             <a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  2601.                                             <span>></span>{% endif -%}
  2602.                                         {% endfor %}
  2603.                                     </li>
  2604.                                 </ul>
  2605.                             {% endfor %}
  2606.                         </div>
  2607.                     {% endif %}
  2608.                     
  2609.                     {% if Product.id == 38 or Product.id == 39 or Product.id == 47  %}
  2610.                         <div class=\"text_brown lead mt-4 mb-3\">
  2611.                             男性用リングをお求めの場合は「左のリング」を、<br>
  2612.                             女性用リングをお求めの場合は「右のリング」をお選びください。
  2613.                         </div>
  2614.                     {% endif %}
  2615.                     
  2616.                     <form action=\"{{ url('product_addmulti_cart', {id:Product.id, type:\"no_type\"}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  2617.                         <div class=\"product-class-item\" data-prototype=\"{{ form_widget(form.data.vars.prototype)|e('html_attr') }}\" data-index=0></div>
  2618.                         
  2619.                         {% if Product.stock_find %}
  2620.                             {#
  2621.                             <div class=\"ec-productRole__actions\">
  2622.                                 {% if form.classcategory_id1 is defined %}
  2623.                                     <div class=\"ec-select\">
  2624.                                         {{ form_row(form.classcategory_id1) }}
  2625.                                         {{ form_errors(form.classcategory_id1) }}
  2626.                                     </div>
  2627.                                     {% if form.classcategory_id2 is defined %}
  2628.                                         <div class=\"ec-select\">
  2629.                                             {{ form_row(form.classcategory_id2) }}
  2630.                                             {{ form_errors(form.classcategory_id2) }}
  2631.                                         </div>
  2632.                                     {% endif %}
  2633.                                 {% endif %}
  2634.                                 <div class=\"ec-numberInput\"><span>{{ '数量'|trans }}</span>
  2635.                                     {{ form_widget(form.quantity) }}
  2636.                                     {{ form_errors(form.quantity) }}
  2637.                                 </div>
  2638.                             </div>
  2639.                             #}
  2640.                             
  2641.                             <a href=\"#\" class=\"js_form_add d-none\">
  2642.                                 <span class=\"fa fa-plus-circle\"></span>
  2643.                                 Add Another
  2644.                             </a>
  2645.                             
  2646.                             <!-- trigger modal -->
  2647.                             {% if Product.id != 119 and category != 0 %}
  2648.                                 <p role=\"button\" class=\"text-end pb-4 text-danger fw-bold\" data-bs-toggle=\"modal\" data-bs-target=\"#colorSample\">
  2649.                                     素材サンプル画像はこちらをご覧ください
  2650.                                 </p>
  2651.                             {% endif %}
  2652.                             <!-- Modal -->
  2653.                             <div class=\"modal fade\" id=\"colorSample\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">
  2654.                               <div class=\"modal-dialog modal-dialog-centered\">
  2655.                                 <div class=\"modal-content\">
  2656.                                   <div class=\"modal-body\">
  2657.                                       <img src=\"{{ asset('assets/img/pages/material.jpg') }}\">
  2658.                                   </div>
  2659.                                   <div class=\"modal-footer\">
  2660.                                     <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>
  2661.                                   </div>
  2662.                                 </div>
  2663.                               </div>
  2664.                             </div>
  2665.                             
  2666.                             {#{% if Product.hasProductClass %}#}
  2667.                                 {% set delivery_duration = Product.ProductClasses[0].getDeliveryDuration() %}
  2668.                                 {% if delivery_duration %}
  2669.                                     <div id=\"delivery_duration\" class=\"mt-4\">
  2670.                                         <p class=\"fw-bold\">
  2671.                                             {{ '納期のめやす:'|trans }}<span class=\"ps-3 fs-4\">
  2672.                                             {% if delivery_duration.getId() == 11 %}
  2673.                                                 {{ \"now\" |date_modify(\"+105 day\")|date(\"n月d日\") }}
  2674.                                             {% elseif delivery_duration.getId() == 10 %}
  2675.                                                 {{ \"now\" |date_modify(\"+90 day\")|date(\"n月d日\") }}
  2676.                                             {% elseif delivery_duration.getId() == 9 %}
  2677.                                                 {{ \"now\" |date_modify(\"+60 day\")|date(\"n月d日\") }}
  2678.                                             {% elseif delivery_duration.getId() == 8 %}
  2679.                                                 {{ \"now\" |date_modify(\"+60 day\")|date(\"n月d日\") }}
  2680.                                             {% elseif delivery_duration.getId() == 7 %}
  2681.                                                 {{ \"now\" |date_modify(\"+30 day\")|date(\"n月d日\") }}
  2682.                                             {% elseif delivery_duration.getId() == 6 %}
  2683.                                                 {{ \"now\" |date_modify(\"+21 day\")|date(\"n月d日\") }}
  2684.                                             {% elseif delivery_duration.getId() == 5 %}
  2685.                                                 {{ \"now\" |date_modify(\"+14 day\")|date(\"n月d日\") }}
  2686.                                             {% elseif delivery_duration.getId() == 4 %}
  2687.                                                 {{ \"now\" |date_modify(\"+7 day\")|date(\"n月d日\") }}
  2688.                                             {% elseif delivery_duration.getId() == 3 %}
  2689.                                                 {{ \"now\" |date_modify(\"+3 day\")|date(\"n月d日\") }}
  2690.                                             {% endif %}
  2691.                                            </span> {{ '頃です。'|trans }}
  2692.                                         </p>
  2693.                                         <p>短納期をご希望の方は購入手続き画面のお問い合わせ欄にご記入ください。<br>
  2694.                                         事前にご相談されたい場合は下記のお問い合わせからお問い合わせ下さい。<br>
  2695.                                         <a class=\"d-inline-block pt-2\" href=\"{{ url('contact') }}\">お問い合わせはこちら<i class=\"fas fa-angle-right ps-2\"></i></a></p>
  2696.                                     </div>
  2697.                                 {% endif %}
  2698.                             {#{% endif %}#}
  2699.                             
  2700.                             <div class=\"row cartin_btn_area pt-3 gx-2\">
  2701.                                 {% if category == 1 %}
  2702.                                     <div id=\"cartin_left\" class=\"/*ec-productRole__btn*/ col-6 mb-3\">
  2703.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_left lh-sm text-wrap\">
  2704.                                             {{ '左のリングを'|trans }}<span class=\"aks\">{{ 'カートに入れる'|trans }}</span>
  2705.                                         </button>
  2706.                                     </div>
  2707.                                     <div id=\"cartin_right\" class=\"/*ec-productRole__btn*/ col-6 mb-3\">
  2708.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_right lh-sm text-wrap\">
  2709.                                             {{ '右のリングを'|trans }}<span class=\"aks\">{{ 'カートに入れる'|trans }}</span>
  2710.                                         </button>
  2711.                                     </div>
  2712.                                     <div id=\"cartin_set\" class=\"/*ec-productRole__btn*/ col-12 lh-sm text-wrap\">
  2713.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_set\">
  2714.                                             {{ '2本セットでカートに入れる'|trans }}
  2715.                                         </button>
  2716.                                     </div>
  2717.                                 {% else %}
  2718.                                     <div id=\"cartin_no_type\"  class=\"/*ec-productRole__btn*/ col-12\">
  2719.                                         <button type=\"submit\" class=\"ec-blockBtn--action add-cart add-cart_no_type\">
  2720.                                             {{ 'カートに入れる'|trans }}
  2721.                                         </button>
  2722.                                     </div>
  2723.                                 {% endif %}
  2724.                             </div>
  2725.                         {% else %}
  2726.                             <div class=\"ec-productRole__btn w-100\">
  2727.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  2728.                                     {{ 'ただいま品切れ中です。'|trans }}
  2729.                                 </button>
  2730.                             </div>
  2731.                         {% endif %}
  2732.                         {{ form_rest(form) }}
  2733.                     </form>
  2734.                     <div class=\"ec-modal\">
  2735.                         <div class=\"ec-modal-overlay\">
  2736.                             <div class=\"ec-modal-wrap\">
  2737.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  2738.                                 <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  2739.                                 <div class=\"ec-modal-box\">
  2740.                                     <div class=\"ec-role\">
  2741.                                         <span class=\"ec-inlineBtn--cancel mb-2\">{{ 'お買い物を続ける'|trans }}</span>
  2742.                                         <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action mb-2\">{{ 'カートへ進む'|trans }}</a>
  2743.                                     </div>
  2744.                                 </div>
  2745.                             </div>
  2746.                         </div>
  2747.                     </div>
  2748.                     
  2749.                     <div class=\"ec-productRole__btn w-100 mt-3 favorite_btn_area\">
  2750.                         {% if is_favorite == false %}
  2751.                             {% if Product.hasProductClass -%}
  2752.                                 {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  2753.                                     <button onclick=\"favo({{ Product.id }}, '{{ img }}', '{{ Product.name }}', '{{ Product.getPrice02IncTaxMin|price }}')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  2754.                                         {{ 'お気に入りに追加'|trans }}
  2755.                                     </button>
  2756.                                 {% else %}
  2757.                                     <button onclick=\"favo({{ Product.id }}, '{{ img }}', '{{ Product.name }}', '{{ Product.getPrice02IncTaxMin|price }} ~ {#{{ Product.getPrice02IncTaxMax|price }}#}')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  2758.                                         {{ 'お気に入りに追加'|trans }}
  2759.                                     </button>
  2760.                                 {% endif %}
  2761.                             {% else %}
  2762.                                 <button onclick=\"favo({{ Product.id }}, '{{ img }}', '{{ Product.name }}', '{{ Product.getPrice02IncTaxMin|price }}')\" id=\"favorite_local\" class=\"ec-blockBtn--cancel\">
  2763.                                     {{ 'お気に入りに追加'|trans }}
  2764.                                 </button>
  2765.                             {% endif %}
  2766.                         {% else %}
  2767.                             <button id=\"favorite_local\" class=\"ec-blockBtn--cancel\"
  2768.                                 disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  2769.                             </button>
  2770.                         {% endif %}
  2771.                     </div>
  2772.                     
  2773.                 </div>
  2774.             </div>
  2775.         </div>
  2776.         <!--div class=\"row\">
  2777.             <div class=\"col-md-6 offset-md-3\">
  2778.                 <img src=\"{{ asset('assets/img/pages/material.jpg') }}\">
  2779.             </div>
  2780.         </div>-->
  2781.         {% if Product.freearea %}
  2782.              <div class=\"ec-productRole__description\">
  2783.                  {{ include(template_from_string(Product.freearea), sandboxed = true) }}
  2784.             </div>
  2785.         {% endif %}
  2786.     </div>
  2787. {% endblock %}""Product/detail.twig""/home/apteq5/apteq5x.com/public_html/tanzoec/app/template/tanzo/Product/detail.twig");
  2788.     }
  2789.     
  2790.     public function checkSecurity()
  2791.     {
  2792.         static $tags = array("set" => 13"if" => 108"for" => 205);
  2793.         static $filters = array("raw" => 97"json_encode" => 110"escape" => 113"trans" => 186"no_image_product" => 373"slice" => 376"replace" => 376"default" => 376"price" => 769"nl2br" => 791"e" => 826"date" => 883"date_modify" => 883);
  2794.         static $functions = array("class_categories_as_json" => 97"url" => 278"asset" => 370"repository" => 754"form_widget" => 826"form_rest" => 943"include" => 994"template_from_string" => 994);
  2795.         try {
  2796.             $this->sandbox->checkSecurity(
  2797.                 ['set''if''for'],
  2798.                 ['raw''json_encode''escape''trans''no_image_product''slice''replace''default''price''nl2br''e''date''date_modify'],
  2799.                 ['class_categories_as_json''url''asset''repository''form_widget''form_rest''include''template_from_string']
  2800.             );
  2801.         } catch (SecurityError $e) {
  2802.             $e->setSourceContext($this->source);
  2803.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  2804.                 $e->setTemplateLine($tags[$e->getTagName()]);
  2805.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  2806.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  2807.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  2808.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  2809.             }
  2810.             throw $e;
  2811.         }
  2812.     }
  2813. }