var/cache/dev/twig/3c/3c104954aa28be3806d3932b4f406d1f.php line 42

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