var/cache/dev/twig/a4/a41100e52908bf74ef7aaed01426b018.php line 55

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* __string_template__3d1656759d2f44506edf71d82f27c517 */
  14. class __TwigTemplate_f2739f5b632fb4f7f911e9eb7608884e 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 1
  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""__string_template__3d1656759d2f44506edf71d82f27c517"));
  40.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  41.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""__string_template__3d1656759d2f44506edf71d82f27c517"));
  42.         // line 3
  43.         $context["body_class"] = "product_page";
  44.         // line 1
  45.         $this->parent $this->loadTemplate("default_frame.twig""__string_template__3d1656759d2f44506edf71d82f27c517"1);
  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 5
  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 6
  61.         echo "<style>
  62. \t.slick-slider {
  63. \t\tmargin-bottom: 30px;
  64. \t}
  65. \t.slick-dots {
  66. \t\tposition: absolute;
  67. \t\tbottom: -45px;
  68. \t\tdisplay: block;
  69. \t\twidth: 100%;
  70. \t\tpadding: 0;
  71. \t\tlist-style: none;
  72. \t\ttext-align: center;
  73. \t}
  74. \t.slick-dots li {
  75. \t\tposition: relative;
  76. \t\tdisplay: inline-block;
  77. \t\twidth: 20px;
  78. \t\theight: 20px;
  79. \t\tmargin: 0 5px;
  80. \t\tpadding: 0;
  81. \t\tcursor: pointer;
  82. \t}
  83. \t.slick-dots li button {
  84. \t\tfont-size: 0;
  85. \t\tline-height: 0;
  86. \t\tdisplay: block;
  87. \t\twidth: 20px;
  88. \t\theight: 20px;
  89. \t\tpadding: 5px;
  90. \t\tcursor: pointer;
  91. \t\tcolor: transparent;
  92. \t\tborder: 0;
  93. \t\toutline: none;
  94. \t\tbackground: transparent;
  95. \t}
  96. \t.slick-dots li button:hover,
  97. \t.slick-dots li button:focus {
  98. \t\toutline: none;
  99. \t}
  100. \t.slick-dots li button:hover:before,
  101. \t.slick-dots li button:focus:before {
  102. \t\topacity: 1;
  103. \t}
  104. \t.slick-dots li button:before {
  105. \t\tcontent: \" \";
  106. \t\tline-height: 20px;
  107. \t\tposition: absolute;
  108. \t\ttop: 0;
  109. \t\tleft: 0;
  110. \t\twidth: 12px;
  111. \t\theight: 12px;
  112. \t\ttext-align: center;
  113. \t\topacity: .25;
  114. \t\tbackground-color: black;
  115. \t\tborder-radius: 50%;
  116. \t}
  117. \t.slick-dots li.slick-active button:before {
  118. \t\topacity: .75;
  119. \t\tbackground-color: black;
  120. \t}
  121. \t.slick-dots li button.thumbnail img {
  122. \t\twidth: 0;
  123. \t\theight: 0;
  124. \t}
  125. </style>
  126. ";
  127.         
  128.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  129.         
  130.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  131.     }
  132.     // line 83
  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.         echo "<script>
  141.     \$(function () {
  142.         var noChange = true;
  143.         \$('.item_visual').on('afterChange', function (event, slick, currentSlide) {
  144.             if (noChange) {
  145.                 var \$img = \$(\"div[data-index='\" + currentSlide + \"']\").find('img');
  146.                 if (\$('#classcategory_id1').length > 0) {
  147.                     \$('#classcategory_id1').val(\"__unselected\");
  148.                     \$('#classcategory_id1').change();
  149.                 }
  150.                 if (\$img.length > 0) {
  151.                     var class1 = \$img.data('class_category1');
  152.                     if (class1) {
  153.                         \$('#classcategory_id1').val(class1);
  154.                         \$('#classcategory_id1').change();
  155.                     }
  156.                     var class2 = \$img.data('class_category2');
  157.                     if (class2) {
  158.                         setTimeout(function () {
  159.                             \$('#classcategory_id2').val(class2);
  160.                             \$('#classcategory_id2').change();
  161.                         }, 100);
  162.                     }
  163.                 }
  164.             } else {
  165.                 noChange = true;
  166.             }
  167.         });
  168.         if (\$('#classcategory_id1').length > 0 && \$('#classcategory_id2').length > 0) {
  169.             \$('#classcategory_id2').change(function () {
  170.                 var \$this = \$(this);
  171.                 if (\$this.val()) {
  172.                     var class1 = \$('#classcategory_id1').val();
  173.                     if (\$('#apg_product_class_image_thumb-' + class1 + '-' + \$this.val()).length > 0) {
  174.                         var class2 = \$this.val();
  175.                         \$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
  176.                         \$('.item_visual').slick('slickGoTo', \$index);
  177.                         noChange = false;
  178.                     }
  179.                 }
  180.             });
  181.             ";
  182.         // line 124
  183.         if ((twig_get_attribute($this->env$this->source, (isset($context["apgProductClassConfig"]) || array_key_exists("apgProductClassConfig"$context) ? $context["apgProductClassConfig"] : (function () { throw new RuntimeError('Variable "apgProductClassConfig" does not exist.'124$this->source); })()), "getImageType", [], "method"falsefalsetrue124) == twig_constant("Plugin\\ApgProductClassImage42\\Domain\\ClassImageType::CLASS_IMAGE1_ONLY"))) {
  184.             // line 125
  185.             echo "                \$('#classcategory_id1').change(function () {
  186.                     var \$this = \$(this);
  187.                     if (\$this.val() != \"__unselected\") {
  188.                         var class1 = \$this.val();
  189.                         if (\$(\"img[data-class_category1='\" + class1 + \"']\").length > 0) {
  190.                             var class2 = \$(\"img[data-class_category1='\" + class1 + \"']\").data('class_category2');
  191.                             \$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
  192.                             \$('.item_visual').slick('slickGoTo', \$index);
  193.                             noChange = false;
  194.                         }
  195.                     }
  196.                 });
  197.             ";
  198.         }
  199.         // line 138
  200.         echo "        } else if (\$('#classcategory_id1').length > 0) {
  201.             \$('#classcategory_id1').change(function () {
  202.                 var \$this = \$(this);
  203.                 if (\$this.val() != \"__unselected\") {
  204.                     if (\$('#apg_product_class_image_thumb-' + \$this.val() + '-').length > 0) {
  205.                         \$index = \$('#apg_product_class_image_thumb-' + \$this.val() + '-').parents('div').data('index');
  206.                         \$('.item_visual').slick('slickGoTo', \$index);
  207.                         noChange = false;
  208.                     }
  209.                 }
  210.             });
  211.         }
  212.     });
  213. </script>
  214. <script>
  215. \t// #ratingModal がURLに含まれる場合、レビューのモーダルを開く
  216. \t\$(function() {
  217. \t\tconst currentHash = window.location.hash;
  218. \t\tif (currentHash.substring(1).includes('ratingModal')) {
  219. \t\t\t\$(\"#ratingModal\").modal('show');
  220. \t\t}
  221. \t});
  222. </script>
  223. <script>
  224. \t// ボリュームアップの自由入力対応
  225. \tconst volumeUpFlower = \"productoption2\";
  226. \tconst volumeUpBalloon = \"productoption1\";
  227. \tconst volumeUpFlower_free = \"productoption16\";
  228. \tconst volumeUpBalloon_free = \"productoption15\";
  229. \t\$(function(){
  230. \t\t\$(`#\${volumeUpFlower_free}`).parents(\".plg_aoio\").hide();
  231. \t\t\$(`#\${volumeUpBalloon_free}`).parents(\".plg_aoio\").hide();
  232. \t\t\$(`#\${volumeUpFlower}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpFlower}_free\" name=\"\${volumeUpFlower}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpFlower}_free\">自由入力</label></div>`)
  233. \t\t\$(`#\${volumeUpBalloon}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpBalloon}_free\" name=\"\${volumeUpBalloon}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpBalloon}_free\">自由入力</label></div>`)
  234. \t\t\$(`#\${volumeUpFlower} .form-check, #\${volumeUpBalloon} .form-check`).on('click', function() {
  235. \t\t\tconst \$this_radio = \$(this).find('input[type=\"radio\"]');
  236. \t\t\tconst name = \$this_radio.attr(\"name\");
  237. \t\t\tlet free_input = \"\";
  238. \t\t\tif(name == volumeUpFlower){
  239. \t\t\t\tfree_input = \$(`#\${volumeUpFlower_free}`);
  240. \t\t\t} else if(name == volumeUpBalloon){
  241. \t\t\t\tfree_input = \$(`#\${volumeUpBalloon_free}`);
  242. \t\t\t} else {
  243. \t\t\t\treturn;
  244. \t\t\t}
  245. \t\t\tif(\$this_radio.hasClass(\"js-volumeUp_free\")){
  246. \t\t\t\tfree_input.parents(\".plg_aoio\").show();
  247. \t\t\t} else {
  248. \t\t\t\tfree_input.parents(\".plg_aoio\").hide();
  249. \t\t\t\tfree_input.val(\"\");
  250. \t\t\t}
  251. \t\t});
  252. \t});
  253. </script>
  254. <script src=\"";
  255.         // line 199
  256.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/js/signboard.js"), "html"nulltrue);
  257.         echo "\"></script>
  258. <script>
  259. \teccube.classCategories = ";
  260.         // line 201
  261.         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.'201$this->source); })()), 201$this->source));
  262.         echo ";
  263. \t// 規格2に選択肢を割り当てる。
  264. \tfunction fnSetClassCategories(form, classcat_id2_selected) {
  265. \t\tvar \$form = \$(form);
  266. \t\tvar product_id = \$form.find('input[name=product_id]').val();
  267. \t\tvar \$sele1 = \$form.find('select[name=classcategory_id1]');
  268. \t\tvar \$sele2 = \$form.find('select[name=classcategory_id2]');
  269. \t\teccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  270. \t}
  271. \t";
  272.         // line 212
  273.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue212)) {
  274.             // line 213
  275.             echo "\tfnSetClassCategories(
  276. \t\t\$('#form1'), ";
  277.             // line 214
  278.             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.'214$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue214), "vars", [], "any"falsefalsetrue214), "value", [], "any"falsefalsetrue214), 214$this->source));
  279.             echo "
  280. \t);
  281. \t";
  282.         } elseif (twig_get_attribute($this->env$this->source,         // line 216
  283. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue216)) {
  284.             // line 217
  285.             echo "\teccube.checkStock(\$('#form1'), ";
  286.             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.'217$this->source); })()), "id", [], "any"falsefalsetrue217), 217$this->source), "html"nulltrue);
  287.             echo ", ";
  288.             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.'217$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue217), "vars", [], "any"falsefalsetrue217), "value", [], "any"falsefalsetrue217), 217$this->source));
  289.             echo ", null);
  290. \t";
  291.         }
  292.         // line 219
  293.         echo "</script>
  294. <script>
  295. \t\$(function() {
  296. \t  // 初期状態として、最初の .form-check に active クラスを付与してラジオボタンを選択
  297. \t  \$('#productoption2 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  298. \t  \$('#productoption1 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  299. \t
  300. \t  // クリックイベントの設定
  301. \t  \$('#productoption2 .form-check, #productoption1 .form-check').on('click', function() {
  302. \t\t// 対象の親を取得して、同じブロック内の .form-check から active を削除
  303. \t\t\$(this).closest('#productoption2, #productoption1').find('.form-check').removeClass('active');
  304. \t
  305. \t\t// クリックした要素に active を付与
  306. \t\t\$(this).addClass('active');
  307. \t
  308. \t\t// 対象のラジオボタンを選択状態にする
  309. \t\t\$(this).find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  310. \t  });
  311. \t});
  312. \t</script>
  313. \t
  314. <script>
  315. \t\$(function () {
  316. \t\t\$('[for=productoption2_2]').each(function () {
  317.     \t    \$(this).append('<span class=\"em\">★一番人気</span>');
  318. \t\t});
  319. \t\t
  320. \t\t// bfcache無効化
  321. \t\t\$(window).bind('pageshow', function (event) {
  322. \t\t\tif (event.originalEvent.persisted) {
  323. \t\t\t\tlocation.reload(true);
  324. \t\t\t}
  325. \t\t});
  326. \t\t// Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  327. \t\t// img タグに width, height が付与されている.
  328. \t\t// 630px 未満の画面サイズでは縦横比が壊れるための対策
  329. \t\t// see https://github.com/EC-CUBE/ec-cube/pull/5023
  330. \t\t// \$('.ec-grid2__cell').hide();
  331. \t\tvar removeSize = function () {
  332. \t\t\t\$('.slide-item').height('');
  333. \t\t\t\$('.slide-item img')
  334. \t\t\t\t.removeAttr('width')
  335. \t\t\t\t.removeAttr('height')
  336. \t\t\t\t.removeAttr('style');
  337. \t\t};
  338. \t\tvar slickInitial = function (slick) {
  339. \t\t\t\$('.ec-grid2__cell').fadeIn(1500);
  340. \t\t\tvar baseHeight = \$(slick.target).height();
  341. \t\t\tvar baseWidth = \$(slick.target).width();
  342. \t\t\tvar rate = baseWidth / baseHeight;
  343. \t\t\t\$('.slide-item').height(baseHeight * rate); // 余白を削除する
  344. \t\t\t// transform を使用することでCLSの影響を受けないようにする
  345. \t\t\t\$('.slide-item img')
  346. \t\t\t\t.css(
  347. \t\t\t\t\t{
  348. \t\t\t\t\t\t'transform-origin': 'top left',
  349. \t\t\t\t\t\t'transform': 'scaleY(' + rate + ')',
  350. \t\t\t\t\t\t'transition': 'transform .1s'
  351. \t\t\t\t\t}
  352. \t\t\t\t);
  353. \t\t\t// 正しいサイズに近くなったら属性を解除する
  354. \t\t\tsetTimeout(removeSize, 500);
  355. \t\t};
  356. \t\t\$('.item_visual').on('init', slickInitial);
  357. \t\t// リサイズ時は CLS の影響を受けないため属性を解除する
  358. \t\t\$(window).resize(removeSize);
  359. \t\t
  360. \t    let tabs = \$(\".tab_btn .cont\");
  361. \t\ttabs.on(\"click\", function() {
  362. \t\t\t\$(\".tab_btn .cont\").removeClass(\"show\");
  363. \t\t\t\$(this).addClass(\"show\");
  364. \t\t\tconst index = tabs.index(\$(this));
  365. \t\t\t\$(\".tab_box\").removeClass(\"show\").eq(index).addClass(\"show\");
  366. \t\t});
  367. \t\t
  368. \t\t\$(\".js_more_view\").on(\"click\", function() {
  369.             \$(this).toggleClass(\"on_click\");
  370.             \$(\".text_hide\").slideToggle(1000);
  371.         });
  372. \t});
  373. </script>
  374. <script>
  375. \t\$(function () {
  376. \t\t\$(\".open_cart_modal\").on(\"click\", function() {
  377. \t\t\t\$('.ec-modal').hide();
  378. \t\t\t\$(\"#cart_modal\").show();
  379. \t\t});
  380. \t\t
  381. \t\t\$('.add-cart').on('click', function (event) {
  382. \t\t\t\$form = \$('#form1');
  383. \t\t\t";
  384.         // line 314
  385.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue314)) {
  386.             // line 315
  387.             echo "\t\t\t// 規格1フォームの必須チェック
  388. \t\t\tif (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  389. \t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('";
  390.             // line 317
  391.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  392.             echo "');
  393. \t\t\t\treturn true;
  394. \t\t\t} else {
  395. \t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('');
  396. \t\t\t}
  397. \t\t\t";
  398.         }
  399.         // line 323
  400.         echo "
  401. \t\t\t";
  402.         // line 324
  403.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue324)) {
  404.             // line 325
  405.             echo "\t\t\t// 規格2フォームの必須チェック
  406. \t\t\tif (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  407. \t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('";
  408.             // line 327
  409.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  410.             echo "');
  411. \t\t\t\treturn true;
  412. \t\t\t} else {
  413. \t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('');
  414. \t\t\t}
  415. \t\t\t";
  416.         }
  417.         // line 333
  418.         echo "
  419. \t\t\t// 個数フォームのチェック
  420. \t\t\tif (\$('#quantity').val() < 1) {
  421. \t\t\t\t\$('#quantity')[0].setCustomValidity('";
  422.         // line 336
  423.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  424.         echo "');
  425. \t\t\t\treturn true;
  426. \t\t\t} else {
  427. \t\t\t\t\$('#quantity')[0].setCustomValidity('');
  428. \t\t\t}
  429. \t\t\t// オプション項目のチェック
  430. \t\t\tif (submit_check(\$form)) {
  431. \t\t\t\treturn true;
  432. \t\t\t}
  433. \t\t\tevent.preventDefault();
  434. \t\t\t\$.ajax({
  435. \t\t\t\turl: \$form.attr('action'),
  436. \t\t\t\ttype: \$form.attr('method'),
  437. \t\t\t\tdata: \$form.serialize(),
  438. \t\t\t\tdataType: 'json',
  439. \t\t\t\tbeforeSend: function (xhr, settings) {
  440. \t\t\t\t\t// Buttonを無効にする
  441. \t\t\t\t\t\$('.add-cart').prop('disabled', true);
  442. \t\t\t\t}
  443. \t\t\t}).done(function (data) {
  444. \t\t\t\t// レスポンス内のメッセージをalertで表示
  445. \t\t\t\t\$.each(data.messages, function () {
  446. \t\t\t\t\t\$('#added_cart .ec-modal-header').text(this);
  447. \t\t\t\t});
  448. \t\t\t\t\$('.ec-modal').hide();
  449. \t\t\t\t\$(\"#added_cart\").show();
  450. \t\t\t\t// カートブロックを更新する
  451. \t\t\t\t\$.ajax({
  452. \t\t\t\t\turl: \"";
  453.         // line 368
  454.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  455.         echo "\",
  456. \t\t\t\t\ttype: 'GET',
  457. \t\t\t\t\tdataType: 'html'
  458. \t\t\t\t}).done(function (html) {
  459. \t\t\t\t\t\$('.ec-headerRole__cart').html(html);
  460. \t\t\t\t});
  461. \t\t\t}).fail(function (data) {
  462. \t\t\t\talert('";
  463.         // line 375
  464.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  465.         echo "');
  466. \t\t\t}).always(function (data) {
  467. \t\t\t\t// Buttonを有効にする
  468. \t\t\t\t\$('.add-cart').prop('disabled', false);
  469. \t\t\t});
  470. \t\t});
  471. \t});
  472. \t\$('.ec-modal-wrap').on('click', function (e) {
  473. \t\t// モーダル内の処理は外側にバブリングさせない
  474. \t\te.stopPropagation();
  475. \t});
  476. \t\$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
  477. \t\t\$('.ec-modal').hide()
  478. \t});
  479. </script>
  480. <script type=\"application/ld+json\">
  481.     {
  482.         \"@context\": \"https://schema.org/\",
  483.         \"@type\": \"Product\",
  484.         \"name\": \"";
  485.         // line 395
  486.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'395$this->source); })()), "name", [], "any"falsefalsetrue395), 395$this->source), "html"nulltrue);
  487.         echo "\",
  488.         \"image\": [
  489.             ";
  490.         // line 397
  491.         $context['_parent'] = $context;
  492.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'397$this->source); })()), "ProductImage", [], "any"falsefalsetrue397));
  493.         $context['_iterated'] = false;
  494.         $context['loop'] = [
  495.           'parent' => $context['_parent'],
  496.           'index0' => 0,
  497.           'index'  => 1,
  498.           'first'  => true,
  499.         ];
  500.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  501.             $length count($context['_seq']);
  502.             $context['loop']['revindex0'] = $length 1;
  503.             $context['loop']['revindex'] = $length;
  504.             $context['loop']['length'] = $length;
  505.             $context['loop']['last'] = === $length;
  506.         }
  507.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  508.             // line 398
  509.             echo "                \"";
  510.             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.'398$this->source); })()), "request", [], "any"falsefalsetrue398), "schemeAndHttpHost", [], "any"falsefalsetrue398), 398$this->source), "html"nulltrue);
  511.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 398$this->source), "save_image"), "html"nulltrue);
  512.             echo "\"";
  513.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue398)) {
  514.                 echo ",";
  515.             }
  516.             // line 399
  517.             echo "
  518.             ";
  519.             $context['_iterated'] = true;
  520.             ++$context['loop']['index0'];
  521.             ++$context['loop']['index'];
  522.             $context['loop']['first'] = false;
  523.             if (isset($context['loop']['length'])) {
  524.                 --$context['loop']['revindex0'];
  525.                 --$context['loop']['revindex'];
  526.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  527.             }
  528.         }
  529.         if (!$context['_iterated']) {
  530.             // line 401
  531.             echo "                \"";
  532.             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.'401$this->source); })()), "request", [], "any"falsefalsetrue401), "schemeAndHttpHost", [], "any"falsefalsetrue401), 401$this->source), "html"nulltrue);
  533.             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);
  534.             echo "\"
  535.             ";
  536.         }
  537.         $_parent $context['_parent'];
  538.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  539.         $context array_intersect_key($context$_parent) + $_parent;
  540.         // line 403
  541.         echo "        ],
  542.         \"description\": \"";
  543.         // line 404
  544.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruetrue404)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsetrue404), 404$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.'404$this->source); })()), "description_detail", [], "any"falsefalsetrue404), 404$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.'404$this->source); })()), "description_detail", [], "any"falsefalsetrue404))), ["
  545. => """ " => ""]), 0300), "html"nulltrue);
  546.         echo "\",
  547.         ";
  548.         // line 405
  549.         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.'405$this->source); })()), "code_min", [], "any"falsefalsetrue405)) {
  550.             // line 406
  551.             echo "        \"sku\": \"";
  552.             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.'406$this->source); })()), "code_min", [], "any"falsefalsetrue406), 406$this->source), "html"nulltrue);
  553.             echo "\",
  554.         ";
  555.         }
  556.         // line 408
  557.         echo "        \"offers\": {
  558.             \"@type\": \"Offer\",
  559.             \"url\": \"";
  560.         // line 410
  561.         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.'410$this->source); })()), "id", [], "any"falsefalsetrue410)]), "html"nulltrue);
  562.         echo "\",
  563.             \"priceCurrency\": \"";
  564.         // line 411
  565.         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.'411$this->source); })()), "currency", [], "any"falsefalsetrue411), 411$this->source), "html"nulltrue);
  566.         echo "\",
  567.             \"price\": ";
  568.         // line 412
  569.         ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'412$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue412)) ? (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.'412$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue412), "html"nulltrue))) : (print (0)));
  570.         echo ",
  571.             \"availability\": \"";
  572.         // line 413
  573.         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.'413$this->source); })()), "stock_find", [], "any"falsefalsetrue413)) ? ("InStock") : ("OutOfStock"));
  574.         echo "\"
  575.         }
  576.     }
  577.     </script>
  578. \t<script>
  579. \t\t// ...既存のHTMLの後などに追加...
  580. document.addEventListener('DOMContentLoaded', function() {
  581.     // 対象IDリスト
  582.     const ids = [
  583.         'productoption3',
  584.         'productoption4',
  585.         'productoption5',
  586.         'productoption10',
  587.         'productoption6',
  588.         'productoption7',
  589.         'productoption8',
  590.         'productoption9'
  591.     ];
  592.     // tatefuda_boxを集める配列
  593.     const tatefudaBoxes = [];
  594.     ids.forEach(function(id) {
  595.         const el = document.getElementById(id);
  596.         if (el) {
  597.             const parent = el.closest('.plg_aoio');
  598.             if (parent && !parent.classList.contains('tatefuda_box')) {
  599.                 parent.classList.add('tatefuda_box');
  600.                 tatefudaBoxes.push(parent);
  601.             }
  602.         }
  603.     });
  604.     if (tatefudaBoxes.length > 0) {
  605.         // tatefuda_boxの最初と最後を取得
  606.         const first = tatefudaBoxes[0];
  607.         const last = tatefudaBoxes[tatefudaBoxes.length - 1];
  608.         // tatefuda_box_areaを作成
  609.         const wrapper = document.createElement('div');
  610.         wrapper.className = 'tatefuda_box_area';
  611.         // 最初の前に挿入
  612.         first.parentNode.insertBefore(wrapper, first);
  613.         // tatefuda_boxを順にwrapperへ移動
  614.         tatefudaBoxes.forEach(function(box) {
  615.             wrapper.appendChild(box);
  616.         });
  617.     }
  618. });
  619. //     document.addEventListener(\"DOMContentLoaded\", function () {
  620. //   // 要素の取得
  621. //   const recoArea = document.querySelector(\".produt_reco_text_area\");
  622. //   const sceneArea = document.querySelector(\".produt_scene_text_area\");
  623. //   const latestBlock = document.querySelector(\".ec-layoutRole__mainBottom .top_inner .latest_block\");
  624. //
  625. //   // latest_blockの下に要素を移動
  626. //   if (latestBlock) {
  627. //     latestBlock.insertAdjacentElement(\"afterend\", sceneArea);
  628. //     latestBlock.insertAdjacentElement(\"afterend\", recoArea);
  629. //   }
  630. //
  631. //   // produt_reco_textを分割して複数の<p>に
  632. //   const recoText = recoArea.querySelector(\".produt_reco_text\");
  633. //   if (recoText) {
  634. //     const parent = recoText.parentElement;
  635. //     const texts = recoText.textContent.split(\",\");
  636. //
  637. //     // 元の要素を削除
  638. //     recoText.remove();
  639. //
  640. //     // 分割したテキストを<p>にして挿入
  641. //     texts.forEach(text => {
  642. //       const p = document.createElement(\"p\");
  643. //       p.className = \"produt_reco_text\";
  644. //       p.textContent = text.trim();
  645. //       parent.appendChild(p);
  646. //     });
  647. //   }
  648. // });
  649. \t</script>
  650. \t<script>
  651. document.addEventListener(\"DOMContentLoaded\", function () {
  652.   var productMain = document.querySelector(\"#product_main\");
  653.   if (!productMain) return;
  654.   var checkInterval = setInterval(function () {
  655.     var ratingArea = document.querySelector(\"#product_rating_area\");
  656.     if (ratingArea) {
  657.       productMain.parentNode.insertBefore(ratingArea, productMain.nextSibling);
  658.       clearInterval(checkInterval); // 見つけたら監視停止
  659.     }
  660.   }, 100); // 100ms ごとに確認
  661. });
  662. </script>
  663. ";
  664.         // line 515
  665.         if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'515$this->source); })()), "id", [], "any"falsefalsetrue515) == 896)) {
  666.             // line 516
  667.             echo "<script>
  668. \t\$(function() {
  669. \t\tconst \$option_input = \$(\"#productoption14\");
  670. \t\tconst \$option_box = \$option_input.parents(\".plg_aoio\");
  671. \t\t\$option_box.css({
  672. \t\t\t\"visibility\":\"hidden\",
  673. \t\t\t\"height\":\"0\",
  674. \t\t\t\"margin\":\"0\",
  675. \t\t\t\"padding\":\"0\",
  676. \t\t});
  677. \t\t
  678. \t\tconst \$price_input = \$(\"<input>\", {
  679. \t\t\ttype: \"number\",
  680. \t\t\tclass: \"ec-price__price\",
  681. \t\t\tid: \"custom_price_input\",
  682. \t\t\tmin: 0,
  683. \t\t\tvalue: 0,
  684. \t\t});
  685. \t\t
  686. \t\t\$(\".ec-price\").html(\$price_input);
  687. \t\t\$(\".ec-price\").append('<span class=\"ec-price__tax\">円</span>');
  688. \t\t\$(\".ec-price\").append('<p class=\"ec-price__tax\">税抜き金額をご入力ください</p>');
  689. \t\t
  690. \t\t\$(\"#custom_price_input\").on(\"change\", function() {
  691. \t\t\t\$option_input.val(\$(this).val()).trigger(\"change\");
  692. \t\t});
  693. \t});
  694. </script>
  695. ";
  696.         }
  697.         // line 545
  698.         echo "
  699. <script>
  700.     document.addEventListener('DOMContentLoaded', function() {
  701.   // --- レビューセクションが無い場合、active を付与 ---
  702.   const reviewSection = document.querySelector('#product_rating_area #ratingContent .row.customer-reviews');
  703.   if (!reviewSection) {
  704.     const badges = document.querySelectorAll('.ec-sliderItemRole .btm_img_review_badge');
  705.     badges.forEach(badge => badge.classList.add('active'));
  706.   }
  707.   // --- placeholder の変更 & height の変更 ---
  708.   const remarks = document.getElementById('rating_remarks');
  709.   if (remarks) {
  710.     remarks.placeholder = \"例)\\n開店祝いで利用しました。華やかでボリュームもあり、先方にも喜んでもらえました。\";
  711.     remarks.style.height = \"6em\"; // ← ここを追加
  712.   }
  713. });
  714. </script>
  715. <script>
  716. document.addEventListener(\"DOMContentLoaded\", function() {
  717.   const priceSelector = \".ec-productRole .ec-productRole__price .ec-price .ec-price__price\";
  718.   // 子要素(label)を使って .mb-3 を特定
  719.   const container = document.querySelector('.mb-3 > label[for=\"classcategory_id1\"]')?.closest('.mb-3');
  720.   if (!container) return;
  721.   // p要素がなければ作成
  722.   let priceParagraph = container.querySelector(\".js_type_price\");
  723.   if (!priceParagraph) {
  724.     priceParagraph = document.createElement(\"p\");
  725.     priceParagraph.classList.add(\"js_type_price\");
  726.     container.appendChild(priceParagraph);
  727.   }
  728.   const priceElement = document.querySelector(priceSelector);
  729.   if (!priceElement) return;
  730.   // 更新処理
  731.   const updatePrice = () => {
  732.     const priceText = priceElement.textContent.trim();
  733.     if (priceText) {
  734.       priceParagraph.innerHTML = `\${priceText}<span class=\"size\">税込</span>`;
  735.     } else {
  736.       priceParagraph.innerHTML = \"\";
  737.     }
  738.   };
  739.   // 初期表示
  740.   updatePrice();
  741.   // 価格要素の変化を監視
  742.   const observer = new MutationObserver(updatePrice);
  743.   observer.observe(priceElement, { childList: true, characterData: true, subtree: true });
  744. });
  745. </script>
  746. ";
  747.         
  748.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  749.         
  750.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  751.     }
  752.     // line 607
  753.     public function block_main($context, array $blocks = [])
  754.     {
  755.         $macros $this->macros;
  756.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  757.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  758.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  759.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  760.         // line 608
  761.         echo "<section class=\"top_inner\">
  762. \t<div id=\"main-contents\" class=\"colnum1\">
  763. \t\t<div class=\"ec-productRole\">
  764. \t\t\t<div class=\"ec-grid2\" id=\"product_main\">
  765. \t\t\t\t<div class=\"ec-grid2__cell\">
  766. \t\t\t\t\t<div class=\"ec-sliderItemRole\">
  767. \t\t\t\t\t\t<div class=\"item_visual\">
  768. \t\t\t\t\t\t\t";
  769.         // line 616
  770.         $context['_parent'] = $context;
  771.         $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.'616$this->source); })()), "ProductImage", [], "any"falsefalsetrue616));
  772.         $context['_iterated'] = false;
  773.         $context['loop'] = [
  774.           'parent' => $context['_parent'],
  775.           'index0' => 0,
  776.           'index'  => 1,
  777.           'first'  => true,
  778.         ];
  779.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  780.             $length count($context['_seq']);
  781.             $context['loop']['revindex0'] = $length 1;
  782.             $context['loop']['revindex'] = $length;
  783.             $context['loop']['length'] = $length;
  784.             $context['loop']['last'] = === $length;
  785.         }
  786.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  787.             // line 617
  788.             echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
  789.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 617$this->source), "save_image"), "html"nulltrue);
  790.             echo "\" alt=\"";
  791.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue617)) ? (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.'617$this->source); })()), "name", [], "any"falsefalsetrue617), "html"nulltrue))) : (print ("")));
  792.             echo "\" width=\"550\" height=\"550\" ";
  793.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsetrue617) > 1)) {
  794.                 echo " loading=\"lazy\"";
  795.             }
  796.             echo "></div>
  797. \t\t\t\t\t\t\t";
  798.             $context['_iterated'] = true;
  799.             ++$context['loop']['index0'];
  800.             ++$context['loop']['index'];
  801.             $context['loop']['first'] = false;
  802.             if (isset($context['loop']['length'])) {
  803.                 --$context['loop']['revindex0'];
  804.                 --$context['loop']['revindex'];
  805.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  806.             }
  807.         }
  808.         if (!$context['_iterated']) {
  809.             // line 619
  810.             echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
  811.             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);
  812.             echo "\" alt=\"";
  813.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue619)) ? (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.'619$this->source); })()), "name", [], "any"falsefalsetrue619), "html"nulltrue))) : (print ("")));
  814.             echo "\" width=\"550\" height=\"550\"></div>
  815. \t\t\t\t\t\t\t";
  816.         }
  817.         $_parent $context['_parent'];
  818.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  819.         $context array_intersect_key($context$_parent) + $_parent;
  820.         // line 620
  821.         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)) {
  822.             // line 621
  823.             $context['_parent'] = $context;
  824.             $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.'621$this->source); })()), "getProductClasses", [], "method"falsefalsetrue621));
  825.             foreach ($context['_seq'] as $context["_key"] => $context["ProductClass"]) {
  826.                 // line 622
  827.                 echo "        ";
  828.                 if (twig_get_attribute($this->env$this->source$context["ProductClass"], "file_name", [], "any"falsefalsetrue622)) {
  829.                     // line 623
  830.                     echo "            <div class=\"slide-item\">
  831.                 ";
  832.                     // line 624
  833.                     if ((twig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue624) && twig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory2", [], "any"falsefalsetrue624))) {
  834.                         // line 625
  835.                         echo "                    <img id=\"apg_product_class_image-";
  836.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue625), "id", [], "any"falsefalsetrue625), 625$this->source), "html"nulltrue);
  837.                         echo "-";
  838.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory2", [], "any"falsefalsetrue625), "id", [], "any"falsefalsetrue625), 625$this->source), "html"nulltrue);
  839.                         echo "\"
  840.                          src=\"";
  841.                         // line 626
  842.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["ProductClass"], "getImageUrl", [], "method"falsefalsetrue626), 626$this->source), "save_image"), "html"nulltrue);
  843.                         echo "\">
  844.                 ";
  845.                     } elseif (twig_get_attribute($this->env$this->source,                     // line 627
  846. $context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue627)) {
  847.                         // line 628
  848.                         echo "                    <img id=\"apg_product_class_image-";
  849.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue628), "id", [], "any"falsefalsetrue628), 628$this->source), "html"nulltrue);
  850.                         echo "-\"
  851.                          src=\"";
  852.                         // line 629
  853.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["ProductClass"], "getImageUrl", [], "method"falsefalsetrue629), 629$this->source), "save_image"), "html"nulltrue);
  854.                         echo "\">
  855.                 ";
  856.                     }
  857.                     // line 631
  858.                     echo "            </div>
  859.         ";
  860.                 }
  861.                 // line 633
  862.                 echo "    ";
  863.             }
  864.             $_parent $context['_parent'];
  865.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductClass'], $context['_parent'], $context['loop']);
  866.             $context array_intersect_key($context$_parent) + $_parent;
  867.         }
  868.         // line 635
  869.         echo "
  870. \t\t\t\t\t\t</div>
  871.                         <div class=\"btm_img_review_badge\">
  872.                             <a href=\"#product_rating_area\" class=\"badge_img\">
  873.                                 <img src=\"/html/user_data/assets/img/common/btm_img_review_badge.jpg\" alt=\"\">
  874.                             </a>
  875.                         </div>
  876. \t\t\t\t\t\t<div class=\"item_nav\">
  877. \t\t\t\t\t\t\t";
  878.         // line 643
  879.         $context['_parent'] = $context;
  880.         $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.'643$this->source); })()), "ProductImage", [], "any"falsefalsetrue643));
  881.         $context['loop'] = [
  882.           'parent' => $context['_parent'],
  883.           'index0' => 0,
  884.           'index'  => 1,
  885.           'first'  => true,
  886.         ];
  887.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  888.             $length count($context['_seq']);
  889.             $context['loop']['revindex0'] = $length 1;
  890.             $context['loop']['revindex'] = $length;
  891.             $context['loop']['length'] = $length;
  892.             $context['loop']['last'] = === $length;
  893.         }
  894.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  895.             // line 644
  896.             echo "\t\t\t\t\t\t\t<div class=\"slideThumb\" data-index=\"";
  897.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsetrue644), 644$this->source), "html"nulltrue);
  898.             echo "\"><img src=\"";
  899.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 644$this->source), "save_image"), "html"nulltrue);
  900.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  901. \t\t\t\t\t\t\t";
  902.             ++$context['loop']['index0'];
  903.             ++$context['loop']['index'];
  904.             $context['loop']['first'] = false;
  905.             if (isset($context['loop']['length'])) {
  906.                 --$context['loop']['revindex0'];
  907.                 --$context['loop']['revindex'];
  908.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  909.             }
  910.         }
  911.         $_parent $context['_parent'];
  912.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  913.         $context array_intersect_key($context$_parent) + $_parent;
  914.         // line 645
  915.         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.'645$this->source); })()), "hasProductClass", [], "any"falsefalsetrue645)) {
  916.             // line 646
  917.             if ((twig_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.'646$this->source); })()), "ProductImage", [], "any"falsefalsetrue646), "count", [], "any"falsefalsetrue646) > 0)) {
  918.                 // line 647
  919.                 echo "        ";
  920.                 $context["imageCount"] = (twig_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.'647$this->source); })()), "ProductImage", [], "any"falsefalsetrue647), "count", [], "any"falsefalsetrue647) - 1);
  921.                 // line 648
  922.                 echo "    ";
  923.             } else {
  924.                 // line 649
  925.                 echo "        ";
  926.                 $context["imageCount"] = 0;
  927.                 // line 650
  928.                 echo "    ";
  929.             }
  930.             // line 651
  931.             echo "    ";
  932.             $context['_parent'] = $context;
  933.             $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.'651$this->source); })()), "getProductClasses", [], "method"falsefalsetrue651));
  934.             foreach ($context['_seq'] as $context["_key"] => $context["ProductClass"]) {
  935.                 // line 652
  936.                 echo "        ";
  937.                 if (twig_get_attribute($this->env$this->source$context["ProductClass"], "file_name", [], "any"falsefalsetrue652)) {
  938.                     // line 653
  939.                     echo "            ";
  940.                     $context["imageCount"] = ((isset($context["imageCount"]) || array_key_exists("imageCount"$context) ? $context["imageCount"] : (function () { throw new RuntimeError('Variable "imageCount" does not exist.'653$this->source); })()) + 1);
  941.                     // line 654
  942.                     echo "            <div class=\"slideThumb\" data-index=\"";
  943.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["imageCount"]) || array_key_exists("imageCount"$context) ? $context["imageCount"] : (function () { throw new RuntimeError('Variable "imageCount" does not exist.'654$this->source); })()), 654$this->source), "html"nulltrue);
  944.                     echo "\">
  945.                 ";
  946.                     // line 655
  947.                     if ((twig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue655) && twig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory2", [], "any"falsefalsetrue655))) {
  948.                         // line 656
  949.                         echo "                    <img id=\"apg_product_class_image_thumb-";
  950.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue656), "id", [], "any"falsefalsetrue656), 656$this->source), "html"nulltrue);
  951.                         echo "-";
  952.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory2", [], "any"falsefalsetrue656), "id", [], "any"falsefalsetrue656), 656$this->source), "html"nulltrue);
  953.                         echo "\"
  954.                          src=\"";
  955.                         // line 657
  956.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["ProductClass"], "getImageUrl", [], "method"falsefalsetrue657), 657$this->source), "save_image"), "html"nulltrue);
  957.                         echo "\"
  958.                          data-class_category1=\"";
  959.                         // line 658
  960.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue658), "id", [], "any"falsefalsetrue658), 658$this->source), "html"nulltrue);
  961.                         echo "\"
  962.                          data-class_category2=\"";
  963.                         // line 659
  964.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory2", [], "any"falsefalsetrue659), "id", [], "any"falsefalsetrue659), 659$this->source), "html"nulltrue);
  965.                         echo "\">
  966.                 ";
  967.                     } elseif (twig_get_attribute($this->env$this->source,                     // line 660
  968. $context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue660)) {
  969.                         // line 661
  970.                         echo "                    <img id=\"apg_product_class_image_thumb-";
  971.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue661), "id", [], "any"falsefalsetrue661), 661$this->source), "html"nulltrue);
  972.                         echo "-\"
  973.                          src=\"";
  974.                         // line 662
  975.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["ProductClass"], "getImageUrl", [], "method"falsefalsetrue662), 662$this->source), "save_image"), "html"nulltrue);
  976.                         echo "\"
  977.                          data-class_category1=\"";
  978.                         // line 663
  979.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductClass"], "ClassCategory1", [], "any"falsefalsetrue663), "id", [], "any"falsefalsetrue663), 663$this->source), "html"nulltrue);
  980.                         echo "\">
  981.                 ";
  982.                     }
  983.                     // line 665
  984.                     echo "            </div>
  985.         ";
  986.                 }
  987.                 // line 667
  988.                 echo "    ";
  989.             }
  990.             $_parent $context['_parent'];
  991.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductClass'], $context['_parent'], $context['loop']);
  992.             $context array_intersect_key($context$_parent) + $_parent;
  993.         }
  994.         // line 669
  995.         echo "
  996. \t\t\t\t\t\t</div>
  997. \t\t\t\t\t</div>
  998. \t\t\t\t</div>
  999. \t\t\t\t<div class=\"ec-grid2__cell\">
  1000. \t\t\t\t\t<div class=\"ec-productRole__profile\">
  1001. \t\t\t\t\t\t";
  1002.         // line 676
  1003.         echo "\t\t\t\t\t\t<div class=\"ec-productRole__title\">
  1004. \t\t\t\t\t\t\t<h2 class=\"ec-headingTitle\">";
  1005.         // line 677
  1006.         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.'677$this->source); })()), "name", [], "any"falsefalsetrue677), 677$this->source), "html"nulltrue);
  1007.         echo "</h2>
  1008. \t\t\t\t\t\t</div>
  1009. \t\t\t\t\t\t";
  1010.         // line 680
  1011.         echo "\t\t\t\t\t\t<ul class=\"ec-productRole__tags\">
  1012. \t\t\t\t\t\t\t";
  1013.         // line 681
  1014.         $context['_parent'] = $context;
  1015.         $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.'681$this->source); })()), "Tags", [], "any"falsefalsetrue681));
  1016.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  1017.             // line 682
  1018.             echo "\t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_";
  1019.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsetrue682), 682$this->source), "html"nulltrue);
  1020.             echo "\">";
  1021.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed($context["Tag"], 682$this->source), "html"nulltrue);
  1022.             echo "</li>
  1023. \t\t\t\t\t\t\t";
  1024.         }
  1025.         $_parent $context['_parent'];
  1026.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  1027.         $context array_intersect_key($context$_parent) + $_parent;
  1028.         // line 684
  1029.         echo "\t\t\t\t\t\t</ul>
  1030.                         ";
  1031.         // line 685
  1032.         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.'685$this->source); })()), "ViewData", [=> 1], "method"falsefalsetrue685)) ||  !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.'685$this->source); })()), "ViewData", [=> 2], "method"falsefalsetrue685)))) {
  1033.             // line 686
  1034.             echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_1_2\">
  1035. \t\t\t\t\t\t\t";
  1036.             // line 687
  1037.             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.'687$this->source); })()), "ViewData", [=> 1], "method"falsefalsetrue687))) {
  1038.                 // line 688
  1039.                 echo "\t\t\t\t\t\t\t<p class=\"color color_num_data\">";
  1040.                 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.'688$this->source); })()), "ViewData", [=> 1], "method"falsefalsetrue688), 688$this->source), "html"nulltrue);
  1041.                 echo "</p>
  1042. \t\t\t\t\t\t\t";
  1043.             }
  1044.             // line 690
  1045.             echo "\t\t\t\t\t\t\t";
  1046.             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.'690$this->source); })()), "ViewData", [=> 2], "method"falsefalsetrue690))) {
  1047.                 // line 691
  1048.                 echo "\t\t\t\t\t\t\t<p class=\"num color_num_data\">";
  1049.                 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.'691$this->source); })()), "ViewData", [=> 2], "method"falsefalsetrue691), 691$this->source), "html"nulltrue);
  1050.                 echo "本立</p>
  1051. \t\t\t\t\t\t\t";
  1052.             }
  1053.             // line 693
  1054.             echo "\t\t\t\t\t\t</div>
  1055. \t\t\t\t\t\t";
  1056.         }
  1057.         // line 695
  1058.         echo "\t\t\t\t\t\t";
  1059.         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.'695$this->source); })()), "ViewData", [=> 4], "method"falsefalsetrue695)) ||  !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.'695$this->source); })()), "ViewData", [=> 5], "method"falsefalsetrue695)))) {
  1060.             // line 696
  1061.             echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_4_5\">
  1062. \t\t\t\t\t\t\t";
  1063.             // line 697
  1064.             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.'697$this->source); })()), "ViewData", [=> 4], "method"falsefalsetrue697))) {
  1065.                 // line 698
  1066.                 echo "\t\t\t\t\t\t\t<p class=\"dan color_num_data\">";
  1067.                 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.'698$this->source); })()), "ViewData", [=> 4], "method"falsefalsetrue698), 698$this->source), "html"nulltrue);
  1068.                 echo "段</p>
  1069. \t\t\t\t\t\t\t";
  1070.             }
  1071.             // line 700
  1072.             echo "\t\t\t\t\t\t\t";
  1073.             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.'700$this->source); })()), "ViewData", [=> 5], "method"falsefalsetrue700))) {
  1074.                 // line 701
  1075.                 echo "\t\t\t\t\t\t\t<p class=\"leg_type color_num_data\">";
  1076.                 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.'701$this->source); })()), "ViewData", [=> 5], "method"falsefalsetrue701), 701$this->source), "html"nulltrue);
  1077.                 echo "</p>
  1078. \t\t\t\t\t\t\t";
  1079.             }
  1080.             // line 703
  1081.             echo "\t\t\t\t\t\t</div>
  1082. \t\t\t\t\t\t";
  1083.         }
  1084.         // line 705
  1085.         echo "\t\t\t\t\t\t";
  1086.         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.'705$this->source); })()), "ViewData", [=> 6], "method"falsefalsetrue705))) {
  1087.             // line 706
  1088.             echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_6\">
  1089. \t\t\t\t\t\t\t<p class=\"kago_type color_num_data\">";
  1090.             // line 707
  1091.             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.'707$this->source); })()), "ViewData", [=> 6], "method"falsefalsetrue707), 707$this->source), "html"nulltrue);
  1092.             echo "</p>
  1093. \t\t\t\t\t\t</div>
  1094. \t\t\t\t\t\t";
  1095.         }
  1096.         // line 710
  1097.         echo "\t\t\t\t\t\t<div class=\"ec-productRole__description\">";
  1098.         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.'710$this->source); })()), "description_detail", [], "any"falsefalsetrue710), 710$this->source));
  1099.         echo "
  1100. \t\t\t\t\t\t</div>
  1101. \t\t\t\t\t\t";
  1102.         // line 713
  1103.         echo "\t\t\t\t\t\t";
  1104.         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.'713$this->source); })()), "hasProductClass", [], "any"falsefalsetrue713)) {
  1105.             // line 714
  1106.             echo "<div class=\"ec-productRole__priceRegular\">
  1107. \t\t\t\t\t\t\t";
  1108.             // line 715
  1109.             if (( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'715$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue715)) && (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.'715$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue715) == 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.'715$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue715)))) {
  1110.                 // line 716
  1111.                 echo "\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
  1112.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  1113.                 echo ":<span class=\"price01-default\">";
  1114.                 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.'716$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue716), 716$this->source)), "html"nulltrue);
  1115.                 echo "</span></span>
  1116. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
  1117.                 // line 717
  1118.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1119.                 echo "</span>
  1120. \t\t\t\t\t\t\t";
  1121.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 718
  1122. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'718$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue718)) &&  !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'718$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue718)))) {
  1123.                 // line 719
  1124.                 echo "\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
  1125.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  1126.                 echo ":<span class=\"price01-default\">";
  1127.                 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.'719$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue719), 719$this->source)), "html"nulltrue);
  1128.                 echo "~ ";
  1129.                 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.'719$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue719), 719$this->source)), "html"nulltrue);
  1130.                 echo "</span></span>
  1131. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
  1132.                 // line 720
  1133.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1134.                 echo "</span>
  1135. \t\t\t\t\t\t\t";
  1136.             }
  1137.             // line 722
  1138.             echo "\t\t\t\t\t\t</div>
  1139. \t\t\t\t\t\t";
  1140.         } else {
  1141.             // line 724
  1142.             echo "\t\t\t\t\t\t";
  1143.             if ( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'724$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue724))) {
  1144.                 // line 725
  1145.                 echo "\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
  1146.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  1147.                 echo ":";
  1148.                 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.'725$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue725), 725$this->source)), "html"nulltrue);
  1149.                 echo "</span>
  1150. \t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
  1151.                 // line 726
  1152.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1153.                 echo "</span>
  1154. \t\t\t\t\t\t";
  1155.             }
  1156.             // line 728
  1157.             echo "\t\t\t\t\t\t";
  1158.         }
  1159.         // line 729
  1160.         echo "\t\t\t\t\t\t";
  1161.         // line 730
  1162.         echo "\t\t\t\t\t\t<div class=\"ec-productRole__price\">
  1163. \t\t\t\t\t\t\t";
  1164.         // line 731
  1165.         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.'731$this->source); })()), "hasProductClass", [], "any"falsefalsetrue731)) {
  1166.             // line 732
  1167.             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.'732$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue732) == 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.'732$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue732))) {
  1168.                 // line 733
  1169.                 echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
  1170. \t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  1171.                 // line 734
  1172.                 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.'734$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue734), 734$this->source)), "html"nulltrue);
  1173.                 echo "</span>
  1174. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
  1175.                 // line 735
  1176.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1177.                 echo "</span>
  1178. \t\t\t\t\t\t\t</div>
  1179. \t\t\t\t\t\t\t";
  1180.             } else {
  1181.                 // line 738
  1182.                 echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
  1183. \t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  1184.                 // line 739
  1185.                 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.'739$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue739), 739$this->source)), "html"nulltrue);
  1186.                 echo " ~ ";
  1187.                 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.'739$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue739), 739$this->source)), "html"nulltrue);
  1188.                 echo "</span>
  1189. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
  1190.                 // line 740
  1191.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1192.                 echo "</span>
  1193. \t\t\t\t\t\t\t</div>
  1194. \t\t\t\t\t\t\t";
  1195.             }
  1196.             // line 743
  1197.             echo "\t\t\t\t\t\t\t";
  1198.         } else {
  1199.             // line 744
  1200.             echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
  1201. \t\t\t\t\t\t\t\t<span class=\"ec-price__price\">";
  1202.             // line 745
  1203.             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.'745$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue745), 745$this->source)), "html"nulltrue);
  1204.             echo "</span>
  1205. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
  1206.             // line 746
  1207.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  1208.             echo "</span>
  1209. \t\t\t\t\t\t\t</div>
  1210. \t\t\t\t\t\t\t";
  1211.         }
  1212.         // line 749
  1213.         echo "\t\t\t\t\t\t</div>
  1214. \t\t\t\t\t\t";
  1215.         // line 750
  1216.         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.'750$this->source); })()), "stock_find", [], "any"falsefalsetrue750)) {
  1217.             // line 751
  1218.             echo "\t\t\t\t\t\t\t<form class=\"form_add-cart\" action=\"";
  1219.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_cart", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'751$this->source); })()), "id", [], "any"falsefalsetrue751)]), "html"nulltrue);
  1220.             echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  1221. \t\t\t\t\t\t\t\t<div id=\"cart_modal\" class=\"ec-modal\">
  1222. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  1223. \t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  1224. \t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  1225.             // line 755
  1226.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  1227.             echo "\" alt=\"\" /></span></span>
  1228. \t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  1229. \t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
  1230. \t\t\t\t\t\t\t\t\t\t\t\t\t";
  1231.             // line 758
  1232.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue758)) {
  1233.                 // line 759
  1234.                 echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  1235. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1236.                 // line 760
  1237.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'760$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue760), 760$this->source), 'row');
  1238.                 echo "
  1239. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1240.                 // line 761
  1241.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'761$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue761), 761$this->source), 'errors');
  1242.                 echo "
  1243. \t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  1244. \t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1245.                 // line 763
  1246.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue763)) {
  1247.                     // line 764
  1248.                     echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  1249. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1250.                     // line 765
  1251.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'765$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue765), 765$this->source), 'row');
  1252.                     echo "
  1253. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1254.                     // line 766
  1255.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'766$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue766), 766$this->source), 'errors');
  1256.                     echo "
  1257. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  1258. \t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1259.                 }
  1260.                 // line 769
  1261.                 echo "\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1262.             }
  1263.             // line 770
  1264.             echo "\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1265.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/option.twig");
  1266.             echo "<div class=\"ec-numberInput\"><span>";
  1267.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  1268.             echo "</span>
  1269. \t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1270.             // line 771
  1271.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'771$this->source); })()), "quantity", [], "any"falsefalsetrue771), 771$this->source), 'widget');
  1272.             echo "
  1273. \t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1274.             // line 772
  1275.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'772$this->source); })()), "quantity", [], "any"falsefalsetrue772), 772$this->source), 'errors');
  1276.             echo "
  1277. \t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  1278. \t\t\t\t\t\t\t\t\t\t\t\t</div>
  1279. \t\t\t\t\t\t\t\t\t\t\t\t";
  1280.             // line 775
  1281.             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.'775$this->source); })()), 775$this->source), 'rest');
  1282.             echo "
  1283. \t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  1284. \t\t\t\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-inlineBtn--action add-cart\">
  1285. \t\t\t\t\t\t\t\t\t\t\t\t\t\t";
  1286.             // line 779
  1287.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1288.             echo "
  1289. \t\t\t\t\t\t\t\t\t\t\t\t\t</button>
  1290. \t\t\t\t\t\t\t\t\t\t\t\t</div>
  1291. \t\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-box -->
  1292. \t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-wrap -->
  1293. \t\t\t\t\t\t\t\t\t\t";
  1294.             // line 784
  1295.             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.'784$this->source); })()), "stock_min", [], "any"falsefalsetrue784)) {
  1296.                 // line 785
  1297.                 echo "\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__stock\">在庫数: <span class=\"stock_num\">";
  1298.                 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.'785$this->source); })()), "stock_min", [], "any"falsefalsetrue785), 785$this->source), "html"nulltrue);
  1299.                 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.'785$this->source); })()), "stock_min", [], "any"falsefalsetrue785) != 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); })()), "stock_max", [], "any"falsefalsetrue785))) {
  1300.                     echo " ~ ";
  1301.                     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.'785$this->source); })()), "stock_max", [], "any"falsefalsetrue785), 785$this->source), "html"nulltrue);
  1302.                 }
  1303.                 echo "</span></div>
  1304. \t\t\t\t\t\t\t\t\t\t";
  1305.             }
  1306.             // line 787
  1307.             echo "\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-overlay -->
  1308. \t\t\t\t\t\t\t\t</div>
  1309. \t\t\t\t\t\t\t</form>
  1310. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  1311. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action open_cart_modal\">
  1312. \t\t\t\t\t\t\t\t\t";
  1313.             // line 793
  1314.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1315.             echo "
  1316. \t\t\t\t\t\t\t\t</button>
  1317. \t\t\t\t\t\t\t</div>
  1318. \t\t\t\t\t\t";
  1319.         } else {
  1320.             // line 797
  1321.             echo "\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  1322. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1323. \t\t\t\t\t\t\t\t\t";
  1324.             // line 799
  1325.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  1326.             echo "
  1327. \t\t\t\t\t\t\t\t</button>
  1328. \t\t\t\t\t\t\t</div>
  1329. \t\t\t\t\t\t";
  1330.         }
  1331.         // line 803
  1332.         echo "\t\t\t\t\t\t<div id=\"added_cart\" class=\"ec-modal\">
  1333. \t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  1334. \t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  1335. \t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  1336.         // line 806
  1337.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  1338.         echo "\" alt=\"\" /></span></span>
  1339. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-header text-center\">";
  1340.         // line 807
  1341.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  1342.         echo "</div>
  1343. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  1344. \t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  1345. \t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">";
  1346.         // line 810
  1347.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  1348.         echo "</span>
  1349. \t\t\t\t\t\t\t\t\t\t\t<a href=\"";
  1350.         // line 811
  1351.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  1352.         echo "\" class=\"ec-inlineBtn--action\">";
  1353.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  1354.         echo "</a>
  1355. \t\t\t\t\t\t\t\t\t\t</div>
  1356. \t\t\t\t\t\t\t\t\t</div>
  1357. \t\t\t\t\t\t\t\t</div>
  1358. \t\t\t\t\t\t\t</div>
  1359. \t\t\t\t\t\t</div>
  1360. \t\t\t\t\t\t";
  1361.         // line 817
  1362.         if (twig_get_attribute($this->env$this->source, (isset($context["BaseInfo"]) || array_key_exists("BaseInfo"$context) ? $context["BaseInfo"] : (function () { throw new RuntimeError('Variable "BaseInfo" does not exist.'817$this->source); })()), "option_favorite_product", [], "any"falsefalsetrue817)) {
  1363.             // line 818
  1364.             echo "\t\t\t\t\t\t<form action=\"";
  1365.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_favorite", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'818$this->source); })()), "id", [], "any"falsefalsetrue818)]), "html"nulltrue);
  1366.             echo "\" method=\"post\">
  1367. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  1368. \t\t\t\t\t\t\t\t";
  1369.             // line 820
  1370.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'820$this->source); })()) == false)) {
  1371.                 // line 821
  1372.                 echo "\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1373. \t\t\t\t\t\t\t\t\t";
  1374.                 // line 822
  1375.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1376.                 echo "
  1377. \t\t\t\t\t\t\t\t</button>
  1378. \t\t\t\t\t\t\t\t";
  1379.             } else {
  1380.                 // line 825
  1381.                 echo "\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel fav_done\" disabled=\"disabled\">";
  1382.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  1383.                 echo "
  1384. \t\t\t\t\t\t\t\t</button>
  1385. \t\t\t\t\t\t\t\t";
  1386.             }
  1387.             // line 828
  1388.             echo "\t\t\t\t\t\t\t</div>
  1389. \t\t\t\t\t\t</form>
  1390.                         <a class=\"page_product_review_btn\" href=\"#product_rating_area\"><span class=\"letter\">レビューを見る/書く</span></a>
  1391. \t\t\t\t\t\t";
  1392.         }
  1393.         // line 832
  1394.         echo "\t\t\t\t\t\t";
  1395.         // line 833
  1396.         echo "\t\t\t\t\t\t";
  1397.         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.'833$this->source); })()), "code_min", [], "any"falsefalsetrue833))) {
  1398.             // line 834
  1399.             echo "\t\t\t\t\t\t<div class=\"ec-productRole__code\">
  1400. \t\t\t\t\t\t\t";
  1401.             // line 835
  1402.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  1403.             echo ": <span class=\"product-code-default\">";
  1404.             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.'835$this->source); })()), "code_min", [], "any"falsefalsetrue835), 835$this->source), "html"nulltrue);
  1405.             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.'835$this->source); })()), "code_min", [], "any"falsefalsetrue835) != 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.'835$this->source); })()), "code_max", [], "any"falsefalsetrue835))) {
  1406.                 echo " ~ ";
  1407.                 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.'835$this->source); })()), "code_max", [], "any"falsefalsetrue835), 835$this->source), "html"nulltrue);
  1408.             }
  1409.             echo "</span>
  1410. \t\t\t\t\t\t</div>
  1411. \t\t\t\t\t\t";
  1412.         }
  1413.         // line 838
  1414.         echo "\t\t\t\t\t\t";
  1415.         // line 839
  1416.         echo "\t\t\t\t\t\t";
  1417.         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.'839$this->source); })()), "ProductCategories", [], "any"falsefalsetrue839))) {
  1418.             // line 840
  1419.             echo "\t\t\t\t\t\t<div class=\"ec-productRole__category\">
  1420. \t\t\t\t\t\t\t<div>";
  1421.             // line 841
  1422.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html"nulltrue);
  1423.             echo "</div>
  1424. \t\t\t\t\t\t\t";
  1425.             // line 842
  1426.             $context['_parent'] = $context;
  1427.             $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.'842$this->source); })()), "ProductCategories", [], "any"falsefalsetrue842));
  1428.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  1429.                 // line 843
  1430.                 echo "\t\t\t\t\t\t\t<ul>
  1431. \t\t\t\t\t\t\t\t<li>
  1432. \t\t\t\t\t\t\t\t\t";
  1433.                 // line 845
  1434.                 $context['_parent'] = $context;
  1435.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue845), "path", [], "any"falsefalsetrue845));
  1436.                 $context['loop'] = [
  1437.                   'parent' => $context['_parent'],
  1438.                   'index0' => 0,
  1439.                   'index'  => 1,
  1440.                   'first'  => true,
  1441.                 ];
  1442.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1443.                     $length count($context['_seq']);
  1444.                     $context['loop']['revindex0'] = $length 1;
  1445.                     $context['loop']['revindex'] = $length;
  1446.                     $context['loop']['length'] = $length;
  1447.                     $context['loop']['last'] = === $length;
  1448.                 }
  1449.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  1450.                     // line 846
  1451.                     echo "\t\t\t\t\t\t\t\t\t<a href=\"";
  1452.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  1453.                     echo "?category_id=";
  1454.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue846), 846$this->source), "html"nulltrue);
  1455.                     echo "\">";
  1456.                     echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsetrue846), 846$this->source), "html"nulltrue);
  1457.                     echo "</a>";
  1458.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue846) == false)) {
  1459.                         // line 847
  1460.                         echo "\t\t\t\t\t\t\t\t\t<span>></span>";
  1461.                     }
  1462.                     ++$context['loop']['index0'];
  1463.                     ++$context['loop']['index'];
  1464.                     $context['loop']['first'] = false;
  1465.                     if (isset($context['loop']['length'])) {
  1466.                         --$context['loop']['revindex0'];
  1467.                         --$context['loop']['revindex'];
  1468.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  1469.                     }
  1470.                 }
  1471.                 $_parent $context['_parent'];
  1472.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  1473.                 $context array_intersect_key($context$_parent) + $_parent;
  1474.                 // line 849
  1475.                 echo "\t\t\t\t\t\t\t\t</li>
  1476. \t\t\t\t\t\t\t</ul>
  1477. \t\t\t\t\t\t\t";
  1478.             }
  1479.             $_parent $context['_parent'];
  1480.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  1481.             $context array_intersect_key($context$_parent) + $_parent;
  1482.             // line 852
  1483.             echo "\t\t\t\t\t\t</div>
  1484. \t\t\t\t\t\t";
  1485.         }
  1486.         // line 854
  1487.         echo "\t\t\t\t\t\t<!-- <div class=\"ec-productRole__description\">
  1488. \t\t\t\t\t\t\t<a href=\"/contact\">この商品について問い合わせる</a><br>
  1489. \t\t\t\t\t\t\t<a href=\"/help/tradelaw\">返品についての詳細はこちら</a>
  1490. \t\t\t\t\t\t</div> -->
  1491. \t\t\t\t\t</div>
  1492. \t\t\t\t</div>
  1493. \t\t\t</div>
  1494. \t\t\t";
  1495.         // line 861
  1496.         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.'861$this->source); })()), "freearea", [], "any"falsefalsetrue861)) {
  1497.             // line 862
  1498.             echo "\t\t\t<div class=\"ec-productRole__description\">
  1499. \t\t\t\t";
  1500.             // line 863
  1501.             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.'863$this->source); })()), "freearea", [], "any"falsefalsetrue863), 863$this->source)), array(), truefalsetrue);
  1502.             echo "
  1503. \t\t\t</div>
  1504. \t\t\t";
  1505.         }
  1506.         // line 866
  1507.         echo "
  1508. \t\t\t<!-- 同じカテゴリーの商品 -->
  1509. \t\t\t";
  1510.         // line 868
  1511.         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.'868$this->source); })()), "ProductCategories", [], "any"falsefalsetrue868))) {
  1512.             // line 869
  1513.             echo "\t\t\t";
  1514.             $context["ChildCategory"] = twig_first($this->envtwig_array_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.'869$this->source); })()), "ProductCategories", [], "any"falsefalsetrue869), 869$this->source), function ($__pc__) use ($context$macros) { $context["pc"] = $__pc__; return  !(null === twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'869$this->source); })()), "Category", [], "any"falsefalsetrue869), "parent", [], "any"falsefalsetrue869)); }));
  1515.             // line 870
  1516.             echo "\t\t\t";
  1517.             $context["ParentCategory"] = twig_first($this->envtwig_array_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.'870$this->source); })()), "ProductCategories", [], "any"falsefalsetrue870), 870$this->source), function ($__pc__) use ($context$macros) { $context["pc"] = $__pc__; return ((null === twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'870$this->source); })()), "Category", [], "any"falsefalsetrue870), "parent", [], "any"falsefalsetrue870)) && !twig_in_filter(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'870$this->source); })()), "Category", [], "any"falsefalsetrue870), "name", [], "any"falsefalsetrue870), [=> "新着商品"=> "迷ったらココ!!開店祝い等の定番!"=> "郵送商品(全国へ宅急便でお届けします)"=> "委託商品'(全国のお花屋さんに委託します)"])); }));
  1518.             // line 871
  1519.             echo "
  1520. \t\t\t<div class=\"same_category_product_area\">
  1521. \t\t\t\t";
  1522.             // line 873
  1523.             if ( !twig_test_empty((isset($context["ChildCategory"]) || array_key_exists("ChildCategory"$context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.'873$this->source); })()))) {
  1524.                 // line 874
  1525.                 echo "\t\t\t\t<div class=\"same_category_product_block\">
  1526. \t\t\t\t\t<p class=\"same_category_name\">";
  1527.                 // line 875
  1528.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["ChildCategory"]) || array_key_exists("ChildCategory"$context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.'875$this->source); })()), "Category", [], "any"falsefalsetrue875), "name", [], "any"falsefalsetrue875), 875$this->source), "html"nulltrue);
  1529.                 echo "の他の商品</p>
  1530. \t\t\t\t\t<div class=\"product_grid\">
  1531. \t\t\t\t\t\t";
  1532.                 // line 877
  1533.                 $context["Products"] = 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->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [=> ["category_id" => twig_get_attribute($this->env$this->source,                 // line 878
  1534. (isset($context["ChildCategory"]) || array_key_exists("ChildCategory"$context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.'878$this->source); })()), "Category", [], "any"falsefalsetrue878)]], "method"falsefalsetrue877), "orderBy", [=> "p.create_date"=> "DESC"], "method"falsefalsetrue877), "setMaxResults", [=> 100], "method"falsefalsetrue879), "getQuery", [], "method"falsefalsetrue879), "getResult", [], "method"falsefalsetrue879);
  1535.                 // line 880
  1536.                 echo "
  1537. \t\t\t\t\t\t";
  1538.                 // line 881
  1539.                 $context["FilteredProducts"] = twig_slice($this->envtwig_array_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products"$context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.'881$this->source); })()), 881$this->source), function ($__p__) use ($context$macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env$this->source, (isset($context["p"]) || array_key_exists("p"$context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.'881$this->source); })()), "id", [], "any"falsefalsetrue881) != 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.'881$this->source); })()), "id", [], "any"falsefalsetrue881)); }), 04);
  1540.                 // line 882
  1541.                 echo "
  1542. \t\t\t\t\t\t";
  1543.                 // line 883
  1544.                 if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'883$this->source); })())) > 0)) {
  1545.                     // line 884
  1546.                     echo "\t\t\t\t\t\t";
  1547.                     $context['_parent'] = $context;
  1548.                     $context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'884$this->source); })()));
  1549.                     foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  1550.                         // line 885
  1551.                         echo "\t\t\t\t\t\t<div class=\"product_item\">
  1552. \t\t\t\t\t\t\t<a href=\"";
  1553.                         // line 886
  1554.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsetrue886)]), "html"nulltrue);
  1555.                         echo "\">
  1556. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  1557. \t\t\t\t\t\t\t\t\t<img src=\"";
  1558.                         // line 888
  1559.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "main_list_image", [], "any"falsefalsetrue888), 888$this->source)), "save_image"), "html"nulltrue);
  1560.                         echo "\" alt=\"Product\">
  1561. \t\t\t\t\t\t\t\t</div>
  1562. \t\t\t\t\t\t\t\t<p class=\"product_name\">";
  1563.                         // line 890
  1564.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsetrue890), 890$this->source), "html"nulltrue);
  1565.                         echo "</p>
  1566. \t\t\t\t\t\t\t\t<p class=\"product_price\">";
  1567.                         // line 891
  1568.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsetrue891), 891$this->source)), "html"nulltrue);
  1569.                         echo "</p>
  1570. \t\t\t\t\t\t\t</a>
  1571. \t\t\t\t\t\t</div>
  1572. \t\t\t\t\t\t";
  1573.                     }
  1574.                     $_parent $context['_parent'];
  1575.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  1576.                     $context array_intersect_key($context$_parent) + $_parent;
  1577.                     // line 895
  1578.                     echo "\t\t\t\t\t\t";
  1579.                 }
  1580.                 // line 896
  1581.                 echo "\t\t\t\t\t</div>
  1582. \t\t\t\t</div>
  1583. \t\t\t\t";
  1584.             } elseif ( !twig_test_empty(            // line 898
  1585. (isset($context["ParentCategory"]) || array_key_exists("ParentCategory"$context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.'898$this->source); })()))) {
  1586.                 // line 899
  1587.                 echo "\t\t\t\t<div class=\"same_category_product_block\">
  1588. \t\t\t\t\t<p class=\"same_category_name\">";
  1589.                 // line 900
  1590.                 echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["ParentCategory"]) || array_key_exists("ParentCategory"$context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.'900$this->source); })()), "Category", [], "any"falsefalsetrue900), "name", [], "any"falsefalsetrue900), 900$this->source), "html"nulltrue);
  1591.                 echo "の他の商品</p>
  1592. \t\t\t\t\t<div class=\"product_grid\">
  1593. \t\t\t\t\t\t";
  1594.                 // line 902
  1595.                 $context["Products"] = 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->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [=> ["category_id" => twig_get_attribute($this->env$this->source,                 // line 903
  1596. (isset($context["ParentCategory"]) || array_key_exists("ParentCategory"$context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.'903$this->source); })()), "Category", [], "any"falsefalsetrue903)]], "method"falsefalsetrue902), "orderBy", [=> "p.create_date"=> "DESC"], "method"falsefalsetrue902), "setMaxResults", [=> 100], "method"falsefalsetrue904), "getQuery", [], "method"falsefalsetrue904), "getResult", [], "method"falsefalsetrue904);
  1597.                 // line 905
  1598.                 echo "
  1599. \t\t\t\t\t\t";
  1600.                 // line 906
  1601.                 $context["FilteredProducts"] = twig_slice($this->envtwig_array_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products"$context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.'906$this->source); })()), 906$this->source), function ($__p__) use ($context$macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env$this->source, (isset($context["p"]) || array_key_exists("p"$context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.'906$this->source); })()), "id", [], "any"falsefalsetrue906) != 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.'906$this->source); })()), "id", [], "any"falsefalsetrue906)); }), 04);
  1602.                 // line 907
  1603.                 echo "
  1604. \t\t\t\t\t\t";
  1605.                 // line 908
  1606.                 if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'908$this->source); })())) > 0)) {
  1607.                     // line 909
  1608.                     echo "\t\t\t\t\t\t";
  1609.                     $context['_parent'] = $context;
  1610.                     $context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'909$this->source); })()));
  1611.                     foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  1612.                         // line 910
  1613.                         echo "\t\t\t\t\t\t<div class=\"product_item\">
  1614. \t\t\t\t\t\t\t<a href=\"";
  1615.                         // line 911
  1616.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsetrue911)]), "html"nulltrue);
  1617.                         echo "\">
  1618. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  1619. \t\t\t\t\t\t\t\t\t<img src=\"";
  1620.                         // line 913
  1621.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "main_list_image", [], "any"falsefalsetrue913), 913$this->source)), "save_image"), "html"nulltrue);
  1622.                         echo "\" alt=\"Product\">
  1623. \t\t\t\t\t\t\t\t</div>
  1624. \t\t\t\t\t\t\t\t<p class=\"product_name\">";
  1625.                         // line 915
  1626.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsetrue915), 915$this->source), "html"nulltrue);
  1627.                         echo "</p>
  1628. \t\t\t\t\t\t\t\t<p class=\"product_price\">";
  1629.                         // line 916
  1630.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsetrue916), 916$this->source)), "html"nulltrue);
  1631.                         echo "</p>
  1632. \t\t\t\t\t\t\t</a>
  1633. \t\t\t\t\t\t</div>
  1634. \t\t\t\t\t\t";
  1635.                     }
  1636.                     $_parent $context['_parent'];
  1637.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  1638.                     $context array_intersect_key($context$_parent) + $_parent;
  1639.                     // line 920
  1640.                     echo "\t\t\t\t\t\t";
  1641.                 }
  1642.                 // line 921
  1643.                 echo "\t\t\t\t\t</div>
  1644. \t\t\t\t</div>
  1645. \t\t\t\t";
  1646.             }
  1647.             // line 924
  1648.             echo "\t\t\t</div>
  1649. \t\t\t";
  1650.         }
  1651.         // line 926
  1652.         echo "\t\t\t<!-- おすすめ商品 -->
  1653. \t\t\t";
  1654.         // line 927
  1655.         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.'927$this->source); })()), "ProductCategories", [], "any"falsefalsetrue927))) {
  1656.             // line 928
  1657.             echo "\t\t\t";
  1658.             $context["ChildCategory"] = twig_first($this->envtwig_array_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.'928$this->source); })()), "ProductCategories", [], "any"falsefalsetrue928), 928$this->source), function ($__pc__) use ($context$macros) { $context["pc"] = $__pc__; return  !(null === twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'928$this->source); })()), "Category", [], "any"falsefalsetrue928), "parent", [], "any"falsefalsetrue928)); }));
  1659.             // line 929
  1660.             echo "\t\t\t";
  1661.             $context["ParentCategory"] = twig_first($this->envtwig_array_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.'929$this->source); })()), "ProductCategories", [], "any"falsefalsetrue929), 929$this->source), function ($__pc__) use ($context$macros) { $context["pc"] = $__pc__; return ((null === twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'929$this->source); })()), "Category", [], "any"falsefalsetrue929), "parent", [], "any"falsefalsetrue929)) && !twig_in_filter(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["pc"]) || array_key_exists("pc"$context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.'929$this->source); })()), "Category", [], "any"falsefalsetrue929), "name", [], "any"falsefalsetrue929), [=> "新着商品"=> "迷ったらココ!!開店祝い等の定番!"=> "郵送商品(全国へ宅急便でお届けします)"=> "委託商品'(全国のお花屋さんに委託します)"])); }));
  1662.             // line 930
  1663.             echo "
  1664. \t\t\t<div class=\"same_category_product_area\">
  1665. \t\t\t\t";
  1666.             // line 932
  1667.             if ( !twig_test_empty((isset($context["ChildCategory"]) || array_key_exists("ChildCategory"$context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.'932$this->source); })()))) {
  1668.                 // line 933
  1669.                 echo "\t\t\t\t<div class=\"same_category_product_block\">
  1670. \t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
  1671. \t\t\t\t\t<div class=\"product_grid osusume\">
  1672. \t\t\t\t\t\t";
  1673.                 // line 936
  1674.                 $context["Products"] = 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->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [=> ["category_id" => twig_get_attribute($this->env$this->source,                 // line 937
  1675. (isset($context["ChildCategory"]) || array_key_exists("ChildCategory"$context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.'937$this->source); })()), "Category", [], "any"falsefalsetrue937)]], "method"falsefalsetrue936), "orderBy", [=> "p.create_date"=> "DESC"], "method"falsefalsetrue936), "setMaxResults", [=> 100], "method"falsefalsetrue938), "getQuery", [], "method"falsefalsetrue938), "getResult", [], "method"falsefalsetrue938);
  1676.                 // line 939
  1677.                 echo "
  1678. \t\t\t\t\t\t";
  1679.                 // line 940
  1680.                 $context["FilteredProducts"] = twig_slice($this->envtwig_array_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products"$context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.'940$this->source); })()), 940$this->source), function ($__p__) use ($context$macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env$this->source, (isset($context["p"]) || array_key_exists("p"$context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.'940$this->source); })()), "id", [], "any"falsefalsetrue940) != 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.'940$this->source); })()), "id", [], "any"falsefalsetrue940)); }), 0200);
  1681.                 // line 941
  1682.                 echo "
  1683. \t\t\t\t\t\t";
  1684.                 // line 942
  1685.                 if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'942$this->source); })())) > 0)) {
  1686.                     // line 943
  1687.                     echo "\t\t\t\t\t\t";
  1688.                     $context['_parent'] = $context;
  1689.                     $context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'943$this->source); })()));
  1690.                     foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  1691.                         // line 944
  1692.                         echo "\t\t\t\t\t\t<div class=\"product_item\">
  1693. \t\t\t\t\t\t\t<a href=\"";
  1694.                         // line 945
  1695.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsetrue945)]), "html"nulltrue);
  1696.                         echo "\">
  1697. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  1698. \t\t\t\t\t\t\t\t\t<img src=\"";
  1699.                         // line 947
  1700.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "main_list_image", [], "any"falsefalsetrue947), 947$this->source)), "save_image"), "html"nulltrue);
  1701.                         echo "\" alt=\"Product\">
  1702. \t\t\t\t\t\t\t\t</div>
  1703. \t\t\t\t\t\t\t\t<p class=\"product_name\">";
  1704.                         // line 949
  1705.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsetrue949), 949$this->source), "html"nulltrue);
  1706.                         echo "</p>
  1707. \t\t\t\t\t\t\t\t<p class=\"product_price\">";
  1708.                         // line 950
  1709.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsetrue950), 950$this->source)), "html"nulltrue);
  1710.                         echo "</p>
  1711. \t\t\t\t\t\t\t\t";
  1712.                         // line 952
  1713.                         echo "\t\t\t\t\t\t\t</a>
  1714. \t\t\t\t\t\t</div>
  1715. \t\t\t\t\t\t";
  1716.                     }
  1717.                     $_parent $context['_parent'];
  1718.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  1719.                     $context array_intersect_key($context$_parent) + $_parent;
  1720.                     // line 955
  1721.                     echo "\t\t\t\t\t\t";
  1722.                 }
  1723.                 // line 956
  1724.                 echo "\t\t\t\t\t</div>
  1725. \t\t\t\t</div>
  1726. \t\t\t\t";
  1727.             } elseif ( !twig_test_empty(            // line 958
  1728. (isset($context["ParentCategory"]) || array_key_exists("ParentCategory"$context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.'958$this->source); })()))) {
  1729.                 // line 959
  1730.                 echo "\t\t\t\t<div class=\"same_category_product_block\">
  1731. \t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
  1732. \t\t\t\t\t<div class=\"product_grid osusume\">
  1733. \t\t\t\t\t\t";
  1734.                 // line 962
  1735.                 $context["Products"] = 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->source$this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [=> ["category_id" => twig_get_attribute($this->env$this->source,                 // line 963
  1736. (isset($context["ParentCategory"]) || array_key_exists("ParentCategory"$context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.'963$this->source); })()), "Category", [], "any"falsefalsetrue963)]], "method"falsefalsetrue962), "orderBy", [=> "p.create_date"=> "DESC"], "method"falsefalsetrue962), "setMaxResults", [=> 100], "method"falsefalsetrue964), "getQuery", [], "method"falsefalsetrue964), "getResult", [], "method"falsefalsetrue964);
  1737.                 // line 965
  1738.                 echo "
  1739. \t\t\t\t\t\t";
  1740.                 // line 966
  1741.                 $context["FilteredProducts"] = twig_slice($this->envtwig_array_filter($this->env$this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products"$context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.'966$this->source); })()), 966$this->source), function ($__p__) use ($context$macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env$this->source, (isset($context["p"]) || array_key_exists("p"$context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.'966$this->source); })()), "id", [], "any"falsefalsetrue966) != 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.'966$this->source); })()), "id", [], "any"falsefalsetrue966)); }), 0200);
  1742.                 // line 967
  1743.                 echo "
  1744. \t\t\t\t\t\t";
  1745.                 // line 968
  1746.                 if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'968$this->source); })())) > 0)) {
  1747.                     // line 969
  1748.                     echo "\t\t\t\t\t\t";
  1749.                     $context['_parent'] = $context;
  1750.                     $context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts"$context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.'969$this->source); })()));
  1751.                     foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
  1752.                         // line 970
  1753.                         echo "\t\t\t\t\t\t<div class=\"product_item\">
  1754. \t\t\t\t\t\t\t<a href=\"";
  1755.                         // line 971
  1756.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source$context["Product"], "id", [], "any"falsefalsetrue971)]), "html"nulltrue);
  1757.                         echo "\">
  1758. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  1759. \t\t\t\t\t\t\t\t\t<img src=\"";
  1760.                         // line 973
  1761.                         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "main_list_image", [], "any"falsefalsetrue973), 973$this->source)), "save_image"), "html"nulltrue);
  1762.                         echo "\" alt=\"Product\">
  1763. \t\t\t\t\t\t\t\t</div>
  1764. \t\t\t\t\t\t\t\t<p class=\"product_name\">";
  1765.                         // line 975
  1766.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "name", [], "any"falsefalsetrue975), 975$this->source), "html"nulltrue);
  1767.                         echo "</p>
  1768. \t\t\t\t\t\t\t\t<p class=\"product_price\">";
  1769.                         // line 976
  1770.                         echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Product"], "getPrice02IncTaxMin", [], "any"falsefalsetrue976), 976$this->source)), "html"nulltrue);
  1771.                         echo "</p>
  1772. \t\t\t\t\t\t\t\t";
  1773.                         // line 978
  1774.                         echo "\t\t\t\t\t\t\t</a>
  1775. \t\t\t\t\t\t</div>
  1776. \t\t\t\t\t\t";
  1777.                     }
  1778.                     $_parent $context['_parent'];
  1779.                     unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
  1780.                     $context array_intersect_key($context$_parent) + $_parent;
  1781.                     // line 981
  1782.                     echo "\t\t\t\t\t\t";
  1783.                 }
  1784.                 // line 982
  1785.                 echo "\t\t\t\t\t</div>
  1786. \t\t\t\t</div>
  1787. \t\t\t\t";
  1788.             }
  1789.             // line 985
  1790.             echo "\t\t\t</div>
  1791. \t\t\t";
  1792.         }
  1793.         // line 987
  1794.         echo "
  1795.             ";
  1796.         // line 988
  1797.         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.'988$this->source); })()), "ViewData", [=> 9], "method"falsefalsetrue988))) {
  1798.             // line 989
  1799.             echo "            <div class=\"produt_reco_text_area\">
  1800.                 <h3 class=\"area_ttl\">こんな花をお探しの方におすすめ</h3>
  1801. \t\t\t\t<div class=\"frame\">
  1802.                     <p class=\"produt_reco_text\">";
  1803.             // line 992
  1804.             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.'992$this->source); })()), "ViewData", [=> 9], "method"falsefalsetrue992), 992$this->source), "html"nulltrue);
  1805.             echo "</p>
  1806.                 </div>
  1807.             </div>
  1808.             ";
  1809.         }
  1810.         // line 996
  1811.         echo "            ";
  1812.         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.'996$this->source); })()), "ViewData", [=> 10], "method"falsefalsetrue996))) {
  1813.             // line 997
  1814.             echo "            <div class=\"produt_scene_text_area\">
  1815.                 <div class=\"frame\">
  1816.                     <h3 class=\"area_ttl\">こんなシーンでも使われています</h3>
  1817.                     <p class=\"produt_scene_text\">";
  1818.             // line 1000
  1819.             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.'1000$this->source); })()), "ViewData", [=> 10], "method"falsefalsetrue1000), 1000$this->source), "html"nulltrue);
  1820.             echo "</p>
  1821.                 </div>
  1822.             </div>
  1823.             ";
  1824.         }
  1825.         // line 1004
  1826.         echo "\t\t</div>
  1827. \t</div>
  1828. </section>
  1829. \t";
  1830.         // line 1008
  1831.         echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/signboard_preview.twig");
  1832.         echo "
  1833. ";
  1834.         
  1835.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1836.         
  1837.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1838.     }
  1839.     public function getTemplateName()
  1840.     {
  1841.         return "__string_template__3d1656759d2f44506edf71d82f27c517";
  1842.     }
  1843.     public function isTraitable()
  1844.     {
  1845.         return false;
  1846.     }
  1847.     public function getDebugInfo()
  1848.     {
  1849.         return array (  1913 => 1008,  1907 => 1004,  1900 => 1000,  1895 => 997,  1892 => 996,  1885 => 992,  1880 => 989,  1878 => 988,  1875 => 987,  1871 => 985,  1866 => 982,  1863 => 981,  1855 => 978,  1851 => 976,  1847 => 975,  1842 => 973,  1837 => 971,  1834 => 970,  1829 => 969,  1827 => 968,  1824 => 967,  1822 => 966,  1819 => 965,  1817 => 963,  1816 => 962,  1811 => 959,  1809 => 958,  1805 => 956,  1802 => 955,  1794 => 952,  1790 => 950,  1786 => 949,  1781 => 947,  1776 => 945,  1773 => 944,  1768 => 943,  1766 => 942,  1763 => 941,  1761 => 940,  1758 => 939,  1756 => 937,  1755 => 936,  1750 => 933,  1748 => 932,  1744 => 930,  1741 => 929,  1738 => 928,  1736 => 927,  1733 => 926,  1729 => 924,  1724 => 921,  1721 => 920,  1711 => 916,  1707 => 915,  1702 => 913,  1697 => 911,  1694 => 910,  1689 => 909,  1687 => 908,  1684 => 907,  1682 => 906,  1679 => 905,  1677 => 903,  1676 => 902,  1671 => 900,  1668 => 899,  1666 => 898,  1662 => 896,  1659 => 895,  1649 => 891,  1645 => 890,  1640 => 888,  1635 => 886,  1632 => 885,  1627 => 884,  1625 => 883,  1622 => 882,  1620 => 881,  1617 => 880,  1615 => 878,  1614 => 877,  1609 => 875,  1606 => 874,  1604 => 873,  1600 => 871,  1597 => 870,  1594 => 869,  1592 => 868,  1588 => 866,  1582 => 863,  1579 => 862,  1577 => 861,  1568 => 854,  1564 => 852,  1556 => 849,  1541 => 847,  1532 => 846,  1515 => 845,  1511 => 843,  1507 => 842,  1503 => 841,  1500 => 840,  1497 => 839,  1495 => 838,  1483 => 835,  1480 => 834,  1477 => 833,  1475 => 832,  1469 => 828,  1462 => 825,  1456 => 822,  1453 => 821,  1451 => 820,  1445 => 818,  1443 => 817,  1432 => 811,  1428 => 810,  1422 => 807,  1418 => 806,  1413 => 803,  1406 => 799,  1402 => 797,  1395 => 793,  1387 => 787,  1377 => 785,  1375 => 784,  1367 => 779,  1360 => 775,  1354 => 772,  1350 => 771,  1343 => 770,  1340 => 769,  1334 => 766,  1330 => 765,  1327 => 764,  1325 => 763,  1320 => 761,  1316 => 760,  1313 => 759,  1311 => 758,  1305 => 755,  1297 => 751,  1295 => 750,  1292 => 749,  1286 => 746,  1282 => 745,  1279 => 744,  1276 => 743,  1270 => 740,  1264 => 739,  1261 => 738,  1255 => 735,  1251 => 734,  1248 => 733,  1246 => 732,  1244 => 731,  1241 => 730,  1239 => 729,  1236 => 728,  1231 => 726,  1224 => 725,  1221 => 724,  1217 => 722,  1212 => 720,  1203 => 719,  1201 => 718,  1197 => 717,  1190 => 716,  1188 => 715,  1185 => 714,  1182 => 713,  1176 => 710,  1170 => 707,  1167 => 706,  1164 => 705,  1160 => 703,  1154 => 701,  1151 => 700,  1145 => 698,  1143 => 697,  1140 => 696,  1137 => 695,  1133 => 693,  1127 => 691,  1124 => 690,  1118 => 688,  1116 => 687,  1113 => 686,  1111 => 685,  1108 => 684,  1097 => 682,  1093 => 681,  1090 => 680,  1085 => 677,  1082 => 676,  1074 => 669,  1067 => 667,  1063 => 665,  1058 => 663,  1054 => 662,  1049 => 661,  1047 => 660,  1043 => 659,  1039 => 658,  1035 => 657,  1028 => 656,  1026 => 655,  1021 => 654,  1018 => 653,  1015 => 652,  1010 => 651,  1007 => 650,  1004 => 649,  1001 => 648,  998 => 647,  996 => 646,  994 => 645,  975 => 644,  958 => 643,  948 => 635,  941 => 633,  937 => 631,  932 => 629,  927 => 628,  925 => 627,  921 => 626,  914 => 625,  912 => 624,  909 => 623,  906 => 622,  902 => 621,  900 => 620,  889 => 619,  867 => 617,  849 => 616,  839 => 608,  829 => 607,  759 => 545,  728 => 516,  726 => 515,  621 => 413,  617 => 412,  613 => 411,  609 => 410,  605 => 408,  599 => 406,  597 => 405,  592 => 404,  589 => 403,  579 => 401,  565 => 399,  557 => 398,  539 => 397,  534 => 395,  511 => 375,  501 => 368,  466 => 336,  461 => 333,  452 => 327,  448 => 325,  446 => 324,  443 => 323,  434 => 317,  430 => 315,  428 => 314,  331 => 219,  323 => 217,  321 => 216,  316 => 214,  313 => 213,  311 => 212,  297 => 201,  292 => 199,  229 => 138,  214 => 125,  212 => 124,  160 => 83,  75 => 6,  65 => 5,  54 => 1,  52 => 3,  39 => 1,);
  1850.     }
  1851.     public function getSourceContext()
  1852.     {
  1853.         return new Source("{% extends 'default_frame.twig' %}
  1854. {% set body_class = 'product_page' %}
  1855. {% block stylesheet %}
  1856. <style>
  1857. \t.slick-slider {
  1858. \t\tmargin-bottom: 30px;
  1859. \t}
  1860. \t.slick-dots {
  1861. \t\tposition: absolute;
  1862. \t\tbottom: -45px;
  1863. \t\tdisplay: block;
  1864. \t\twidth: 100%;
  1865. \t\tpadding: 0;
  1866. \t\tlist-style: none;
  1867. \t\ttext-align: center;
  1868. \t}
  1869. \t.slick-dots li {
  1870. \t\tposition: relative;
  1871. \t\tdisplay: inline-block;
  1872. \t\twidth: 20px;
  1873. \t\theight: 20px;
  1874. \t\tmargin: 0 5px;
  1875. \t\tpadding: 0;
  1876. \t\tcursor: pointer;
  1877. \t}
  1878. \t.slick-dots li button {
  1879. \t\tfont-size: 0;
  1880. \t\tline-height: 0;
  1881. \t\tdisplay: block;
  1882. \t\twidth: 20px;
  1883. \t\theight: 20px;
  1884. \t\tpadding: 5px;
  1885. \t\tcursor: pointer;
  1886. \t\tcolor: transparent;
  1887. \t\tborder: 0;
  1888. \t\toutline: none;
  1889. \t\tbackground: transparent;
  1890. \t}
  1891. \t.slick-dots li button:hover,
  1892. \t.slick-dots li button:focus {
  1893. \t\toutline: none;
  1894. \t}
  1895. \t.slick-dots li button:hover:before,
  1896. \t.slick-dots li button:focus:before {
  1897. \t\topacity: 1;
  1898. \t}
  1899. \t.slick-dots li button:before {
  1900. \t\tcontent: \" \";
  1901. \t\tline-height: 20px;
  1902. \t\tposition: absolute;
  1903. \t\ttop: 0;
  1904. \t\tleft: 0;
  1905. \t\twidth: 12px;
  1906. \t\theight: 12px;
  1907. \t\ttext-align: center;
  1908. \t\topacity: .25;
  1909. \t\tbackground-color: black;
  1910. \t\tborder-radius: 50%;
  1911. \t}
  1912. \t.slick-dots li.slick-active button:before {
  1913. \t\topacity: .75;
  1914. \t\tbackground-color: black;
  1915. \t}
  1916. \t.slick-dots li button.thumbnail img {
  1917. \t\twidth: 0;
  1918. \t\theight: 0;
  1919. \t}
  1920. </style>
  1921. {% endblock %}
  1922. {% block javascript %}<script>
  1923.     \$(function () {
  1924.         var noChange = true;
  1925.         \$('.item_visual').on('afterChange', function (event, slick, currentSlide) {
  1926.             if (noChange) {
  1927.                 var \$img = \$(\"div[data-index='\" + currentSlide + \"']\").find('img');
  1928.                 if (\$('#classcategory_id1').length > 0) {
  1929.                     \$('#classcategory_id1').val(\"__unselected\");
  1930.                     \$('#classcategory_id1').change();
  1931.                 }
  1932.                 if (\$img.length > 0) {
  1933.                     var class1 = \$img.data('class_category1');
  1934.                     if (class1) {
  1935.                         \$('#classcategory_id1').val(class1);
  1936.                         \$('#classcategory_id1').change();
  1937.                     }
  1938.                     var class2 = \$img.data('class_category2');
  1939.                     if (class2) {
  1940.                         setTimeout(function () {
  1941.                             \$('#classcategory_id2').val(class2);
  1942.                             \$('#classcategory_id2').change();
  1943.                         }, 100);
  1944.                     }
  1945.                 }
  1946.             } else {
  1947.                 noChange = true;
  1948.             }
  1949.         });
  1950.         if (\$('#classcategory_id1').length > 0 && \$('#classcategory_id2').length > 0) {
  1951.             \$('#classcategory_id2').change(function () {
  1952.                 var \$this = \$(this);
  1953.                 if (\$this.val()) {
  1954.                     var class1 = \$('#classcategory_id1').val();
  1955.                     if (\$('#apg_product_class_image_thumb-' + class1 + '-' + \$this.val()).length > 0) {
  1956.                         var class2 = \$this.val();
  1957.                         \$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
  1958.                         \$('.item_visual').slick('slickGoTo', \$index);
  1959.                         noChange = false;
  1960.                     }
  1961.                 }
  1962.             });
  1963.             {% if apgProductClassConfig.getImageType() == constant('Plugin\\\\\\ApgProductClassImage42\\\\\\Domain\\\\\\ClassImageType::CLASS_IMAGE1_ONLY') %}
  1964.                 \$('#classcategory_id1').change(function () {
  1965.                     var \$this = \$(this);
  1966.                     if (\$this.val() != \"__unselected\") {
  1967.                         var class1 = \$this.val();
  1968.                         if (\$(\"img[data-class_category1='\" + class1 + \"']\").length > 0) {
  1969.                             var class2 = \$(\"img[data-class_category1='\" + class1 + \"']\").data('class_category2');
  1970.                             \$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
  1971.                             \$('.item_visual').slick('slickGoTo', \$index);
  1972.                             noChange = false;
  1973.                         }
  1974.                     }
  1975.                 });
  1976.             {% endif %}
  1977.         } else if (\$('#classcategory_id1').length > 0) {
  1978.             \$('#classcategory_id1').change(function () {
  1979.                 var \$this = \$(this);
  1980.                 if (\$this.val() != \"__unselected\") {
  1981.                     if (\$('#apg_product_class_image_thumb-' + \$this.val() + '-').length > 0) {
  1982.                         \$index = \$('#apg_product_class_image_thumb-' + \$this.val() + '-').parents('div').data('index');
  1983.                         \$('.item_visual').slick('slickGoTo', \$index);
  1984.                         noChange = false;
  1985.                     }
  1986.                 }
  1987.             });
  1988.         }
  1989.     });
  1990. </script>
  1991. <script>
  1992. \t// #ratingModal がURLに含まれる場合、レビューのモーダルを開く
  1993. \t\$(function() {
  1994. \t\tconst currentHash = window.location.hash;
  1995. \t\tif (currentHash.substring(1).includes('ratingModal')) {
  1996. \t\t\t\$(\"#ratingModal\").modal('show');
  1997. \t\t}
  1998. \t});
  1999. </script>
  2000. <script>
  2001. \t// ボリュームアップの自由入力対応
  2002. \tconst volumeUpFlower = \"productoption2\";
  2003. \tconst volumeUpBalloon = \"productoption1\";
  2004. \tconst volumeUpFlower_free = \"productoption16\";
  2005. \tconst volumeUpBalloon_free = \"productoption15\";
  2006. \t\$(function(){
  2007. \t\t\$(`#\${volumeUpFlower_free}`).parents(\".plg_aoio\").hide();
  2008. \t\t\$(`#\${volumeUpBalloon_free}`).parents(\".plg_aoio\").hide();
  2009. \t\t\$(`#\${volumeUpFlower}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpFlower}_free\" name=\"\${volumeUpFlower}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpFlower}_free\">自由入力</label></div>`)
  2010. \t\t\$(`#\${volumeUpBalloon}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpBalloon}_free\" name=\"\${volumeUpBalloon}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpBalloon}_free\">自由入力</label></div>`)
  2011. \t\t\$(`#\${volumeUpFlower} .form-check, #\${volumeUpBalloon} .form-check`).on('click', function() {
  2012. \t\t\tconst \$this_radio = \$(this).find('input[type=\"radio\"]');
  2013. \t\t\tconst name = \$this_radio.attr(\"name\");
  2014. \t\t\tlet free_input = \"\";
  2015. \t\t\tif(name == volumeUpFlower){
  2016. \t\t\t\tfree_input = \$(`#\${volumeUpFlower_free}`);
  2017. \t\t\t} else if(name == volumeUpBalloon){
  2018. \t\t\t\tfree_input = \$(`#\${volumeUpBalloon_free}`);
  2019. \t\t\t} else {
  2020. \t\t\t\treturn;
  2021. \t\t\t}
  2022. \t\t\tif(\$this_radio.hasClass(\"js-volumeUp_free\")){
  2023. \t\t\t\tfree_input.parents(\".plg_aoio\").show();
  2024. \t\t\t} else {
  2025. \t\t\t\tfree_input.parents(\".plg_aoio\").hide();
  2026. \t\t\t\tfree_input.val(\"\");
  2027. \t\t\t}
  2028. \t\t});
  2029. \t});
  2030. </script>
  2031. <script src=\"{{ asset('assets/js/signboard.js') }}\"></script>
  2032. <script>
  2033. \teccube.classCategories = {{ class_categories_as_json(Product) | raw }};
  2034. \t// 規格2に選択肢を割り当てる。
  2035. \tfunction fnSetClassCategories(form, classcat_id2_selected) {
  2036. \t\tvar \$form = \$(form);
  2037. \t\tvar product_id = \$form.find('input[name=product_id]').val();
  2038. \t\tvar \$sele1 = \$form.find('select[name=classcategory_id1]');
  2039. \t\tvar \$sele2 = \$form.find('select[name=classcategory_id2]');
  2040. \t\teccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  2041. \t}
  2042. \t{% if form.classcategory_id2 is defined %}
  2043. \tfnSetClassCategories(
  2044. \t\t\$('#form1'), {{ form.classcategory_id2.vars.value | json_encode | raw }}
  2045. \t);
  2046. \t{% elseif form.classcategory_id1 is defined %}
  2047. \teccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value | json_encode | raw }}, null);
  2048. \t{% endif %}
  2049. </script>
  2050. <script>
  2051. \t\$(function() {
  2052. \t  // 初期状態として、最初の .form-check に active クラスを付与してラジオボタンを選択
  2053. \t  \$('#productoption2 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  2054. \t  \$('#productoption1 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  2055. \t
  2056. \t  // クリックイベントの設定
  2057. \t  \$('#productoption2 .form-check, #productoption1 .form-check').on('click', function() {
  2058. \t\t// 対象の親を取得して、同じブロック内の .form-check から active を削除
  2059. \t\t\$(this).closest('#productoption2, #productoption1').find('.form-check').removeClass('active');
  2060. \t
  2061. \t\t// クリックした要素に active を付与
  2062. \t\t\$(this).addClass('active');
  2063. \t
  2064. \t\t// 対象のラジオボタンを選択状態にする
  2065. \t\t\$(this).find('input[type=\"radio\"]').prop('checked', true).trigger('change');
  2066. \t  });
  2067. \t});
  2068. \t</script>
  2069. \t
  2070. <script>
  2071. \t\$(function () {
  2072. \t\t\$('[for=productoption2_2]').each(function () {
  2073.     \t    \$(this).append('<span class=\"em\">★一番人気</span>');
  2074. \t\t});
  2075. \t\t
  2076. \t\t// bfcache無効化
  2077. \t\t\$(window).bind('pageshow', function (event) {
  2078. \t\t\tif (event.originalEvent.persisted) {
  2079. \t\t\t\tlocation.reload(true);
  2080. \t\t\t}
  2081. \t\t});
  2082. \t\t// Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  2083. \t\t// img タグに width, height が付与されている.
  2084. \t\t// 630px 未満の画面サイズでは縦横比が壊れるための対策
  2085. \t\t// see https://github.com/EC-CUBE/ec-cube/pull/5023
  2086. \t\t// \$('.ec-grid2__cell').hide();
  2087. \t\tvar removeSize = function () {
  2088. \t\t\t\$('.slide-item').height('');
  2089. \t\t\t\$('.slide-item img')
  2090. \t\t\t\t.removeAttr('width')
  2091. \t\t\t\t.removeAttr('height')
  2092. \t\t\t\t.removeAttr('style');
  2093. \t\t};
  2094. \t\tvar slickInitial = function (slick) {
  2095. \t\t\t\$('.ec-grid2__cell').fadeIn(1500);
  2096. \t\t\tvar baseHeight = \$(slick.target).height();
  2097. \t\t\tvar baseWidth = \$(slick.target).width();
  2098. \t\t\tvar rate = baseWidth / baseHeight;
  2099. \t\t\t\$('.slide-item').height(baseHeight * rate); // 余白を削除する
  2100. \t\t\t// transform を使用することでCLSの影響を受けないようにする
  2101. \t\t\t\$('.slide-item img')
  2102. \t\t\t\t.css(
  2103. \t\t\t\t\t{
  2104. \t\t\t\t\t\t'transform-origin': 'top left',
  2105. \t\t\t\t\t\t'transform': 'scaleY(' + rate + ')',
  2106. \t\t\t\t\t\t'transition': 'transform .1s'
  2107. \t\t\t\t\t}
  2108. \t\t\t\t);
  2109. \t\t\t// 正しいサイズに近くなったら属性を解除する
  2110. \t\t\tsetTimeout(removeSize, 500);
  2111. \t\t};
  2112. \t\t\$('.item_visual').on('init', slickInitial);
  2113. \t\t// リサイズ時は CLS の影響を受けないため属性を解除する
  2114. \t\t\$(window).resize(removeSize);
  2115. \t\t
  2116. \t    let tabs = \$(\".tab_btn .cont\");
  2117. \t\ttabs.on(\"click\", function() {
  2118. \t\t\t\$(\".tab_btn .cont\").removeClass(\"show\");
  2119. \t\t\t\$(this).addClass(\"show\");
  2120. \t\t\tconst index = tabs.index(\$(this));
  2121. \t\t\t\$(\".tab_box\").removeClass(\"show\").eq(index).addClass(\"show\");
  2122. \t\t});
  2123. \t\t
  2124. \t\t\$(\".js_more_view\").on(\"click\", function() {
  2125.             \$(this).toggleClass(\"on_click\");
  2126.             \$(\".text_hide\").slideToggle(1000);
  2127.         });
  2128. \t});
  2129. </script>
  2130. <script>
  2131. \t\$(function () {
  2132. \t\t\$(\".open_cart_modal\").on(\"click\", function() {
  2133. \t\t\t\$('.ec-modal').hide();
  2134. \t\t\t\$(\"#cart_modal\").show();
  2135. \t\t});
  2136. \t\t
  2137. \t\t\$('.add-cart').on('click', function (event) {
  2138. \t\t\t\$form = \$('#form1');
  2139. \t\t\t{% if form.classcategory_id1 is defined %}
  2140. \t\t\t// 規格1フォームの必須チェック
  2141. \t\t\tif (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  2142. \t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2143. \t\t\t\treturn true;
  2144. \t\t\t} else {
  2145. \t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('');
  2146. \t\t\t}
  2147. \t\t\t{% endif %}
  2148. \t\t\t{% if form.classcategory_id2 is defined %}
  2149. \t\t\t// 規格2フォームの必須チェック
  2150. \t\t\tif (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  2151. \t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  2152. \t\t\t\treturn true;
  2153. \t\t\t} else {
  2154. \t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('');
  2155. \t\t\t}
  2156. \t\t\t{% endif %}
  2157. \t\t\t// 個数フォームのチェック
  2158. \t\t\tif (\$('#quantity').val() < 1) {
  2159. \t\t\t\t\$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  2160. \t\t\t\treturn true;
  2161. \t\t\t} else {
  2162. \t\t\t\t\$('#quantity')[0].setCustomValidity('');
  2163. \t\t\t}
  2164. \t\t\t// オプション項目のチェック
  2165. \t\t\tif (submit_check(\$form)) {
  2166. \t\t\t\treturn true;
  2167. \t\t\t}
  2168. \t\t\tevent.preventDefault();
  2169. \t\t\t\$.ajax({
  2170. \t\t\t\turl: \$form.attr('action'),
  2171. \t\t\t\ttype: \$form.attr('method'),
  2172. \t\t\t\tdata: \$form.serialize(),
  2173. \t\t\t\tdataType: 'json',
  2174. \t\t\t\tbeforeSend: function (xhr, settings) {
  2175. \t\t\t\t\t// Buttonを無効にする
  2176. \t\t\t\t\t\$('.add-cart').prop('disabled', true);
  2177. \t\t\t\t}
  2178. \t\t\t}).done(function (data) {
  2179. \t\t\t\t// レスポンス内のメッセージをalertで表示
  2180. \t\t\t\t\$.each(data.messages, function () {
  2181. \t\t\t\t\t\$('#added_cart .ec-modal-header').text(this);
  2182. \t\t\t\t});
  2183. \t\t\t\t\$('.ec-modal').hide();
  2184. \t\t\t\t\$(\"#added_cart\").show();
  2185. \t\t\t\t// カートブロックを更新する
  2186. \t\t\t\t\$.ajax({
  2187. \t\t\t\t\turl: \"{{ url('block_cart') }}\",
  2188. \t\t\t\t\ttype: 'GET',
  2189. \t\t\t\t\tdataType: 'html'
  2190. \t\t\t\t}).done(function (html) {
  2191. \t\t\t\t\t\$('.ec-headerRole__cart').html(html);
  2192. \t\t\t\t});
  2193. \t\t\t}).fail(function (data) {
  2194. \t\t\t\talert('{{ 'カートへの追加に失敗しました。'|trans }}');
  2195. \t\t\t}).always(function (data) {
  2196. \t\t\t\t// Buttonを有効にする
  2197. \t\t\t\t\$('.add-cart').prop('disabled', false);
  2198. \t\t\t});
  2199. \t\t});
  2200. \t});
  2201. \t\$('.ec-modal-wrap').on('click', function (e) {
  2202. \t\t// モーダル内の処理は外側にバブリングさせない
  2203. \t\te.stopPropagation();
  2204. \t});
  2205. \t\$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
  2206. \t\t\$('.ec-modal').hide()
  2207. \t});
  2208. </script>
  2209. <script type=\"application/ld+json\">
  2210.     {
  2211.         \"@context\": \"https://schema.org/\",
  2212.         \"@type\": \"Product\",
  2213.         \"name\": \"{{ Product.name }}\",
  2214.         \"image\": [
  2215.             {% for img in Product.ProductImage %}
  2216.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  2217.             {% else %}
  2218.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  2219.             {% endfor %}
  2220.         ],
  2221.         \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  2222.         {% if Product.code_min %}
  2223.         \"sku\": \"{{ Product.code_min }}\",
  2224.         {% endif %}
  2225.         \"offers\": {
  2226.             \"@type\": \"Offer\",
  2227.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  2228.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  2229.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  2230.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  2231.         }
  2232.     }
  2233.     </script>
  2234. \t<script>
  2235. \t\t// ...既存のHTMLの後などに追加...
  2236. document.addEventListener('DOMContentLoaded', function() {
  2237.     // 対象IDリスト
  2238.     const ids = [
  2239.         'productoption3',
  2240.         'productoption4',
  2241.         'productoption5',
  2242.         'productoption10',
  2243.         'productoption6',
  2244.         'productoption7',
  2245.         'productoption8',
  2246.         'productoption9'
  2247.     ];
  2248.     // tatefuda_boxを集める配列
  2249.     const tatefudaBoxes = [];
  2250.     ids.forEach(function(id) {
  2251.         const el = document.getElementById(id);
  2252.         if (el) {
  2253.             const parent = el.closest('.plg_aoio');
  2254.             if (parent && !parent.classList.contains('tatefuda_box')) {
  2255.                 parent.classList.add('tatefuda_box');
  2256.                 tatefudaBoxes.push(parent);
  2257.             }
  2258.         }
  2259.     });
  2260.     if (tatefudaBoxes.length > 0) {
  2261.         // tatefuda_boxの最初と最後を取得
  2262.         const first = tatefudaBoxes[0];
  2263.         const last = tatefudaBoxes[tatefudaBoxes.length - 1];
  2264.         // tatefuda_box_areaを作成
  2265.         const wrapper = document.createElement('div');
  2266.         wrapper.className = 'tatefuda_box_area';
  2267.         // 最初の前に挿入
  2268.         first.parentNode.insertBefore(wrapper, first);
  2269.         // tatefuda_boxを順にwrapperへ移動
  2270.         tatefudaBoxes.forEach(function(box) {
  2271.             wrapper.appendChild(box);
  2272.         });
  2273.     }
  2274. });
  2275. //     document.addEventListener(\"DOMContentLoaded\", function () {
  2276. //   // 要素の取得
  2277. //   const recoArea = document.querySelector(\".produt_reco_text_area\");
  2278. //   const sceneArea = document.querySelector(\".produt_scene_text_area\");
  2279. //   const latestBlock = document.querySelector(\".ec-layoutRole__mainBottom .top_inner .latest_block\");
  2280. //
  2281. //   // latest_blockの下に要素を移動
  2282. //   if (latestBlock) {
  2283. //     latestBlock.insertAdjacentElement(\"afterend\", sceneArea);
  2284. //     latestBlock.insertAdjacentElement(\"afterend\", recoArea);
  2285. //   }
  2286. //
  2287. //   // produt_reco_textを分割して複数の<p>に
  2288. //   const recoText = recoArea.querySelector(\".produt_reco_text\");
  2289. //   if (recoText) {
  2290. //     const parent = recoText.parentElement;
  2291. //     const texts = recoText.textContent.split(\",\");
  2292. //
  2293. //     // 元の要素を削除
  2294. //     recoText.remove();
  2295. //
  2296. //     // 分割したテキストを<p>にして挿入
  2297. //     texts.forEach(text => {
  2298. //       const p = document.createElement(\"p\");
  2299. //       p.className = \"produt_reco_text\";
  2300. //       p.textContent = text.trim();
  2301. //       parent.appendChild(p);
  2302. //     });
  2303. //   }
  2304. // });
  2305. \t</script>
  2306. \t<script>
  2307. document.addEventListener(\"DOMContentLoaded\", function () {
  2308.   var productMain = document.querySelector(\"#product_main\");
  2309.   if (!productMain) return;
  2310.   var checkInterval = setInterval(function () {
  2311.     var ratingArea = document.querySelector(\"#product_rating_area\");
  2312.     if (ratingArea) {
  2313.       productMain.parentNode.insertBefore(ratingArea, productMain.nextSibling);
  2314.       clearInterval(checkInterval); // 見つけたら監視停止
  2315.     }
  2316.   }, 100); // 100ms ごとに確認
  2317. });
  2318. </script>
  2319. {% if(Product.id == 896) %}
  2320. <script>
  2321. \t\$(function() {
  2322. \t\tconst \$option_input = \$(\"#productoption14\");
  2323. \t\tconst \$option_box = \$option_input.parents(\".plg_aoio\");
  2324. \t\t\$option_box.css({
  2325. \t\t\t\"visibility\":\"hidden\",
  2326. \t\t\t\"height\":\"0\",
  2327. \t\t\t\"margin\":\"0\",
  2328. \t\t\t\"padding\":\"0\",
  2329. \t\t});
  2330. \t\t
  2331. \t\tconst \$price_input = \$(\"<input>\", {
  2332. \t\t\ttype: \"number\",
  2333. \t\t\tclass: \"ec-price__price\",
  2334. \t\t\tid: \"custom_price_input\",
  2335. \t\t\tmin: 0,
  2336. \t\t\tvalue: 0,
  2337. \t\t});
  2338. \t\t
  2339. \t\t\$(\".ec-price\").html(\$price_input);
  2340. \t\t\$(\".ec-price\").append('<span class=\"ec-price__tax\">円</span>');
  2341. \t\t\$(\".ec-price\").append('<p class=\"ec-price__tax\">税抜き金額をご入力ください</p>');
  2342. \t\t
  2343. \t\t\$(\"#custom_price_input\").on(\"change\", function() {
  2344. \t\t\t\$option_input.val(\$(this).val()).trigger(\"change\");
  2345. \t\t});
  2346. \t});
  2347. </script>
  2348. {% endif %}
  2349. <script>
  2350.     document.addEventListener('DOMContentLoaded', function() {
  2351.   // --- レビューセクションが無い場合、active を付与 ---
  2352.   const reviewSection = document.querySelector('#product_rating_area #ratingContent .row.customer-reviews');
  2353.   if (!reviewSection) {
  2354.     const badges = document.querySelectorAll('.ec-sliderItemRole .btm_img_review_badge');
  2355.     badges.forEach(badge => badge.classList.add('active'));
  2356.   }
  2357.   // --- placeholder の変更 & height の変更 ---
  2358.   const remarks = document.getElementById('rating_remarks');
  2359.   if (remarks) {
  2360.     remarks.placeholder = \"例)\\n開店祝いで利用しました。華やかでボリュームもあり、先方にも喜んでもらえました。\";
  2361.     remarks.style.height = \"6em\"; // ← ここを追加
  2362.   }
  2363. });
  2364. </script>
  2365. <script>
  2366. document.addEventListener(\"DOMContentLoaded\", function() {
  2367.   const priceSelector = \".ec-productRole .ec-productRole__price .ec-price .ec-price__price\";
  2368.   // 子要素(label)を使って .mb-3 を特定
  2369.   const container = document.querySelector('.mb-3 > label[for=\"classcategory_id1\"]')?.closest('.mb-3');
  2370.   if (!container) return;
  2371.   // p要素がなければ作成
  2372.   let priceParagraph = container.querySelector(\".js_type_price\");
  2373.   if (!priceParagraph) {
  2374.     priceParagraph = document.createElement(\"p\");
  2375.     priceParagraph.classList.add(\"js_type_price\");
  2376.     container.appendChild(priceParagraph);
  2377.   }
  2378.   const priceElement = document.querySelector(priceSelector);
  2379.   if (!priceElement) return;
  2380.   // 更新処理
  2381.   const updatePrice = () => {
  2382.     const priceText = priceElement.textContent.trim();
  2383.     if (priceText) {
  2384.       priceParagraph.innerHTML = `\${priceText}<span class=\"size\">税込</span>`;
  2385.     } else {
  2386.       priceParagraph.innerHTML = \"\";
  2387.     }
  2388.   };
  2389.   // 初期表示
  2390.   updatePrice();
  2391.   // 価格要素の変化を監視
  2392.   const observer = new MutationObserver(updatePrice);
  2393.   observer.observe(priceElement, { childList: true, characterData: true, subtree: true });
  2394. });
  2395. </script>
  2396. {% endblock %}
  2397. {% block main %}
  2398. <section class=\"top_inner\">
  2399. \t<div id=\"main-contents\" class=\"colnum1\">
  2400. \t\t<div class=\"ec-productRole\">
  2401. \t\t\t<div class=\"ec-grid2\" id=\"product_main\">
  2402. \t\t\t\t<div class=\"ec-grid2__cell\">
  2403. \t\t\t\t\t<div class=\"ec-sliderItemRole\">
  2404. \t\t\t\t\t\t<div class=\"item_visual\">
  2405. \t\t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
  2406. \t\t\t\t\t\t\t<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>
  2407. \t\t\t\t\t\t\t{% else %}
  2408. \t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"></div>
  2409. \t\t\t\t\t\t\t{% endfor %}{% if Product.hasProductClass -%}
  2410.     {% for ProductClass in Product.getProductClasses() %}
  2411.         {% if ProductClass.file_name %}
  2412.             <div class=\"slide-item\">
  2413.                 {% if ProductClass.ClassCategory1 and ProductClass.ClassCategory2 %}
  2414.                     <img id=\"apg_product_class_image-{{ ProductClass.ClassCategory1.id }}-{{ ProductClass.ClassCategory2.id }}\"
  2415.                          src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\">
  2416.                 {% elseif ProductClass.ClassCategory1 %}
  2417.                     <img id=\"apg_product_class_image-{{ ProductClass.ClassCategory1.id }}-\"
  2418.                          src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\">
  2419.                 {% endif %}
  2420.             </div>
  2421.         {% endif %}
  2422.     {% endfor %}
  2423. {% endif %}
  2424. \t\t\t\t\t\t</div>
  2425.                         <div class=\"btm_img_review_badge\">
  2426.                             <a href=\"#product_rating_area\" class=\"badge_img\">
  2427.                                 <img src=\"/html/user_data/assets/img/common/btm_img_review_badge.jpg\" alt=\"\">
  2428.                             </a>
  2429.                         </div>
  2430. \t\t\t\t\t\t<div class=\"item_nav\">
  2431. \t\t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
  2432. \t\t\t\t\t\t\t<div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  2433. \t\t\t\t\t\t\t{% endfor %}{% if Product.hasProductClass -%}
  2434.     {% if Product.ProductImage.count > 0 %}
  2435.         {% set imageCount = Product.ProductImage.count - 1 %}
  2436.     {% else %}
  2437.         {% set imageCount = 0 %}
  2438.     {% endif %}
  2439.     {% for ProductClass in Product.getProductClasses() %}
  2440.         {% if ProductClass.file_name %}
  2441.             {% set imageCount = imageCount + 1 %}
  2442.             <div class=\"slideThumb\" data-index=\"{{ imageCount }}\">
  2443.                 {% if ProductClass.ClassCategory1 and ProductClass.ClassCategory2 %}
  2444.                     <img id=\"apg_product_class_image_thumb-{{ ProductClass.ClassCategory1.id }}-{{ ProductClass.ClassCategory2.id }}\"
  2445.                          src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\"
  2446.                          data-class_category1=\"{{ ProductClass.ClassCategory1.id }}\"
  2447.                          data-class_category2=\"{{ ProductClass.ClassCategory2.id }}\">
  2448.                 {% elseif ProductClass.ClassCategory1 %}
  2449.                     <img id=\"apg_product_class_image_thumb-{{ ProductClass.ClassCategory1.id }}-\"
  2450.                          src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\"
  2451.                          data-class_category1=\"{{ ProductClass.ClassCategory1.id }}\">
  2452.                 {% endif %}
  2453.             </div>
  2454.         {% endif %}
  2455.     {% endfor %}
  2456. {% endif %}
  2457. \t\t\t\t\t\t</div>
  2458. \t\t\t\t\t</div>
  2459. \t\t\t\t</div>
  2460. \t\t\t\t<div class=\"ec-grid2__cell\">
  2461. \t\t\t\t\t<div class=\"ec-productRole__profile\">
  2462. \t\t\t\t\t\t{# 商品名 #}
  2463. \t\t\t\t\t\t<div class=\"ec-productRole__title\">
  2464. \t\t\t\t\t\t\t<h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  2465. \t\t\t\t\t\t</div>
  2466. \t\t\t\t\t\t{# タグ #}
  2467. \t\t\t\t\t\t<ul class=\"ec-productRole__tags\">
  2468. \t\t\t\t\t\t\t{% for Tag in Product.Tags %}
  2469. \t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  2470. \t\t\t\t\t\t\t{% endfor %}
  2471. \t\t\t\t\t\t</ul>
  2472.                         {% if Product.ViewData(1) is not empty or Product.ViewData(2) is not empty %}
  2473. \t\t\t\t\t\t<div class=\"color_num_area color_num_area_1_2\">
  2474. \t\t\t\t\t\t\t{% if Product.ViewData(1) is not empty %}
  2475. \t\t\t\t\t\t\t<p class=\"color color_num_data\">{{ Product.ViewData(1) }}</p>
  2476. \t\t\t\t\t\t\t{% endif %}
  2477. \t\t\t\t\t\t\t{% if Product.ViewData(2) is not empty %}
  2478. \t\t\t\t\t\t\t<p class=\"num color_num_data\">{{ Product.ViewData(2) }}本立</p>
  2479. \t\t\t\t\t\t\t{% endif %}
  2480. \t\t\t\t\t\t</div>
  2481. \t\t\t\t\t\t{% endif %}
  2482. \t\t\t\t\t\t{% if Product.ViewData(4) is not empty or Product.ViewData(5) is not empty %}
  2483. \t\t\t\t\t\t<div class=\"color_num_area color_num_area_4_5\">
  2484. \t\t\t\t\t\t\t{% if Product.ViewData(4) is not empty %}
  2485. \t\t\t\t\t\t\t<p class=\"dan color_num_data\">{{ Product.ViewData(4) }}段</p>
  2486. \t\t\t\t\t\t\t{% endif %}
  2487. \t\t\t\t\t\t\t{% if Product.ViewData(5) is not empty %}
  2488. \t\t\t\t\t\t\t<p class=\"leg_type color_num_data\">{{ Product.ViewData(5) }}</p>
  2489. \t\t\t\t\t\t\t{% endif %}
  2490. \t\t\t\t\t\t</div>
  2491. \t\t\t\t\t\t{% endif %}
  2492. \t\t\t\t\t\t{% if Product.ViewData(6) is not empty %}
  2493. \t\t\t\t\t\t<div class=\"color_num_area color_num_area_6\">
  2494. \t\t\t\t\t\t\t<p class=\"kago_type color_num_data\">{{ Product.ViewData(6) }}</p>
  2495. \t\t\t\t\t\t</div>
  2496. \t\t\t\t\t\t{% endif %}
  2497. \t\t\t\t\t\t<div class=\"ec-productRole__description\">{{ Product.description_detail|raw|nl2br }}
  2498. \t\t\t\t\t\t</div>
  2499. \t\t\t\t\t\t{# 通常価格 #}
  2500. \t\t\t\t\t\t{% if Product.hasProductClass -%}
  2501. \t\t\t\t\t\t<div class=\"ec-productRole__priceRegular\">
  2502. \t\t\t\t\t\t\t{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  2503. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  2504. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2505. \t\t\t\t\t\t\t{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  2506. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
  2507. \t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2508. \t\t\t\t\t\t\t{% endif %}
  2509. \t\t\t\t\t\t</div>
  2510. \t\t\t\t\t\t{% else %}
  2511. \t\t\t\t\t\t{% if Product.getPrice01Max is not null %}
  2512. \t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  2513. \t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  2514. \t\t\t\t\t\t{% endif %}
  2515. \t\t\t\t\t\t{% endif %}
  2516. \t\t\t\t\t\t{# 販売価格 #}
  2517. \t\t\t\t\t\t<div class=\"ec-productRole__price\">
  2518. \t\t\t\t\t\t\t{% if Product.hasProductClass -%}
  2519. \t\t\t\t\t\t\t{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  2520. \t\t\t\t\t\t\t<div class=\"ec-price\">
  2521. \t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}</span>
  2522. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  2523. \t\t\t\t\t\t\t</div>
  2524. \t\t\t\t\t\t\t{% else %}
  2525. \t\t\t\t\t\t\t<div class=\"ec-price\">
  2526. \t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
  2527. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  2528. \t\t\t\t\t\t\t</div>
  2529. \t\t\t\t\t\t\t{% endif %}
  2530. \t\t\t\t\t\t\t{% else %}
  2531. \t\t\t\t\t\t\t<div class=\"ec-price\">
  2532. \t\t\t\t\t\t\t\t<span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
  2533. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  2534. \t\t\t\t\t\t\t</div>
  2535. \t\t\t\t\t\t\t{% endif %}
  2536. \t\t\t\t\t\t</div>
  2537. \t\t\t\t\t\t{% if Product.stock_find %}
  2538. \t\t\t\t\t\t\t<form class=\"form_add-cart\" action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  2539. \t\t\t\t\t\t\t\t<div id=\"cart_modal\" class=\"ec-modal\">
  2540. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  2541. \t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  2542. \t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\" /></span></span>
  2543. \t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  2544. \t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
  2545. \t\t\t\t\t\t\t\t\t\t\t\t\t{% if form.classcategory_id1 is defined %}
  2546. \t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  2547. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id1) }}
  2548. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id1) }}
  2549. \t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  2550. \t\t\t\t\t\t\t\t\t\t\t\t\t\t{% if form.classcategory_id2 is defined %}
  2551. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  2552. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id2) }}
  2553. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id2) }}
  2554. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  2555. \t\t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
  2556. \t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
  2557. \t\t\t\t\t\t\t\t\t\t\t\t\t{{ include('Product/option.twig') }}<div class=\"ec-numberInput\"><span>{{ '数量'|trans }}</span>
  2558. \t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_widget(form.quantity) }}
  2559. \t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.quantity) }}
  2560. \t\t\t\t\t\t\t\t\t\t\t\t\t</div>
  2561. \t\t\t\t\t\t\t\t\t\t\t\t</div>
  2562. \t\t\t\t\t\t\t\t\t\t\t\t{{ form_rest(form) }}
  2563. \t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  2564. \t\t\t\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-inlineBtn--action add-cart\">
  2565. \t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ 'カートに入れる'|trans }}
  2566. \t\t\t\t\t\t\t\t\t\t\t\t\t</button>
  2567. \t\t\t\t\t\t\t\t\t\t\t\t</div>
  2568. \t\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-box -->
  2569. \t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-wrap -->
  2570. \t\t\t\t\t\t\t\t\t\t{% if Product.stock_min %}
  2571. \t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__stock\">在庫数: <span class=\"stock_num\">{{ Product.stock_min }}{% if Product.stock_min != Product.stock_max %} ~ {{ Product.stock_max }}{% endif %}</span></div>
  2572. \t\t\t\t\t\t\t\t\t\t{% endif %}
  2573. \t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-overlay -->
  2574. \t\t\t\t\t\t\t\t</div>
  2575. \t\t\t\t\t\t\t</form>
  2576. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  2577. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action open_cart_modal\">
  2578. \t\t\t\t\t\t\t\t\t{{ 'カートに入れる'|trans }}
  2579. \t\t\t\t\t\t\t\t</button>
  2580. \t\t\t\t\t\t\t</div>
  2581. \t\t\t\t\t\t{% else %}
  2582. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  2583. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  2584. \t\t\t\t\t\t\t\t\t{{ 'ただいま品切れ中です。'|trans }}
  2585. \t\t\t\t\t\t\t\t</button>
  2586. \t\t\t\t\t\t\t</div>
  2587. \t\t\t\t\t\t{% endif %}
  2588. \t\t\t\t\t\t<div id=\"added_cart\" class=\"ec-modal\">
  2589. \t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  2590. \t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  2591. \t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\" /></span></span>
  2592. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-header text-center\">{{ 'カートに追加しました。'|trans }}</div>
  2593. \t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  2594. \t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  2595. \t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  2596. \t\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  2597. \t\t\t\t\t\t\t\t\t\t</div>
  2598. \t\t\t\t\t\t\t\t\t</div>
  2599. \t\t\t\t\t\t\t\t</div>
  2600. \t\t\t\t\t\t\t</div>
  2601. \t\t\t\t\t\t</div>
  2602. \t\t\t\t\t\t{% if BaseInfo.option_favorite_product %}
  2603. \t\t\t\t\t\t<form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  2604. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  2605. \t\t\t\t\t\t\t\t{% if is_favorite == false %}
  2606. \t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  2607. \t\t\t\t\t\t\t\t\t{{ 'お気に入りに追加'|trans }}
  2608. \t\t\t\t\t\t\t\t</button>
  2609. \t\t\t\t\t\t\t\t{% else %}
  2610. \t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel fav_done\" disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  2611. \t\t\t\t\t\t\t\t</button>
  2612. \t\t\t\t\t\t\t\t{% endif %}
  2613. \t\t\t\t\t\t\t</div>
  2614. \t\t\t\t\t\t</form>
  2615.                         <a class=\"page_product_review_btn\" href=\"#product_rating_area\"><span class=\"letter\">レビューを見る/書く</span></a>
  2616. \t\t\t\t\t\t{% endif %}
  2617. \t\t\t\t\t\t{# 商品コード #}
  2618. \t\t\t\t\t\t{% if Product.code_min is not empty %}
  2619. \t\t\t\t\t\t<div class=\"ec-productRole__code\">
  2620. \t\t\t\t\t\t\t{{ '商品コード'|trans }}: <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  2621. \t\t\t\t\t\t</div>
  2622. \t\t\t\t\t\t{% endif %}
  2623. \t\t\t\t\t\t{# 関連カテゴリ #}
  2624. \t\t\t\t\t\t{% if Product.ProductCategories is not empty %}
  2625. \t\t\t\t\t\t<div class=\"ec-productRole__category\">
  2626. \t\t\t\t\t\t\t<div>{{ '関連カテゴリ'|trans }}</div>
  2627. \t\t\t\t\t\t\t{% for ProductCategory in Product.ProductCategories %}
  2628. \t\t\t\t\t\t\t<ul>
  2629. \t\t\t\t\t\t\t\t<li>
  2630. \t\t\t\t\t\t\t\t\t{% for Category in ProductCategory.Category.path %}
  2631. \t\t\t\t\t\t\t\t\t<a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  2632. \t\t\t\t\t\t\t\t\t<span>></span>{% endif -%}
  2633. \t\t\t\t\t\t\t\t\t{% endfor %}
  2634. \t\t\t\t\t\t\t\t</li>
  2635. \t\t\t\t\t\t\t</ul>
  2636. \t\t\t\t\t\t\t{% endfor %}
  2637. \t\t\t\t\t\t</div>
  2638. \t\t\t\t\t\t{% endif %}
  2639. \t\t\t\t\t\t<!-- <div class=\"ec-productRole__description\">
  2640. \t\t\t\t\t\t\t<a href=\"/contact\">この商品について問い合わせる</a><br>
  2641. \t\t\t\t\t\t\t<a href=\"/help/tradelaw\">返品についての詳細はこちら</a>
  2642. \t\t\t\t\t\t</div> -->
  2643. \t\t\t\t\t</div>
  2644. \t\t\t\t</div>
  2645. \t\t\t</div>
  2646. \t\t\t{% if Product.freearea %}
  2647. \t\t\t<div class=\"ec-productRole__description\">
  2648. \t\t\t\t{{ include(template_from_string(Product.freearea), sandboxed = true) }}
  2649. \t\t\t</div>
  2650. \t\t\t{% endif %}
  2651. \t\t\t<!-- 同じカテゴリーの商品 -->
  2652. \t\t\t{% if Product.ProductCategories is not empty %}
  2653. \t\t\t{% set ChildCategory = Product.ProductCategories|filter(pc => pc.Category.parent is not null)|first %}
  2654. \t\t\t{% set ParentCategory = Product.ProductCategories|filter(pc => pc.Category.parent is null and pc.Category.name not in [\"新着商品\", \"迷ったらココ!!開店祝い等の定番!\", \"郵送商品(全国へ宅急便でお届けします)\", \"委託商品'(全国のお花屋さんに委託します)\"])|first %}
  2655. \t\t\t<div class=\"same_category_product_area\">
  2656. \t\t\t\t{% if ChildCategory is not empty %}
  2657. \t\t\t\t<div class=\"same_category_product_block\">
  2658. \t\t\t\t\t<p class=\"same_category_name\">{{ ChildCategory.Category.name }}の他の商品</p>
  2659. \t\t\t\t\t<div class=\"product_grid\">
  2660. \t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
  2661. \t\t\t\t\t\t'category_id': ChildCategory.Category
  2662. \t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
  2663. \t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:4] %}
  2664. \t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
  2665. \t\t\t\t\t\t{% for Product in FilteredProducts %}
  2666. \t\t\t\t\t\t<div class=\"product_item\">
  2667. \t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  2668. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  2669. \t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
  2670. \t\t\t\t\t\t\t\t</div>
  2671. \t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
  2672. \t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
  2673. \t\t\t\t\t\t\t</a>
  2674. \t\t\t\t\t\t</div>
  2675. \t\t\t\t\t\t{% endfor %}
  2676. \t\t\t\t\t\t{% endif %}
  2677. \t\t\t\t\t</div>
  2678. \t\t\t\t</div>
  2679. \t\t\t\t{% elseif ParentCategory is not empty %}
  2680. \t\t\t\t<div class=\"same_category_product_block\">
  2681. \t\t\t\t\t<p class=\"same_category_name\">{{ ParentCategory.Category.name }}の他の商品</p>
  2682. \t\t\t\t\t<div class=\"product_grid\">
  2683. \t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
  2684. \t\t\t\t\t\t'category_id': ParentCategory.Category
  2685. \t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
  2686. \t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:4] %}
  2687. \t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
  2688. \t\t\t\t\t\t{% for Product in FilteredProducts %}
  2689. \t\t\t\t\t\t<div class=\"product_item\">
  2690. \t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  2691. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  2692. \t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
  2693. \t\t\t\t\t\t\t\t</div>
  2694. \t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
  2695. \t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
  2696. \t\t\t\t\t\t\t</a>
  2697. \t\t\t\t\t\t</div>
  2698. \t\t\t\t\t\t{% endfor %}
  2699. \t\t\t\t\t\t{% endif %}
  2700. \t\t\t\t\t</div>
  2701. \t\t\t\t</div>
  2702. \t\t\t\t{% endif %}
  2703. \t\t\t</div>
  2704. \t\t\t{% endif %}
  2705. \t\t\t<!-- おすすめ商品 -->
  2706. \t\t\t{% if Product.ProductCategories is not empty %}
  2707. \t\t\t{% set ChildCategory = Product.ProductCategories|filter(pc => pc.Category.parent is not null)|first %}
  2708. \t\t\t{% set ParentCategory = Product.ProductCategories|filter(pc => pc.Category.parent is null and pc.Category.name not in [\"新着商品\", \"迷ったらココ!!開店祝い等の定番!\", \"郵送商品(全国へ宅急便でお届けします)\", \"委託商品'(全国のお花屋さんに委託します)\"])|first %}
  2709. \t\t\t<div class=\"same_category_product_area\">
  2710. \t\t\t\t{% if ChildCategory is not empty %}
  2711. \t\t\t\t<div class=\"same_category_product_block\">
  2712. \t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
  2713. \t\t\t\t\t<div class=\"product_grid osusume\">
  2714. \t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
  2715. \t\t\t\t\t\t'category_id': ChildCategory.Category
  2716. \t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
  2717. \t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:200] %}
  2718. \t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
  2719. \t\t\t\t\t\t{% for Product in FilteredProducts %}
  2720. \t\t\t\t\t\t<div class=\"product_item\">
  2721. \t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  2722. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  2723. \t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
  2724. \t\t\t\t\t\t\t\t</div>
  2725. \t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
  2726. \t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
  2727. \t\t\t\t\t\t\t\t{#<p class=\"product_num\">{{ Product.display_rank }}</p>#}
  2728. \t\t\t\t\t\t\t</a>
  2729. \t\t\t\t\t\t</div>
  2730. \t\t\t\t\t\t{% endfor %}
  2731. \t\t\t\t\t\t{% endif %}
  2732. \t\t\t\t\t</div>
  2733. \t\t\t\t</div>
  2734. \t\t\t\t{% elseif ParentCategory is not empty %}
  2735. \t\t\t\t<div class=\"same_category_product_block\">
  2736. \t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
  2737. \t\t\t\t\t<div class=\"product_grid osusume\">
  2738. \t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
  2739. \t\t\t\t\t\t'category_id': ParentCategory.Category
  2740. \t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
  2741. \t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:200] %}
  2742. \t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
  2743. \t\t\t\t\t\t{% for Product in FilteredProducts %}
  2744. \t\t\t\t\t\t<div class=\"product_item\">
  2745. \t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
  2746. \t\t\t\t\t\t\t\t<div class=\"product_image\">
  2747. \t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
  2748. \t\t\t\t\t\t\t\t</div>
  2749. \t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
  2750. \t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
  2751. \t\t\t\t\t\t\t\t{#<p class=\"product_num\">{{ Product.display_rank }}</p>#}
  2752. \t\t\t\t\t\t\t</a>
  2753. \t\t\t\t\t\t</div>
  2754. \t\t\t\t\t\t{% endfor %}
  2755. \t\t\t\t\t\t{% endif %}
  2756. \t\t\t\t\t</div>
  2757. \t\t\t\t</div>
  2758. \t\t\t\t{% endif %}
  2759. \t\t\t</div>
  2760. \t\t\t{% endif %}
  2761.             {% if Product.ViewData(9) is not empty %}
  2762.             <div class=\"produt_reco_text_area\">
  2763.                 <h3 class=\"area_ttl\">こんな花をお探しの方におすすめ</h3>
  2764. \t\t\t\t<div class=\"frame\">
  2765.                     <p class=\"produt_reco_text\">{{ Product.ViewData(9) }}</p>
  2766.                 </div>
  2767.             </div>
  2768.             {% endif %}
  2769.             {% if Product.ViewData(10) is not empty %}
  2770.             <div class=\"produt_scene_text_area\">
  2771.                 <div class=\"frame\">
  2772.                     <h3 class=\"area_ttl\">こんなシーンでも使われています</h3>
  2773.                     <p class=\"produt_scene_text\">{{ Product.ViewData(10) }}</p>
  2774.                 </div>
  2775.             </div>
  2776.             {% endif %}
  2777. \t\t</div>
  2778. \t</div>
  2779. </section>
  2780. \t{{ include('Product/signboard_preview.twig') }}
  2781. {% endblock %}""__string_template__3d1656759d2f44506edf71d82f27c517""");
  2782.     }
  2783.     
  2784.     public function checkSecurity()
  2785.     {
  2786.         static $tags = array("set" => 3"if" => 124"for" => 397);
  2787.         static $filters = array("escape" => 199"raw" => 201"json_encode" => 214"trans" => 317"no_image_product" => 401"slice" => 404"replace" => 404"default" => 404"nl2br" => 710"price" => 716"first" => 869"filter" => 869"length" => 883);
  2788.         static $functions = array("constant" => 124"asset" => 199"class_categories_as_json" => 201"url" => 368"form_row" => 760"form_errors" => 761"include" => 770"form_widget" => 771"form_rest" => 775"template_from_string" => 863"repository" => 877);
  2789.         try {
  2790.             $this->sandbox->checkSecurity(
  2791.                 ['set''if''for'],
  2792.                 ['escape''raw''json_encode''trans''no_image_product''slice''replace''default''nl2br''price''first''filter''length'],
  2793.                 ['constant''asset''class_categories_as_json''url''form_row''form_errors''include''form_widget''form_rest''template_from_string''repository']
  2794.             );
  2795.         } catch (SecurityError $e) {
  2796.             $e->setSourceContext($this->source);
  2797.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  2798.                 $e->setTemplateLine($tags[$e->getTagName()]);
  2799.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  2800.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  2801.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  2802.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  2803.             }
  2804.             throw $e;
  2805.         }
  2806.     }
  2807. }