var/cache/dev/twig/c2/c2e7d23988048930277f5ae4b2221de5.php line 55

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Product/detail.twig */
  14. class __TwigTemplate_05021e6e93cc71b5285261c1644e075b extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.         $this->sandbox $this->env->getExtension('\Twig\Extension\SandboxExtension');
  28.         $this->checkSecurity();
  29.     }
  30.     protected function doGetParent(array $context)
  31.     {
  32.         // line 11
  33.         return "default_frame.twig";
  34.     }
  35.     protected function doDisplay(array $context, array $blocks = [])
  36.     {
  37.         $macros $this->macros;
  38.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  39.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  41.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  42.         // line 13
  43.         $context["body_class"] = "product_page";
  44.         // line 11
  45.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  46.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  49.         
  50.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  51.     }
  52.     // line 15
  53.     public function block_stylesheet($context, array $blocks = [])
  54.     {
  55.         $macros $this->macros;
  56.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  57.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  59.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  60.         // line 16
  61.         echo "\t<style>
  62. \t.ec-price .ec-price__price {
  63.     margin-top: 0!important;
  64. }
  65. span.ec-productRole__priceRegularPrice {
  66.     text-decoration: line-through;
  67. }
  68. \t\t.slick-slider {
  69. \t\t\tmargin-bottom: 30px;
  70. \t\t}
  71. \t\t.slick-dots {
  72. \t\t\tposition: absolute;
  73. \t\t\tbottom: -45px;
  74. \t\t\tdisplay: block;
  75. \t\t\twidth: 100%;
  76. \t\t\tpadding: 0;
  77. \t\t\tlist-style: none;
  78. \t\t\ttext-align: center;
  79. \t\t}
  80. \t\t.slick-dots li {
  81. \t\t\tposition: relative;
  82. \t\t\tdisplay: inline-block;
  83. \t\t\twidth: 20px;
  84. \t\t\theight: 20px;
  85. \t\t\tmargin: 0 5px;
  86. \t\t\tpadding: 0;
  87. \t\t\tcursor: pointer;
  88. \t\t}
  89. \t\t.slick-dots li button {
  90. \t\t\tfont-size: 0;
  91. \t\t\tline-height: 0;
  92. \t\t\tdisplay: block;
  93. \t\t\twidth: 20px;
  94. \t\t\theight: 20px;
  95. \t\t\tpadding: 5px;
  96. \t\t\tcursor: pointer;
  97. \t\t\tcolor: transparent;
  98. \t\t\tborder: 0;
  99. \t\t\toutline: none;
  100. \t\t\tbackground: transparent;
  101. \t\t}
  102. \t\t.slick-dots li button:hover,
  103. \t\t.slick-dots li button:focus {
  104. \t\t\toutline: none;
  105. \t\t}
  106. \t\t.slick-dots li button:hover:before,
  107. \t\t.slick-dots li button:focus:before {
  108. \t\t\topacity: 1;
  109. \t\t}
  110. \t\t.slick-dots li button:before {
  111. \t\t\tcontent: \" \";
  112. \t\t\tline-height: 20px;
  113. \t\t\tposition: absolute;
  114. \t\t\ttop: 0;
  115. \t\t\tleft: 0;
  116. \t\t\twidth: 12px;
  117. \t\t\theight: 12px;
  118. \t\t\ttext-align: center;
  119. \t\t\topacity: .25;
  120. \t\t\tbackground-color: black;
  121. \t\t\tborder-radius: 50%;
  122. \t\t}
  123. \t\t.slick-dots li.slick-active button:before {
  124. \t\t\topacity: .75;
  125. \t\t\tbackground-color: black;
  126. \t\t}
  127. \t\t.slick-dots li button.thumbnail img {
  128. \t\t\twidth: 0;
  129. \t\t\theight: 0;
  130. \t\t}
  131. \t</style>
  132. ";
  133.         
  134.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  135.         
  136.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  137.     }
  138.     // line 99
  139.     public function block_javascript($context, array $blocks = [])
  140.     {
  141.         $macros $this->macros;
  142.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  143.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  144.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  145.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  146.         echo " <script>
  147. \t\t\t        eccube.classCategories = ";
  148.         // line 100
  149.         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.'100$this->source); })()), 100$this->source));
  150.         echo ";
  151. \t\t\t
  152. \t\t\t        // 規格2に選択肢を割り当てる。
  153. \t\t\t        function fnSetClassCategories(form, classcat_id2_selected) {
  154. \t\t\t            var \$form = \$(form);
  155. \t\t\t            var product_id = \$form.find('input[name=product_id]').val();
  156. \t\t\t            var \$sele1 = \$form.find('select[name=classcategory_id1]');
  157. \t\t\t            var \$sele2 = \$form.find('select[name=classcategory_id2]');
  158. \t\t\t            eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  159. \t\t\t        }
  160. \t\t\t
  161. \t\t\t        ";
  162.         // line 111
  163.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue111)) {
  164.             // line 112
  165.             echo "\t\t\t        fnSetClassCategories(
  166. \t\t\t            \$('#form1'), ";
  167.             // line 113
  168.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'113$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue113), "vars", [], "any"falsefalsetrue113), "value", [], "any"falsefalsetrue113), 113$this->source));
  169.             echo "
  170. \t\t\t        );
  171. \t\t\t        ";
  172.         } elseif (twig_get_attribute($this->env$this->source,         // line 115
  173. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue115)) {
  174.             // line 116
  175.             echo "\t\t\t        eccube.checkStock(\$('#form1'), ";
  176.             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.'116$this->source); })()), "id", [], "any"falsefalsetrue116), 116$this->source), "html"nulltrue);
  177.             echo ", ";
  178.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'116$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue116), "vars", [], "any"falsefalsetrue116), "value", [], "any"falsefalsetrue116), 116$this->source));
  179.             echo ", null);
  180. \t\t\t        ";
  181.         }
  182.         // line 118
  183.         echo "\t\t\t    </script>
  184. \t <script>
  185. \t\t\t        \$(function() {
  186. \t\t\t            // bfcache無効化
  187. \t\t\t            \$(window).bind('pageshow', function(event) {
  188. \t\t\t                if (event.originalEvent.persisted) {
  189. \t\t\t                    location.reload(true);
  190. \t\t\t                }
  191. \t\t\t            });
  192. \t\t\t
  193. \t\t\t            // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  194. \t\t\t            // img タグに width, height が付与されている.
  195. \t\t\t            // 630px 未満の画面サイズでは縦横比が壊れるための対策
  196. \t\t\t            // see https://github.com/EC-CUBE/ec-cube/pull/5023
  197. \t\t\t            \$('.ec-grid2__cell').hide();
  198. \t\t\t            var removeSize = function () {
  199. \t\t\t                \$('.slide-item').height('');
  200. \t\t\t                \$('.slide-item img')
  201. \t\t\t                    .removeAttr('width')
  202. \t\t\t                    .removeAttr('height')
  203. \t\t\t                    .removeAttr('style');
  204. \t\t\t            };
  205. \t\t\t            var slickInitial = function(slick) {
  206. \t\t\t                \$('.ec-grid2__cell').fadeIn(1500);
  207. \t\t\t                var baseHeight = \$(slick.target).height();
  208. \t\t\t                var baseWidth = \$(slick.target).width();
  209. \t\t\t                var rate = baseWidth / baseHeight;
  210. \t\t\t
  211. \t\t\t                \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  212. \t\t\t                // transform を使用することでCLSの影響を受けないようにする
  213. \t\t\t                \$('.slide-item img')
  214. \t\t\t                    .css(
  215. \t\t\t                        {
  216. \t\t\t                            'transform-origin': 'top left',
  217. \t\t\t                            'transform': 'scaleY(' + rate + ')',
  218. \t\t\t                            'transition': 'transform .1s'
  219. \t\t\t                        }
  220. \t\t\t                    );
  221. \t\t\t                // 正しいサイズに近くなったら属性を解除する
  222. \t\t\t                setTimeout(removeSize, 500);
  223. \t\t\t            };
  224. \t\t\t            \$('.item_visual').on('init', slickInitial);
  225. \t\t\t            // リサイズ時は CLS の影響を受けないため属性を解除する
  226. \t\t\t            \$(window).resize(removeSize);
  227. \t\t\t            \$('.item_visual').slick({
  228. \t\t\t                dots: false,
  229. \t\t\t                arrows: true,
  230. \t                        adaptiveHeight: true,
  231. \t\t\t    prevArrow: '<img src=\"";
  232.         // line 166
  233.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/icon-arrow-prev.png"), "html"nulltrue);
  234.         echo "\" class=\"slide-arrow prev-arrow detail-arrow\">',
  235. \t\t\t    nextArrow: '<img src=\"";
  236.         // line 167
  237.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/icon-arrow-next.png"), "html"nulltrue);
  238.         echo "\" class=\"slide-arrow next-arrow detail-arrow\">',
  239. \t\t   
  240. \t\t\t                responsive: [{
  241. \t\t\t                    breakpoint: 768,
  242. \t\t\t                    settings: {
  243. \t\t\t                        arrows: true,
  244. \t\t\t                    }
  245. \t\t\t                }]
  246. \t\t\t            });
  247. \t\t\t
  248. \t\t\t            \$('.slideThumb').on('click', function() {
  249. \t\t\t                var index = \$(this).attr('data-index');
  250. \t\t\t                \$('.item_visual').slick('slickGoTo', index, false);
  251. \t\t\t            })
  252. \t\t\t        });
  253. \t\t\t    </script>
  254. \t <script>
  255. \t\t\t        \$(function() {
  256. \t\t\t            \$('.add-cart').on('click', function(event) {
  257. \t\t\t                ";
  258.         // line 186
  259.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue186)) {
  260.             // line 187
  261.             echo "\t\t\t                // 規格1フォームの必須チェック
  262. \t\t\t                if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  263. \t\t\t                    \$('#classcategory_id1')[0].setCustomValidity('";
  264.             // line 189
  265.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  266.             echo "');
  267. \t\t\t                    return true;
  268. \t\t\t                } else {
  269. \t\t\t                    \$('#classcategory_id1')[0].setCustomValidity('');
  270. \t\t\t                }
  271. \t\t\t                ";
  272.         }
  273.         // line 195
  274.         echo "\t\t\t
  275. \t\t\t                ";
  276.         // line 196
  277.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue196)) {
  278.             // line 197
  279.             echo "\t\t\t                // 規格2フォームの必須チェック
  280. \t\t\t                if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  281. \t\t\t                    \$('#classcategory_id2')[0].setCustomValidity('";
  282.             // line 199
  283.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  284.             echo "');
  285. \t\t\t                    return true;
  286. \t\t\t                } else {
  287. \t\t\t                    \$('#classcategory_id2')[0].setCustomValidity('');
  288. \t\t\t                }
  289. \t\t\t                ";
  290.         }
  291.         // line 205
  292.         echo "\t\t\t
  293. \t\t\t                // 個数フォームのチェック
  294. \t\t\t                if (\$('#quantity').val() < 1) {
  295. \t\t\t                    \$('#quantity')[0].setCustomValidity('";
  296.         // line 208
  297.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  298.         echo "');
  299. \t\t\t                    return true;
  300. \t\t\t                } else {
  301. \t\t\t                    \$('#quantity')[0].setCustomValidity('');
  302. \t\t\t                }
  303. \t\t\t
  304. \t\t\t                event.preventDefault();
  305. \t\t\t                \$form = \$('#form1');
  306. \t\t\t                \$.ajax({
  307. \t\t\t                    url: \$form.attr('action'),
  308. \t\t\t                    type: \$form.attr('method'),
  309. \t\t\t                    data: \$form.serialize(),
  310. \t\t\t                    dataType: 'json',
  311. \t\t\t                    beforeSend: function(xhr, settings) {
  312. \t\t\t                        // Buttonを無効にする
  313. \t\t\t                        \$('.add-cart').prop('disabled', true);
  314. \t\t\t                    }
  315. \t\t\t                }).done(function(data) {
  316. \t\t\t                    // レスポンス内のメッセージをalertで表示
  317. \t\t\t                    \$.each(data.messages, function() {
  318. \t\t\t                        \$('#ec-modal-header').text(this);
  319. \t\t\t                    });
  320. \t\t\t
  321. \t\t\t                    \$('.ec-modal').show()
  322. \t\t\t
  323. \t\t\t                    // カートブロックを更新する
  324. \t\t\t                    \$.ajax({
  325. \t\t\t                        url: \"";
  326.         // line 235
  327.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  328.         echo "\",
  329. \t\t\t                        type: 'GET',
  330. \t\t\t                        dataType: 'html'
  331. \t\t\t                    }).done(function(html) {
  332. \t\t\t                        \$('.ec-headerRole__cart').html(html);
  333. \t\t\t                    });
  334. \t\t\t                }).fail(function(data) {
  335. \t\t\t                    alert('";
  336.         // line 242
  337.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  338.         echo "');
  339. \t\t\t                }).always(function(data) {
  340. \t\t\t                    // Buttonを有効にする
  341. \t\t\t                    \$('.add-cart').prop('disabled', false);
  342. \t\t\t                });
  343. \t\t\t            });
  344. \t\t\t        });
  345. \t\t\t
  346. \t\t\t        \$('.ec-modal-wrap').on('click', function(e) {
  347. \t\t\t            // モーダル内の処理は外側にバブリングさせない
  348. \t\t\t            e.stopPropagation();
  349. \t\t\t        });
  350. \t\t\t        \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  351. \t\t\t            \$('.ec-modal').hide()
  352. \t\t\t        });
  353. \t\t\t    </script>
  354. \t <script type=\"application/ld+json\">
  355. \t\t\t    {
  356. \t\t\t        \"@context\": \"https://schema.org/\",
  357. \t\t\t        \"@type\": \"Product\",
  358. \t\t\t        \"name\": \"";
  359.         // line 262
  360.         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.'262$this->source); })()), "name", [], "any"falsefalsetrue262), 262$this->source), "html"nulltrue);
  361.         echo "\",
  362. \t\t\t        \"image\": [
  363. \t\t\t            ";
  364.         // line 264
  365.         $context['_parent'] = $context;
  366.         $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.'264$this->source); })()), "ProductImage", [], "any"falsefalsetrue264));
  367.         $context['_iterated'] = false;
  368.         $context['loop'] = [
  369.           'parent' => $context['_parent'],
  370.           'index0' => 0,
  371.           'index'  => 1,
  372.           'first'  => true,
  373.         ];
  374.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  375.             $length count($context['_seq']);
  376.             $context['loop']['revindex0'] = $length 1;
  377.             $context['loop']['revindex'] = $length;
  378.             $context['loop']['length'] = $length;
  379.             $context['loop']['last'] = === $length;
  380.         }
  381.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  382.             // line 265
  383.             echo "\t\t\t                \"";
  384.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'265$this->source); })()), "request", [], "any"falsefalsetrue265), "schemeAndHttpHost", [], "any"falsefalsetrue265), 265$this->source), "html"nulltrue);
  385.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 265$this->source), "save_image"), "html"nulltrue);
  386.             echo "\"";
  387.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue265)) {
  388.                 echo ",";
  389.             }
  390.             // line 266
  391.             echo "\t\t\t
  392. \t\t\t            ";
  393.             $context['_iterated'] = true;
  394.             ++$context['loop']['index0'];
  395.             ++$context['loop']['index'];
  396.             $context['loop']['first'] = false;
  397.             if (isset($context['loop']['length'])) {
  398.                 --$context['loop']['revindex0'];
  399.                 --$context['loop']['revindex'];
  400.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  401.             }
  402.         }
  403.         if (!$context['_iterated']) {
  404.             // line 268
  405.             echo "\t\t\t                \"";
  406.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'268$this->source); })()), "request", [], "any"falsefalsetrue268), "schemeAndHttpHost", [], "any"falsefalsetrue268), 268$this->source), "html"nulltrue);
  407.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  408.             echo "\"
  409. \t\t\t            ";
  410.         }
  411.         $_parent $context['_parent'];
  412.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  413.         $context array_intersect_key($context$_parent) + $_parent;
  414.         // line 270
  415.         echo "\t\t\t        ],
  416. \t\t\t        \"description\": \"";
  417.         // line 271
  418.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruetrue271)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsetrue271), 271$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.'271$this->source); })()), "description_detail", [], "any"falsefalsetrue271), 271$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.'271$this->source); })()), "description_detail", [], "any"falsefalsetrue271))), ["
  419. => """ " => ""]), 0300), "html"nulltrue);
  420.         echo "\",
  421. \t\t\t        ";
  422.         // line 272
  423.         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.'272$this->source); })()), "code_min", [], "any"falsefalsetrue272)) {
  424.             // line 273
  425.             echo "\t\t\t        \"sku\": \"";
  426.             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.'273$this->source); })()), "code_min", [], "any"falsefalsetrue273), 273$this->source), "html"nulltrue);
  427.             echo "\",
  428. \t\t\t        ";
  429.         }
  430.         // line 275
  431.         echo "\t\t\t        \"offers\": {
  432. \t\t\t            \"@type\": \"Offer\",
  433. \t\t\t            \"url\": \"";
  434.         // line 277
  435.         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.'277$this->source); })()), "id", [], "any"falsefalsetrue277)]), "html"nulltrue);
  436.         echo "\",
  437. \t\t\t            \"priceCurrency\": \"";
  438.         // line 278
  439.         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.'278$this->source); })()), "currency", [], "any"falsefalsetrue278), 278$this->source), "html"nulltrue);
  440.         echo "\",
  441. \t\t\t            \"price\": ";
  442.         // line 279
  443.         ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'279$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue279)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'279$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue279), "html"nulltrue))) : (print (0)));
  444.         echo ",
  445. \t\t\t            \"availability\": \"";
  446.         // line 280
  447.         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.'280$this->source); })()), "stock_find", [], "any"falsefalsetrue280)) ? ("InStock") : ("OutOfStock"));
  448.         echo "\"
  449. \t\t\t        }
  450. \t\t\t    }
  451. \t\t\t    </script>
  452. ";
  453.         
  454.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  455.         
  456.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  457.     }
  458.     // line 286
  459.     public function block_main($context, array $blocks = [])
  460.     {
  461.         $macros $this->macros;
  462.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  463.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  464.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  465.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  466.         // line 287
  467.         echo "\t<div class=\"ec-productRole\">
  468. \t\t<ol class=\"breadcrumb\" itemscope itemtype=\"https://schema.org/BreadcrumbList\">
  469. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  470. \t\t\t\t<a itemprop=\"item\" href=\"/\">
  471. \t\t\t\t\t<span itemprop=\"name\">TOP</span>
  472. \t\t\t\t</a>
  473. \t\t\t\t<meta itemprop=\"position\" content=\"1\"/>
  474. \t\t\t</li>
  475. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  476. \t\t\t\t\t\t";
  477.         // line 297
  478.         echo "\t\t\t\t<a itemprop=\"item\" href=\"";
  479.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  480.         echo "?category_id=";
  481.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'297$this->source); })()), "ProductCategories", [], "any"falsefalsetrue297), 0, [], "array"falsefalsetrue297), "Category", [], "any"falsefalsetrue297), "id", [], "any"falsefalsetrue297), 297$this->source), "html"nulltrue);
  482.         echo "\">
  483. \t\t\t\t\t<span itemprop=\"name\">";
  484.         // line 298
  485.         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'298$this->source); })()), "ProductCategories", [], "any"falsefalsetrue298), 0, [], "array"falsefalsetrue298), "Category", [], "any"falsefalsetrue298), "name", [], "any"falsefalsetrue298), 298$this->source), "html"nulltrue);
  486.         echo "</span>
  487. \t\t\t\t</a>
  488. \t\t\t\t<meta itemprop=\"position\" content=\"2\"/>
  489. \t\t\t</li>
  490. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  491. \t\t\t\t";
  492.         // line 304
  493.         echo "\t\t\t\t\t<span itemprop=\"name\">";
  494.         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.'304$this->source); })()), "name", [], "any"falsefalsetrue304), 304$this->source), "html"nulltrue);
  495.         echo "</span>
  496. \t\t\t\t";
  497.         // line 306
  498.         echo "\t\t\t\t<meta itemprop=\"position\" content=\"3\"/>
  499. \t\t\t</li>
  500. \t\t\t";
  501.         // line 314
  502.         echo "\t\t</ol>
  503. \t\t<div class=\"ec-grid2\">
  504. \t\t\t<div class=\"ec-grid2__cell\">
  505. \t\t\t\t<div class=\"ec-sliderItemRole\">
  506. \t\t\t\t\t<div class=\"item_visual\">
  507. \t\t\t\t\t\t";
  508.         // line 320
  509.         $context['_parent'] = $context;
  510.         $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.'320$this->source); })()), "ProductImage", [], "any"falsefalsetrue320));
  511.         $context['_iterated'] = false;
  512.         $context['loop'] = [
  513.           'parent' => $context['_parent'],
  514.           'index0' => 0,
  515.           'index'  => 1,
  516.           'first'  => true,
  517.         ];
  518.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  519.             $length count($context['_seq']);
  520.             $context['loop']['revindex0'] = $length 1;
  521.             $context['loop']['revindex'] = $length;
  522.             $context['loop']['length'] = $length;
  523.             $context['loop']['last'] = === $length;
  524.         }
  525.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  526.             // line 321
  527.             echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
  528.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 321$this->source), "save_image"), "html"nulltrue);
  529.             echo "\" alt=\"";
  530.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue321)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'321$this->source); })()), "name", [], "any"falsefalsetrue321), "html"nulltrue))) : (print ("")));
  531.             echo "\" width=\"550\" height=\"550\" ";
  532.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsetrue321) > 1)) {
  533.                 echo " loading=\"lazy\" ";
  534.             }
  535.             echo "></div>
  536. \t\t\t\t\t\t";
  537.             $context['_iterated'] = true;
  538.             ++$context['loop']['index0'];
  539.             ++$context['loop']['index'];
  540.             $context['loop']['first'] = false;
  541.             if (isset($context['loop']['length'])) {
  542.                 --$context['loop']['revindex0'];
  543.                 --$context['loop']['revindex'];
  544.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  545.             }
  546.         }
  547.         if (!$context['_iterated']) {
  548.             // line 323
  549.             echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
  550.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  551.             echo "\" alt=\"";
  552.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue323)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'323$this->source); })()), "name", [], "any"falsefalsetrue323), "html"nulltrue))) : (print ("")));
  553.             echo "\" width=\"550\" height=\"550\"></div>
  554. \t\t\t\t\t\t";
  555.         }
  556.         $_parent $context['_parent'];
  557.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  558.         $context array_intersect_key($context$_parent) + $_parent;
  559.         // line 325
  560.         echo "\t\t\t\t\t</div>
  561. \t\t\t\t\t<div class=\"item_nav\">
  562. \t\t\t\t\t\t";
  563.         // line 327
  564.         $context['_parent'] = $context;
  565.         $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.'327$this->source); })()), "ProductImage", [], "any"falsefalsetrue327));
  566.         $context['loop'] = [
  567.           'parent' => $context['_parent'],
  568.           'index0' => 0,
  569.           'index'  => 1,
  570.           'first'  => true,
  571.         ];
  572.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  573.             $length count($context['_seq']);
  574.             $context['loop']['revindex0'] = $length 1;
  575.             $context['loop']['revindex'] = $length;
  576.             $context['loop']['length'] = $length;
  577.             $context['loop']['last'] = === $length;
  578.         }
  579.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  580.             // line 328
  581.             echo "\t\t\t\t\t\t\t<div class=\"slideThumb\" data-index=\"";
  582.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsetrue328), 328$this->source), "html"nulltrue);
  583.             echo "\"><img src=\"";
  584.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 328$this->source), "save_image"), "html"nulltrue);
  585.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
  586. \t\t\t\t\t\t";
  587.             ++$context['loop']['index0'];
  588.             ++$context['loop']['index'];
  589.             $context['loop']['first'] = false;
  590.             if (isset($context['loop']['length'])) {
  591.                 --$context['loop']['revindex0'];
  592.                 --$context['loop']['revindex'];
  593.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  594.             }
  595.         }
  596.         $_parent $context['_parent'];
  597.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  598.         $context array_intersect_key($context$_parent) + $_parent;
  599.         // line 330
  600.         echo "\t\t\t\t\t</div>
  601. \t\t\t\t</div>
  602. \t\t\t</div>
  603. \t\t\t<div class=\"ec-grid2__cell\">
  604. \t\t\t\t<div
  605. \t\t\t\t\tclass=\"ec-productRole__profile ec-productRole__btn-relative\">
  606. \t\t\t\t\t";
  607.         // line 337
  608.         echo "\t\t\t\t\t";
  609.         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.'337$this->source); })()), "option_favorite_product", [], "any"falsefalsetrue337)) {
  610.             // line 338
  611.             echo "\t\t\t\t\t\t<div class=\"ec-productRole__btn-wrapper\">
  612. \t\t\t\t\t\t\t<form action=\"";
  613.             // line 339
  614.             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.'339$this->source); })()), "id", [], "any"falsefalsetrue339)]), "html"nulltrue);
  615.             echo "\" method=\"post\">
  616. \t\t\t\t\t\t\t\t<div class=\"ec-productRole__btn favorite-btn-wrapper\">
  617. \t\t\t\t\t\t\t\t\t";
  618.             // line 341
  619.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'341$this->source); })()) == false)) {
  620.                 // line 342
  621.                 echo "\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--favorite\">
  622. \t\t\t\t\t\t\t\t\t\t\t <img src=\"";
  623.                 // line 343
  624.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/Icon-heart.svg"), "html"nulltrue);
  625.                 echo "\" alt=\"お気に入りに追加\">
  626. \t\t\t\t\t\t\t\t\t\t</button>
  627. \t\t\t\t\t\t\t\t\t";
  628.             } else {
  629.                 // line 346
  630.                 echo "\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--favorite\" disabled=\"disabled\">
  631. \t\t\t\t\t\t\t\t\t\t\t <img src=\"";
  632.                 // line 347
  633.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/img/Icon-heart-remove.svg"), "html"nulltrue);
  634.                 echo "\" alt=\"お気に入りから削除\">
  635. \t\t\t\t\t\t\t\t\t\t</button>
  636. \t\t\t\t\t\t\t\t\t";
  637.             }
  638.             // line 350
  639.             echo "\t\t\t\t\t\t\t\t</div>
  640. \t\t\t\t\t\t\t</form>
  641. \t\t\t\t\t\t</div>
  642. \t\t\t\t\t";
  643.         }
  644.         // line 354
  645.         echo "\t\t\t\t\t";
  646.         // line 355
  647.         echo "\t\t\t\t\t<div class=\"ec-productRole__title\">
  648. \t\t\t\t\t\t<h2 class=\"ec-headingTitle\">";
  649.         // line 356
  650.         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.'356$this->source); })()), "name", [], "any"falsefalsetrue356), 356$this->source), "html"nulltrue);
  651.         echo "</h2>
  652. \t\t\t\t\t</div>
  653. \t\t\t\t\t";
  654.         // line 359
  655.         echo "\t\t\t\t\t<ul class=\"ec-productRole__tags\">
  656. \t\t\t\t\t\t";
  657.         // line 360
  658.         $context['_parent'] = $context;
  659.         $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.'360$this->source); })()), "Tags", [], "any"falsefalsetrue360));
  660.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  661.             // line 361
  662.             echo "\t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_";
  663.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsetrue361), 361$this->source), "html"nulltrue);
  664.             echo "\">";
  665.             echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed($context["Tag"], 361$this->source), "html"nulltrue);
  666.             echo "</li>
  667. \t\t\t\t\t\t";
  668.         }
  669.         $_parent $context['_parent'];
  670.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  671.         $context array_intersect_key($context$_parent) + $_parent;
  672.         // line 363
  673.         echo "\t\t\t\t\t</ul>
  674. \t\t\t\t\t";
  675.         // line 365
  676.         echo "\t\t\t\t\t";
  677.         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.'365$this->source); })()), "hasProductClass", [], "any"falsefalsetrue365)) {
  678.             // line 366
  679.             echo "<div class=\"ec-productRole__priceRegular\">
  680. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            ";
  681.             // line 367
  682.             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.'367$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue367)) && (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'367$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue367) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'367$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue367)))) {
  683.                 // line 368
  684.                 echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularPrice\">";
  685.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  686.                 echo ":<span class=\"price01-default\">";
  687.                 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.'368$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue368), 368$this->source)), "html"nulltrue);
  688.                 echo "</span></span>
  689. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularTax\">(";
  690.                 // line 369
  691.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  692.                 echo ")</span>
  693. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            ";
  694.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 370
  695. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'370$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue370)) &&  !(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.'370$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue370)))) {
  696.                 // line 371
  697.                 echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularPrice\">";
  698.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  699.                 echo ":<span class=\"price01-default\">";
  700.                 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.'371$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue371), 371$this->source)), "html"nulltrue);
  701.                 echo "~ ";
  702.                 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.'371$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue371), 371$this->source)), "html"nulltrue);
  703.                 echo "</span></span>
  704. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularTax\">(";
  705.                 // line 372
  706.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  707.                 echo ")</span>
  708. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            ";
  709.             }
  710.             // line 374
  711.             echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        </div>
  712. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    ";
  713.         } else {
  714.             // line 376
  715.             echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        ";
  716.             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.'376$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue376))) {
  717.                 // line 377
  718.                 echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            <span class=\"ec-productRole__priceRegularPrice\">";
  719.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  720.                 echo ":";
  721.                 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.'377$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue377), 377$this->source)), "html"nulltrue);
  722.                 echo "</span>
  723. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            <span class=\"ec-productRole__priceRegularTax\">(";
  724.                 // line 378
  725.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  726.                 echo ")</span>
  727. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        ";
  728.             }
  729.             // line 380
  730.             echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    ";
  731.         }
  732.         // line 381
  733.         echo "\t\t\t\t\t";
  734.         // line 382
  735.         echo "\t\t\t\t\t\t<div class=\"ec-productRole__price\"> ";
  736.         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.'382$this->source); })()), "hasProductClass", [], "any"falsefalsetrue382)) {
  737.             // line 383
  738.             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.'383$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue383) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'383$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue383))) {
  739.                 // line 384
  740.                 echo "\t\t\t\t\t\t\t\t<div class=\"ec-price\">
  741. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  742.                 // line 385
  743.                 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.'385$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue385), 385$this->source)), "html"nulltrue);
  744.                 echo "</span>
  745. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">(";
  746.                 // line 386
  747.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  748.                 echo ")</span>
  749. \t\t\t\t\t\t\t\t</div>
  750. \t\t\t\t\t\t\t";
  751.             } else {
  752.                 // line 389
  753.                 echo "\t\t\t\t\t\t\t\t<div class=\"ec-price\">
  754. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  755.                 // line 390
  756.                 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.'390$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue390), 390$this->source)), "html"nulltrue);
  757.                 echo "
  758. \t\t\t\t\t\t\t\t\t\t~
  759. \t\t\t\t\t\t\t\t\t\t";
  760.                 // line 392
  761.                 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.'392$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue392), 392$this->source)), "html"nulltrue);
  762.                 echo "</span>
  763. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">(";
  764.                 // line 393
  765.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  766.                 echo ")</span>
  767. \t\t\t\t\t\t\t\t</div>
  768. \t\t\t\t\t\t\t";
  769.             }
  770.             // line 396
  771.             echo "\t\t\t\t\t\t";
  772.         } else {
  773.             // line 397
  774.             echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
  775. \t\t\t\t\t\t\t\t<span class=\"ec-price__price\">";
  776.             // line 398
  777.             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.'398$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue398), 398$this->source)), "html"nulltrue);
  778.             echo "</span>
  779. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">(";
  780.             // line 399
  781.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  782.             echo ")</span>
  783. \t\t\t\t\t\t\t</div>
  784. \t\t\t\t\t\t";
  785.         }
  786.         // line 402
  787.         echo "\t\t\t\t\t</div>
  788. \t\t\t\t\t";
  789.         // line 404
  790.         echo "\t\t\t\t\t";
  791.         // line 409
  792.         echo "\t\t\t\t\t";
  793.         // line 410
  794.         echo "\t\t\t\t\t";
  795.         // line 425
  796.         echo "\t\t\t\t\t\t<form action=\"";
  797.         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.'425$this->source); })()), "id", [], "any"falsefalsetrue425)]), "html"nulltrue);
  798.         echo "\" method=\"post\" id=\"form1\" name=\"form1\"> ";
  799.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'425$this->source); })()), "stock_find", [], "any"falsefalsetrue425)) {
  800.             // line 426
  801.             echo "\t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
  802. \t\t\t\t\t\t\t\t";
  803.             // line 427
  804.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue427)) {
  805.                 // line 428
  806.                 echo "\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  807. \t\t\t\t\t\t\t\t\t\t";
  808.                 // line 429
  809.                 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.'429$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue429), 429$this->source), 'row');
  810.                 echo "
  811. \t\t\t\t\t\t\t\t\t\t";
  812.                 // line 430
  813.                 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.'430$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue430), 430$this->source), 'errors');
  814.                 echo "
  815. \t\t\t\t\t\t\t\t\t</div>
  816. \t\t\t\t\t\t\t\t\t";
  817.                 // line 432
  818.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue432)) {
  819.                     // line 433
  820.                     echo "\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  821. \t\t\t\t\t\t\t\t\t\t\t";
  822.                     // line 434
  823.                     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.'434$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue434), 434$this->source), 'row');
  824.                     echo "
  825. \t\t\t\t\t\t\t\t\t\t\t";
  826.                     // line 435
  827.                     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.'435$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue435), 435$this->source), 'errors');
  828.                     echo "
  829. \t\t\t\t\t\t\t\t\t\t</div>
  830. \t\t\t\t\t\t\t\t\t";
  831.                 }
  832.                 // line 438
  833.                 echo "\t\t\t\t\t\t\t\t";
  834.             }
  835.             // line 439
  836.             echo "\t\t\t\t\t\t\t\t<div class=\"ec-numberInput\">
  837. \t\t\t\t\t\t\t\t\t<span>";
  838.             // line 440
  839.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html"nulltrue);
  840.             echo "</span>
  841. \t\t\t\t\t\t\t\t\t";
  842.             // line 441
  843.             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.'441$this->source); })()), "quantity", [], "any"falsefalsetrue441), 441$this->source), 'widget');
  844.             echo "
  845. \t\t\t\t\t\t\t\t\t";
  846.             // line 442
  847.             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.'442$this->source); })()), "quantity", [], "any"falsefalsetrue442), 442$this->source), 'errors');
  848.             echo "
  849. \t\t\t\t\t\t\t\t</div>
  850. \t\t\t\t\t\t\t</div>
  851. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  852. \t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  853. \t\t\t\t\t\t\t\t\t";
  854.             // line 447
  855.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  856.             echo "
  857. \t\t\t\t\t\t\t\t</button>
  858. \t\t\t\t\t\t\t</div>
  859. \t\t\t\t\t\t";
  860.         } else {
  861.             // line 451
  862.             echo "\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  863. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  864. \t\t\t\t\t\t\t\t\t";
  865.             // line 453
  866.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  867.             echo "
  868. \t\t\t\t\t\t\t\t</button>
  869. \t\t\t\t\t\t\t</div>
  870. \t\t\t\t\t\t";
  871.         }
  872.         // line 457
  873.         echo "\t\t\t\t\t\t";
  874.         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.'457$this->source); })()), 457$this->source), 'rest');
  875.         echo "
  876. \t\t\t\t\t</form>
  877. \t\t\t\t\t<div class=\"ec-modal\">
  878. \t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  879. \t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  880. \t\t\t\t\t\t\t\t<span class=\"ec-modal-close\">
  881. \t\t\t\t\t\t\t\t\t<span class=\"ec-icon\"><img src=\"";
  882.         // line 463
  883.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  884.         echo "\" alt=\"\"/></span>
  885. \t\t\t\t\t\t\t\t</span>
  886. \t\t\t\t\t\t\t\t<div id=\"ec-modal-header\" class=\"text-center\">";
  887.         // line 465
  888.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  889.         echo "</div>
  890. \t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  891. \t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  892. \t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">";
  893.         // line 468
  894.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  895.         echo "</span>
  896. \t\t\t\t\t\t\t\t\t\t<a href=\"";
  897.         // line 469
  898.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  899.         echo "\" class=\"ec-inlineBtn--action\">";
  900.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  901.         echo "</a>
  902. \t\t\t\t\t\t\t\t\t</div>
  903. \t\t\t\t\t\t\t\t</div>
  904. \t\t\t\t\t\t\t</div>
  905. \t\t\t\t\t\t</div>
  906. \t\t\t\t\t</div>
  907. \t\t\t\t\t";
  908.         // line 490
  909.         echo "\t\t\t\t\t<div class=\"ec-productRole__description\">";
  910.         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.'490$this->source); })()), "description_detail", [], "any"falsefalsetrue490), 490$this->source));
  911.         echo "
  912. \t\t\t\t\t</div>
  913. \t\t\t\t</div>
  914. \t\t\t</div>
  915. \t\t</div>
  916. \t\t";
  917.         // line 495
  918.         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.'495$this->source); })()), "freearea", [], "any"falsefalsetrue495)) {
  919.             // line 496
  920.             echo "\t\t\t<div class=\"ec-productRole__description\">
  921. \t\t\t\t";
  922.             // line 497
  923.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$contexttwig_template_from_string($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'497$this->source); })()), "freearea", [], "any"falsefalsetrue497), 497$this->source)), array(), truefalsetrue);
  924.             echo "
  925. \t\t\t</div>
  926. \t\t";
  927.         }
  928.         // line 500
  929.         echo "\t</div>
  930. ";
  931.         
  932.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  933.         
  934.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  935.     }
  936.     public function getTemplateName()
  937.     {
  938.         return "Product/detail.twig";
  939.     }
  940.     public function isTraitable()
  941.     {
  942.         return false;
  943.     }
  944.     public function getDebugInfo()
  945.     {
  946.         return array (  964 => 500,  958 => 497,  955 => 496,  953 => 495,  944 => 490,  933 => 469,  929 => 468,  923 => 465,  918 => 463,  908 => 457,  901 => 453,  897 => 451,  890 => 447,  882 => 442,  878 => 441,  874 => 440,  871 => 439,  868 => 438,  862 => 435,  858 => 434,  855 => 433,  853 => 432,  848 => 430,  844 => 429,  841 => 428,  839 => 427,  836 => 426,  831 => 425,  829 => 410,  827 => 409,  825 => 404,  822 => 402,  816 => 399,  812 => 398,  809 => 397,  806 => 396,  800 => 393,  796 => 392,  791 => 390,  788 => 389,  782 => 386,  778 => 385,  775 => 384,  773 => 383,  770 => 382,  768 => 381,  765 => 380,  760 => 378,  753 => 377,  750 => 376,  746 => 374,  741 => 372,  732 => 371,  730 => 370,  726 => 369,  719 => 368,  717 => 367,  714 => 366,  711 => 365,  708 => 363,  697 => 361,  693 => 360,  690 => 359,  685 => 356,  682 => 355,  680 => 354,  674 => 350,  668 => 347,  665 => 346,  659 => 343,  656 => 342,  654 => 341,  649 => 339,  646 => 338,  643 => 337,  635 => 330,  616 => 328,  599 => 327,  595 => 325,  584 => 323,  562 => 321,  544 => 320,  536 => 314,  532 => 306,  527 => 304,  519 => 298,  512 => 297,  501 => 287,  491 => 286,  476 => 280,  472 => 279,  468 => 278,  464 => 277,  460 => 275,  454 => 273,  452 => 272,  447 => 271,  444 => 270,  434 => 268,  420 => 266,  412 => 265,  394 => 264,  389 => 262,  366 => 242,  356 => 235,  326 => 208,  321 => 205,  312 => 199,  308 => 197,  306 => 196,  303 => 195,  294 => 189,  290 => 187,  288 => 186,  266 => 167,  262 => 166,  212 => 118,  204 => 116,  202 => 115,  197 => 113,  194 => 112,  192 => 111,  178 => 100,  166 => 99,  75 => 16,  65 => 15,  54 => 11,  52 => 13,  39 => 11,);
  947.     }
  948.     public function getSourceContext()
  949.     {
  950.         return new Source("{#
  951. This file is part of EC-CUBE
  952. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  953. http://www.ec-cube.co.jp/
  954. For the full copyright and license information, please view the LICENSE
  955. file that was distributed with this source code.
  956. #}
  957. {% extends 'default_frame.twig' %}
  958. {% set body_class = 'product_page' %}
  959. {% block stylesheet %}
  960. \t<style>
  961. \t.ec-price .ec-price__price {
  962.     margin-top: 0!important;
  963. }
  964. span.ec-productRole__priceRegularPrice {
  965.     text-decoration: line-through;
  966. }
  967. \t\t.slick-slider {
  968. \t\t\tmargin-bottom: 30px;
  969. \t\t}
  970. \t\t.slick-dots {
  971. \t\t\tposition: absolute;
  972. \t\t\tbottom: -45px;
  973. \t\t\tdisplay: block;
  974. \t\t\twidth: 100%;
  975. \t\t\tpadding: 0;
  976. \t\t\tlist-style: none;
  977. \t\t\ttext-align: center;
  978. \t\t}
  979. \t\t.slick-dots li {
  980. \t\t\tposition: relative;
  981. \t\t\tdisplay: inline-block;
  982. \t\t\twidth: 20px;
  983. \t\t\theight: 20px;
  984. \t\t\tmargin: 0 5px;
  985. \t\t\tpadding: 0;
  986. \t\t\tcursor: pointer;
  987. \t\t}
  988. \t\t.slick-dots li button {
  989. \t\t\tfont-size: 0;
  990. \t\t\tline-height: 0;
  991. \t\t\tdisplay: block;
  992. \t\t\twidth: 20px;
  993. \t\t\theight: 20px;
  994. \t\t\tpadding: 5px;
  995. \t\t\tcursor: pointer;
  996. \t\t\tcolor: transparent;
  997. \t\t\tborder: 0;
  998. \t\t\toutline: none;
  999. \t\t\tbackground: transparent;
  1000. \t\t}
  1001. \t\t.slick-dots li button:hover,
  1002. \t\t.slick-dots li button:focus {
  1003. \t\t\toutline: none;
  1004. \t\t}
  1005. \t\t.slick-dots li button:hover:before,
  1006. \t\t.slick-dots li button:focus:before {
  1007. \t\t\topacity: 1;
  1008. \t\t}
  1009. \t\t.slick-dots li button:before {
  1010. \t\t\tcontent: \" \";
  1011. \t\t\tline-height: 20px;
  1012. \t\t\tposition: absolute;
  1013. \t\t\ttop: 0;
  1014. \t\t\tleft: 0;
  1015. \t\t\twidth: 12px;
  1016. \t\t\theight: 12px;
  1017. \t\t\ttext-align: center;
  1018. \t\t\topacity: .25;
  1019. \t\t\tbackground-color: black;
  1020. \t\t\tborder-radius: 50%;
  1021. \t\t}
  1022. \t\t.slick-dots li.slick-active button:before {
  1023. \t\t\topacity: .75;
  1024. \t\t\tbackground-color: black;
  1025. \t\t}
  1026. \t\t.slick-dots li button.thumbnail img {
  1027. \t\t\twidth: 0;
  1028. \t\t\theight: 0;
  1029. \t\t}
  1030. \t</style>
  1031. {% endblock %}
  1032. {% block javascript %} <script>
  1033. \t\t\t        eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1034. \t\t\t
  1035. \t\t\t        // 規格2に選択肢を割り当てる。
  1036. \t\t\t        function fnSetClassCategories(form, classcat_id2_selected) {
  1037. \t\t\t            var \$form = \$(form);
  1038. \t\t\t            var product_id = \$form.find('input[name=product_id]').val();
  1039. \t\t\t            var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1040. \t\t\t            var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1041. \t\t\t            eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1042. \t\t\t        }
  1043. \t\t\t
  1044. \t\t\t        {% if form.classcategory_id2 is defined %}
  1045. \t\t\t        fnSetClassCategories(
  1046. \t\t\t            \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1047. \t\t\t        );
  1048. \t\t\t        {% elseif form.classcategory_id1 is defined %}
  1049. \t\t\t        eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1050. \t\t\t        {% endif %}
  1051. \t\t\t    </script>
  1052. \t <script>
  1053. \t\t\t        \$(function() {
  1054. \t\t\t            // bfcache無効化
  1055. \t\t\t            \$(window).bind('pageshow', function(event) {
  1056. \t\t\t                if (event.originalEvent.persisted) {
  1057. \t\t\t                    location.reload(true);
  1058. \t\t\t                }
  1059. \t\t\t            });
  1060. \t\t\t
  1061. \t\t\t            // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1062. \t\t\t            // img タグに width, height が付与されている.
  1063. \t\t\t            // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1064. \t\t\t            // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1065. \t\t\t            \$('.ec-grid2__cell').hide();
  1066. \t\t\t            var removeSize = function () {
  1067. \t\t\t                \$('.slide-item').height('');
  1068. \t\t\t                \$('.slide-item img')
  1069. \t\t\t                    .removeAttr('width')
  1070. \t\t\t                    .removeAttr('height')
  1071. \t\t\t                    .removeAttr('style');
  1072. \t\t\t            };
  1073. \t\t\t            var slickInitial = function(slick) {
  1074. \t\t\t                \$('.ec-grid2__cell').fadeIn(1500);
  1075. \t\t\t                var baseHeight = \$(slick.target).height();
  1076. \t\t\t                var baseWidth = \$(slick.target).width();
  1077. \t\t\t                var rate = baseWidth / baseHeight;
  1078. \t\t\t
  1079. \t\t\t                \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1080. \t\t\t                // transform を使用することでCLSの影響を受けないようにする
  1081. \t\t\t                \$('.slide-item img')
  1082. \t\t\t                    .css(
  1083. \t\t\t                        {
  1084. \t\t\t                            'transform-origin': 'top left',
  1085. \t\t\t                            'transform': 'scaleY(' + rate + ')',
  1086. \t\t\t                            'transition': 'transform .1s'
  1087. \t\t\t                        }
  1088. \t\t\t                    );
  1089. \t\t\t                // 正しいサイズに近くなったら属性を解除する
  1090. \t\t\t                setTimeout(removeSize, 500);
  1091. \t\t\t            };
  1092. \t\t\t            \$('.item_visual').on('init', slickInitial);
  1093. \t\t\t            // リサイズ時は CLS の影響を受けないため属性を解除する
  1094. \t\t\t            \$(window).resize(removeSize);
  1095. \t\t\t            \$('.item_visual').slick({
  1096. \t\t\t                dots: false,
  1097. \t\t\t                arrows: true,
  1098. \t                        adaptiveHeight: true,
  1099. \t\t\t    prevArrow: '<img src=\"{{ asset('assets/img/icon-arrow-prev.png') }}\" class=\"slide-arrow prev-arrow detail-arrow\">',
  1100. \t\t\t    nextArrow: '<img src=\"{{ asset('assets/img/icon-arrow-next.png') }}\" class=\"slide-arrow next-arrow detail-arrow\">',
  1101. \t\t   
  1102. \t\t\t                responsive: [{
  1103. \t\t\t                    breakpoint: 768,
  1104. \t\t\t                    settings: {
  1105. \t\t\t                        arrows: true,
  1106. \t\t\t                    }
  1107. \t\t\t                }]
  1108. \t\t\t            });
  1109. \t\t\t
  1110. \t\t\t            \$('.slideThumb').on('click', function() {
  1111. \t\t\t                var index = \$(this).attr('data-index');
  1112. \t\t\t                \$('.item_visual').slick('slickGoTo', index, false);
  1113. \t\t\t            })
  1114. \t\t\t        });
  1115. \t\t\t    </script>
  1116. \t <script>
  1117. \t\t\t        \$(function() {
  1118. \t\t\t            \$('.add-cart').on('click', function(event) {
  1119. \t\t\t                {% if form.classcategory_id1 is defined %}
  1120. \t\t\t                // 規格1フォームの必須チェック
  1121. \t\t\t                if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1122. \t\t\t                    \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1123. \t\t\t                    return true;
  1124. \t\t\t                } else {
  1125. \t\t\t                    \$('#classcategory_id1')[0].setCustomValidity('');
  1126. \t\t\t                }
  1127. \t\t\t                {% endif %}
  1128. \t\t\t
  1129. \t\t\t                {% if form.classcategory_id2 is defined %}
  1130. \t\t\t                // 規格2フォームの必須チェック
  1131. \t\t\t                if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1132. \t\t\t                    \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1133. \t\t\t                    return true;
  1134. \t\t\t                } else {
  1135. \t\t\t                    \$('#classcategory_id2')[0].setCustomValidity('');
  1136. \t\t\t                }
  1137. \t\t\t                {% endif %}
  1138. \t\t\t
  1139. \t\t\t                // 個数フォームのチェック
  1140. \t\t\t                if (\$('#quantity').val() < 1) {
  1141. \t\t\t                    \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1142. \t\t\t                    return true;
  1143. \t\t\t                } else {
  1144. \t\t\t                    \$('#quantity')[0].setCustomValidity('');
  1145. \t\t\t                }
  1146. \t\t\t
  1147. \t\t\t                event.preventDefault();
  1148. \t\t\t                \$form = \$('#form1');
  1149. \t\t\t                \$.ajax({
  1150. \t\t\t                    url: \$form.attr('action'),
  1151. \t\t\t                    type: \$form.attr('method'),
  1152. \t\t\t                    data: \$form.serialize(),
  1153. \t\t\t                    dataType: 'json',
  1154. \t\t\t                    beforeSend: function(xhr, settings) {
  1155. \t\t\t                        // Buttonを無効にする
  1156. \t\t\t                        \$('.add-cart').prop('disabled', true);
  1157. \t\t\t                    }
  1158. \t\t\t                }).done(function(data) {
  1159. \t\t\t                    // レスポンス内のメッセージをalertで表示
  1160. \t\t\t                    \$.each(data.messages, function() {
  1161. \t\t\t                        \$('#ec-modal-header').text(this);
  1162. \t\t\t                    });
  1163. \t\t\t
  1164. \t\t\t                    \$('.ec-modal').show()
  1165. \t\t\t
  1166. \t\t\t                    // カートブロックを更新する
  1167. \t\t\t                    \$.ajax({
  1168. \t\t\t                        url: \"{{ url('block_cart') }}\",
  1169. \t\t\t                        type: 'GET',
  1170. \t\t\t                        dataType: 'html'
  1171. \t\t\t                    }).done(function(html) {
  1172. \t\t\t                        \$('.ec-headerRole__cart').html(html);
  1173. \t\t\t                    });
  1174. \t\t\t                }).fail(function(data) {
  1175. \t\t\t                    alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1176. \t\t\t                }).always(function(data) {
  1177. \t\t\t                    // Buttonを有効にする
  1178. \t\t\t                    \$('.add-cart').prop('disabled', false);
  1179. \t\t\t                });
  1180. \t\t\t            });
  1181. \t\t\t        });
  1182. \t\t\t
  1183. \t\t\t        \$('.ec-modal-wrap').on('click', function(e) {
  1184. \t\t\t            // モーダル内の処理は外側にバブリングさせない
  1185. \t\t\t            e.stopPropagation();
  1186. \t\t\t        });
  1187. \t\t\t        \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  1188. \t\t\t            \$('.ec-modal').hide()
  1189. \t\t\t        });
  1190. \t\t\t    </script>
  1191. \t <script type=\"application/ld+json\">
  1192. \t\t\t    {
  1193. \t\t\t        \"@context\": \"https://schema.org/\",
  1194. \t\t\t        \"@type\": \"Product\",
  1195. \t\t\t        \"name\": \"{{ Product.name }}\",
  1196. \t\t\t        \"image\": [
  1197. \t\t\t            {% for img in Product.ProductImage %}
  1198. \t\t\t                \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  1199. \t\t\t
  1200. \t\t\t            {% else %}
  1201. \t\t\t                \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  1202. \t\t\t            {% endfor %}
  1203. \t\t\t        ],
  1204. \t\t\t        \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  1205. \t\t\t        {% if Product.code_min %}
  1206. \t\t\t        \"sku\": \"{{ Product.code_min }}\",
  1207. \t\t\t        {% endif %}
  1208. \t\t\t        \"offers\": {
  1209. \t\t\t            \"@type\": \"Offer\",
  1210. \t\t\t            \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  1211. \t\t\t            \"priceCurrency\": \"{{ eccube_config.currency }}\",
  1212. \t\t\t            \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  1213. \t\t\t            \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  1214. \t\t\t        }
  1215. \t\t\t    }
  1216. \t\t\t    </script>
  1217. {% endblock %}
  1218. {% block main %}
  1219. \t<div class=\"ec-productRole\">
  1220. \t\t<ol class=\"breadcrumb\" itemscope itemtype=\"https://schema.org/BreadcrumbList\">
  1221. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  1222. \t\t\t\t<a itemprop=\"item\" href=\"/\">
  1223. \t\t\t\t\t<span itemprop=\"name\">TOP</span>
  1224. \t\t\t\t</a>
  1225. \t\t\t\t<meta itemprop=\"position\" content=\"1\"/>
  1226. \t\t\t</li>
  1227. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  1228. \t\t\t\t\t\t{# パンくずリストの中でカテゴリーのURLを表示 #}
  1229. \t\t\t\t<a itemprop=\"item\" href=\"{{ url('product_list') }}?category_id={{ Product.ProductCategories[0].Category.id }}\">
  1230. \t\t\t\t\t<span itemprop=\"name\">{{ Product.ProductCategories[0].Category.name }}</span>
  1231. \t\t\t\t</a>
  1232. \t\t\t\t<meta itemprop=\"position\" content=\"2\"/>
  1233. \t\t\t</li>
  1234. \t\t\t<li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  1235. \t\t\t\t{# <a itemprop=\"item\" href=\"{{ url('product_list') }}?category_id={{ Product.ProductCategories[0].Category.id }}\"> #}
  1236. \t\t\t\t\t<span itemprop=\"name\">{{ Product.name }}</span>
  1237. \t\t\t\t{# </a> #}
  1238. \t\t\t\t<meta itemprop=\"position\" content=\"3\"/>
  1239. \t\t\t</li>
  1240. \t\t\t{# <li itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">
  1241. \t\t\t\t\t\t\t\t\t                <a itemprop=\"item\" href=\"カテゴリー2のURL\">
  1242. \t\t\t\t\t\t\t\t\t                    <span itemprop=\"name\">商品詳細</span>
  1243. \t\t\t\t\t\t\t\t\t                </a>
  1244. \t\t\t\t\t\t\t\t\t                <meta itemprop=\"position\" content=\"3\" />
  1245. \t\t\t\t\t\t\t\t\t            </li> #}
  1246. \t\t</ol>
  1247. \t\t<div class=\"ec-grid2\">
  1248. \t\t\t<div class=\"ec-grid2__cell\">
  1249. \t\t\t\t<div class=\"ec-sliderItemRole\">
  1250. \t\t\t\t\t<div class=\"item_visual\">
  1251. \t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
  1252. \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>
  1253. \t\t\t\t\t\t{% else %}
  1254. \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>
  1255. \t\t\t\t\t\t{% endfor %}
  1256. \t\t\t\t\t</div>
  1257. \t\t\t\t\t<div class=\"item_nav\">
  1258. \t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
  1259. \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>
  1260. \t\t\t\t\t\t{% endfor %}
  1261. \t\t\t\t\t</div>
  1262. \t\t\t\t</div>
  1263. \t\t\t</div>
  1264. \t\t\t<div class=\"ec-grid2__cell\">
  1265. \t\t\t\t<div
  1266. \t\t\t\t\tclass=\"ec-productRole__profile ec-productRole__btn-relative\">
  1267. \t\t\t\t\t{# お気に入りボタン #}
  1268. \t\t\t\t\t{% if BaseInfo.option_favorite_product %}
  1269. \t\t\t\t\t\t<div class=\"ec-productRole__btn-wrapper\">
  1270. \t\t\t\t\t\t\t<form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1271. \t\t\t\t\t\t\t\t<div class=\"ec-productRole__btn favorite-btn-wrapper\">
  1272. \t\t\t\t\t\t\t\t\t{% if is_favorite == false %}
  1273. \t\t\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--favorite\">
  1274. \t\t\t\t\t\t\t\t\t\t\t <img src=\"{{ asset('assets/img/Icon-heart.svg') }}\" alt=\"お気に入りに追加\">
  1275. \t\t\t\t\t\t\t\t\t\t</button>
  1276. \t\t\t\t\t\t\t\t\t{% else %}
  1277. \t\t\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--favorite\" disabled=\"disabled\">
  1278. \t\t\t\t\t\t\t\t\t\t\t <img src=\"{{ asset('assets/img/Icon-heart-remove.svg') }}\" alt=\"お気に入りから削除\">
  1279. \t\t\t\t\t\t\t\t\t\t</button>
  1280. \t\t\t\t\t\t\t\t\t{% endif %}
  1281. \t\t\t\t\t\t\t\t</div>
  1282. \t\t\t\t\t\t\t</form>
  1283. \t\t\t\t\t\t</div>
  1284. \t\t\t\t\t{% endif %}
  1285. \t\t\t\t\t{# 商品名 #}
  1286. \t\t\t\t\t<div class=\"ec-productRole__title\">
  1287. \t\t\t\t\t\t<h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  1288. \t\t\t\t\t</div>
  1289. \t\t\t\t\t{# タグ #}
  1290. \t\t\t\t\t<ul class=\"ec-productRole__tags\">
  1291. \t\t\t\t\t\t{% for Tag in Product.Tags %}
  1292. \t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  1293. \t\t\t\t\t\t{% endfor %}
  1294. \t\t\t\t\t</ul>
  1295. \t\t\t\t\t{# 通常価格 #}
  1296. \t\t\t\t\t{% if Product.hasProductClass -%}
  1297. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        <div class=\"ec-productRole__priceRegular\">
  1298. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1299. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  1300. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularTax\">({{ '税込'|trans }})</span>
  1301. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1302. \t\t\t\t\t\t\t\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>
  1303. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <span class=\"ec-productRole__priceRegularTax\">({{ '税込'|trans }})</span>
  1304. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            {% endif %}
  1305. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        </div>
  1306. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    {% else %}
  1307. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        {% if Product.getPrice01Max is not null %}
  1308. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  1309. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            <span class=\"ec-productRole__priceRegularTax\">({{ '税込'|trans }})</span>
  1310. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        {% endif %}
  1311. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    {% endif %}
  1312. \t\t\t\t\t{# 販売価格 #}
  1313. \t\t\t\t\t\t<div class=\"ec-productRole__price\"> {% if Product.hasProductClass -%}
  1314. \t\t\t\t\t\t\t{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1315. \t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1316. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1317. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">({{ '税込'|trans }})</span>
  1318. \t\t\t\t\t\t\t\t</div>
  1319. \t\t\t\t\t\t\t{% else %}
  1320. \t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1321. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}
  1322. \t\t\t\t\t\t\t\t\t\t~
  1323. \t\t\t\t\t\t\t\t\t\t{{ Product.getPrice02IncTaxMax|price }}</span>
  1324. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">({{ '税込'|trans }})</span>
  1325. \t\t\t\t\t\t\t\t</div>
  1326. \t\t\t\t\t\t\t{% endif %}
  1327. \t\t\t\t\t\t{% else %}
  1328. \t\t\t\t\t\t\t<div class=\"ec-price\">
  1329. \t\t\t\t\t\t\t\t<span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1330. \t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">({{ '税込'|trans }})</span>
  1331. \t\t\t\t\t\t\t</div>
  1332. \t\t\t\t\t\t{% endif %}
  1333. \t\t\t\t\t</div>
  1334. \t\t\t\t\t{# 商品コード #}
  1335. \t\t\t\t\t{#{% if Product.code_min is not empty %}
  1336. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        <div class=\"ec-productRole__code\">
  1337. \t\t\t\t\t\t\t\t\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>
  1338. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        </div>
  1339. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    {% endif %}#}
  1340. \t\t\t\t\t{# 関連カテゴリ #}
  1341. \t\t\t\t\t{#{% if Product.ProductCategories is not empty %}
  1342. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        <div class=\"ec-productRole__category\">
  1343. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            <div>{{ '関連カテゴリ'|trans }}</div>
  1344. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            {% for ProductCategory in Product.ProductCategories %}
  1345. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                <ul>
  1346. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                    <li>
  1347. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                        {% for Category in ProductCategory.Category.path %}
  1348. \t\t\t\t\t\t\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 %}
  1349. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                            <span>></span>{% endif -%}
  1350. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                        {% endfor %}
  1351. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                    </li>
  1352. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                                </ul>
  1353. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                            {% endfor %}
  1354. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        </div>
  1355. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                    {% endif %}#}
  1356. \t\t\t\t\t\t<form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\"> {% if Product.stock_find %}
  1357. \t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
  1358. \t\t\t\t\t\t\t\t{% if form.classcategory_id1 is defined %}
  1359. \t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  1360. \t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id1) }}
  1361. \t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id1) }}
  1362. \t\t\t\t\t\t\t\t\t</div>
  1363. \t\t\t\t\t\t\t\t\t{% if form.classcategory_id2 is defined %}
  1364. \t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
  1365. \t\t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id2) }}
  1366. \t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id2) }}
  1367. \t\t\t\t\t\t\t\t\t\t</div>
  1368. \t\t\t\t\t\t\t\t\t{% endif %}
  1369. \t\t\t\t\t\t\t\t{% endif %}
  1370. \t\t\t\t\t\t\t\t<div class=\"ec-numberInput\">
  1371. \t\t\t\t\t\t\t\t\t<span>{{ '数量'|trans }}</span>
  1372. \t\t\t\t\t\t\t\t\t{{ form_widget(form.quantity) }}
  1373. \t\t\t\t\t\t\t\t\t{{ form_errors(form.quantity) }}
  1374. \t\t\t\t\t\t\t\t</div>
  1375. \t\t\t\t\t\t\t</div>
  1376. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  1377. \t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  1378. \t\t\t\t\t\t\t\t\t{{ 'カートに入れる'|trans }}
  1379. \t\t\t\t\t\t\t\t</button>
  1380. \t\t\t\t\t\t\t</div>
  1381. \t\t\t\t\t\t{% else %}
  1382. \t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
  1383. \t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1384. \t\t\t\t\t\t\t\t\t{{ 'ただいま品切れ中です。'|trans }}
  1385. \t\t\t\t\t\t\t\t</button>
  1386. \t\t\t\t\t\t\t</div>
  1387. \t\t\t\t\t\t{% endif %}
  1388. \t\t\t\t\t\t{{ form_rest(form) }}
  1389. \t\t\t\t\t</form>
  1390. \t\t\t\t\t<div class=\"ec-modal\">
  1391. \t\t\t\t\t\t<div class=\"ec-modal-overlay\">
  1392. \t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
  1393. \t\t\t\t\t\t\t\t<span class=\"ec-modal-close\">
  1394. \t\t\t\t\t\t\t\t\t<span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span>
  1395. \t\t\t\t\t\t\t\t</span>
  1396. \t\t\t\t\t\t\t\t<div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1397. \t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
  1398. \t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
  1399. \t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1400. \t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  1401. \t\t\t\t\t\t\t\t\t</div>
  1402. \t\t\t\t\t\t\t\t</div>
  1403. \t\t\t\t\t\t\t</div>
  1404. \t\t\t\t\t\t</div>
  1405. \t\t\t\t\t</div>
  1406. \t\t\t\t\t{#{% if BaseInfo.option_favorite_product %}
  1407. \t\t\t\t\t                        <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  1408. \t\t\t\t\t                            <div class=\"ec-productRole__btn\">
  1409. \t\t\t\t\t                                {% if is_favorite == false %}
  1410. \t\t\t\t\t                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1411. \t\t\t\t\t                                        {{ 'お気に入りに追加'|trans }}
  1412. \t\t\t\t\t                                    </button>
  1413. \t\t\t\t\t                                {% else %}
  1414. \t\t\t\t\t                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  1415. \t\t\t\t\t                                            disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  1416. \t\t\t\t\t                                    </button>
  1417. \t\t\t\t\t                                {% endif %}
  1418. \t\t\t\t\t                            </div>
  1419. \t\t\t\t\t                        </form>
  1420. \t\t\t\t\t                    {% endif %}#}
  1421. \t\t\t\t\t<div class=\"ec-productRole__description\">{{ Product.description_detail|raw|nl2br }}
  1422. \t\t\t\t\t</div>
  1423. \t\t\t\t</div>
  1424. \t\t\t</div>
  1425. \t\t</div>
  1426. \t\t{% if Product.freearea %}
  1427. \t\t\t<div class=\"ec-productRole__description\">
  1428. \t\t\t\t{{ include(template_from_string(Product.freearea), sandboxed = true) }}
  1429. \t\t\t</div>
  1430. \t\t{% endif %}
  1431. \t</div>
  1432. {% endblock %}""Product/detail.twig""/home/c9635817/public_html/attrait-shop.com/app/template/default/Product/detail.twig");
  1433.     }
  1434.     
  1435.     public function checkSecurity()
  1436.     {
  1437.         static $tags = array("set" => 13"if" => 111"for" => 264);
  1438.         static $filters = array("raw" => 100"json_encode" => 113"escape" => 116"trans" => 189"no_image_product" => 268"slice" => 271"replace" => 271"default" => 271"price" => 368"nl2br" => 490);
  1439.         static $functions = array("class_categories_as_json" => 100"asset" => 166"url" => 235"form_row" => 429"form_errors" => 430"form_widget" => 441"form_rest" => 457"include" => 497"template_from_string" => 497);
  1440.         try {
  1441.             $this->sandbox->checkSecurity(
  1442.                 ['set''if''for'],
  1443.                 ['raw''json_encode''escape''trans''no_image_product''slice''replace''default''price''nl2br'],
  1444.                 ['class_categories_as_json''asset''url''form_row''form_errors''form_widget''form_rest''include''template_from_string'],
  1445.                 $this->source
  1446.             );
  1447.         } catch (SecurityError $e) {
  1448.             $e->setSourceContext($this->source);
  1449.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  1450.                 $e->setTemplateLine($tags[$e->getTagName()]);
  1451.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  1452.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  1453.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  1454.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  1455.             }
  1456.             throw $e;
  1457.         }
  1458.     }
  1459. }