var/cache/dev/twig/47/47609d30e23b8a8d8f0a561686c223c9.php line 832

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