var/cache/dev/twig/6c/6c5c42a6748617421ed05919ccb0e64620236012c43b394158749ec28d113188.php line 56

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* __string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc */
  14. class __TwigTemplate_8eed773a5405109f738f5c7c4ce5b7f522b55426443301ce2bea0dcd0cacf32e 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.             'pagetitlearea' => [$this'block_pagetitlearea'],
  26.             'main' => [$this'block_main'],
  27.         ];
  28.         $this->sandbox $this->env->getExtension('\Twig\Extension\SandboxExtension');
  29.         $this->checkSecurity();
  30.     }
  31.     protected function doGetParent(array $context)
  32.     {
  33.         // line 11
  34.         return "default_frame.twig";
  35.     }
  36.     protected function doDisplay(array $context, array $blocks = [])
  37.     {
  38.         $macros $this->macros;
  39.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  40.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""__string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc"));
  41.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  42.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""__string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc"));
  43.         // line 13
  44.         $context["body_class"] = "product_page";
  45.         // line 11
  46.         $this->parent $this->loadTemplate("default_frame.twig""__string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc"11);
  47.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  48.         
  49.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  50.         
  51.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  52.     }
  53.     // line 15
  54.     public function block_stylesheet($context, array $blocks = [])
  55.     {
  56.         $macros $this->macros;
  57.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  58.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  59.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  60.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  61.         // line 16
  62.         echo "\t";
  63.         
  64.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  65.         
  66.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  67.     }
  68.     // line 97
  69.     public function block_javascript($context, array $blocks = [])
  70.     {
  71.         $macros $this->macros;
  72.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  73.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  74.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  75.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  76.         // line 98
  77.         echo "\t<script>
  78. \t\teccube.classCategories = ";
  79.         // line 99
  80.         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.'99$this->source); })()), 99$this->source));
  81.         echo ";
  82. // 規格2に選択肢を割り当てる。
  83. function fnSetClassCategories(form, classcat_id2_selected) {
  84. var \$form = \$(form);
  85. var product_id = \$form.find('input[name=product_id]').val();
  86. var \$sele1 = \$form.find('select[name=classcategory_id1]');
  87. var \$sele2 = \$form.find('select[name=classcategory_id2]');
  88. eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  89. }
  90. ";
  91.         // line 110
  92.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue110)) {
  93.             echo "fnSetClassCategories(\$('#form1'), ";
  94.             echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'110$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue110), "vars", [], "any"falsefalsetrue110), "value", [], "any"falsefalsetrue110), 110$this->source));
  95.             echo ");
  96. ";
  97.         } elseif (twig_get_attribute($this->env$this->source,         // line 111
  98. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue111)) {
  99.             // line 112
  100.             echo "eccube.checkStock(\$('#form1'), ";
  101.             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.'112$this->source); })()), "id", [], "any"falsefalsetrue112), 112$this->source), "html"nulltrue);
  102.             echo ", ";
  103.             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.'112$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue112), "vars", [], "any"falsefalsetrue112), "value", [], "any"falsefalsetrue112), 112$this->source));
  104.             echo ", null);";
  105.         }
  106.         // line 113
  107.         echo "\t</script>
  108. \t<script>
  109. \t\t\$(function () { // bfcache無効化
  110. \$(window).bind('pageshow', function (event) {
  111. if (event.originalEvent.persisted) {
  112. location.reload(true);
  113. }
  114. });
  115. // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  116. // img タグに width, height が付与されている.
  117. // 630px 未満の画面サイズでは縦横比が壊れるための対策
  118. // see https://github.com/EC-CUBE/ec-cube/pull/5023
  119. \$('.ec-grid2__cell').hide();
  120. var removeSize = function () {
  121. \$('.slide-item').height('');
  122. \$('.slide-item img').removeAttr('width').removeAttr('height').removeAttr('style');
  123. };
  124. var slickInitial = function (slick) {
  125. \$('.ec-grid2__cell').fadeIn(1500);
  126. var baseHeight = \$(slick.target).height();
  127. var baseWidth = \$(slick.target).width();
  128. var rate = baseWidth / baseHeight;
  129. \$('.slide-item').height(baseHeight * rate);
  130. // 余白を削除する
  131. // transform を使用することでCLSの影響を受けないようにする
  132. \$('.slide-item img').css({
  133. 'transform-origin': 'top left',
  134. 'transform': 'scaleY(' + rate + ')',
  135. 'transition': 'transform .1s'
  136. });
  137. // 正しいサイズに近くなったら属性を解除する
  138. setTimeout(removeSize, 500);
  139. };
  140. \$('.item_visual').on('init', slickInitial);
  141. // リサイズ時は CLS の影響を受けないため属性を解除する
  142. \$(window).resize(removeSize);
  143. \$('.item_visual').slick({
  144. dots: false,
  145. arrows: false,
  146. responsive: [
  147. {
  148. breakpoint: 768,
  149. settings: {
  150. dots: true
  151. }
  152. }
  153. ]
  154. });
  155. \$('.slideThumb').on('click', function () {
  156. var index = \$(this).attr('data-index');
  157. \$('.item_visual').slick('slickGoTo', index, false);
  158. })
  159. });
  160. \t</script>
  161. \t<script>
  162. \t\t\$(function () {
  163. \$('.add-cart').on('click', function (event){
  164. ";
  165.         // line 173
  166.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue173)) {
  167.             // line 174
  168.             echo "// 規格1フォームの必須チェック
  169. if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  170. \$('#classcategory_id1')[0].setCustomValidity('";
  171.             // line 176
  172.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  173.             echo "');
  174. return true;
  175. } else {
  176. \$('#classcategory_id1')[0].setCustomValidity('');
  177. }
  178. ";
  179.         }
  180.         // line 182
  181.         echo "
  182. ";
  183.         // line 183
  184.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue183)) {
  185.             // line 184
  186.             echo "// 規格2フォームの必須チェック
  187. if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  188. \$('#classcategory_id2')[0].setCustomValidity('";
  189.             // line 186
  190.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  191.             echo "');
  192. return true;
  193. } else {
  194. \$('#classcategory_id2')[0].setCustomValidity('');
  195. }
  196. ";
  197.         }
  198.         // line 192
  199.         echo "
  200. // 個数フォームのチェック
  201. if (\$('#quantity').val() < 1) {
  202. \$('#quantity')[0].setCustomValidity('";
  203.         // line 195
  204.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  205.         echo "');
  206. //\$('.ec-modal-box').addClass('nonebtns');
  207. return true;
  208. } else {
  209. //\$('.ec-modal-box').removeClass('nonebtns');
  210. \$('#quantity')[0].setCustomValidity('');
  211. } event.preventDefault();
  212. \$form = \$('#form1');
  213. \$.ajax({
  214. url: \$form.attr('action'),
  215. type: \$form.attr('method'),
  216. data: \$form.serialize(),
  217. dataType: 'json',
  218. beforeSend: function (xhr, settings) { // Buttonを無効にする
  219. \$('.add-cart').prop('disabled', true);
  220. }
  221. }).done(function (data) { // レスポンス内のメッセージをalertで表示
  222. \$.each(data.messages, function () {
  223. \$('#ec-modal-header').text(this);
  224. });
  225. \$('.ec-modal').show()
  226. // カートブロックを更新する
  227. \$.ajax({url: \"";
  228.         // line 220
  229.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  230.         echo "\", type: 'GET', dataType: 'html'}).done(function (html) {
  231. \$('.ec-headerRole__cart').html(html);
  232. });
  233. }).fail(function (data) {
  234. alert('";
  235.         // line 224
  236.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  237.         echo "');
  238. }).always(function (data) { // Buttonを有効にする
  239. \$('.add-cart').prop('disabled', false);
  240. });
  241. });
  242. });
  243. \$('.ec-modal-wrap').on('click', function (e) { // モーダル内の処理は外側にバブリングさせない
  244. e.stopPropagation();
  245. });
  246. \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
  247. \$('.ec-modal').hide()
  248. });
  249. \t</script>
  250. \t<script type=\"application/ld+json\">
  251. \t\t{
  252. \t\t        \"@context\": \"https://schema.org/\",
  253. \t\t        \"@type\": \"Product\",
  254. \t\t        \"name\": \"";
  255.         // line 242
  256.         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.'242$this->source); })()), "name", [], "any"falsefalsetrue242), 242$this->source), "html"nulltrue);
  257.         echo "\",
  258. \t\t        \"image\": [
  259. \t\t";
  260.         // line 244
  261.         $context['_parent'] = $context;
  262.         $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.'244$this->source); })()), "ProductImage", [], "any"falsefalsetrue244));
  263.         $context['_iterated'] = false;
  264.         $context['loop'] = [
  265.           'parent' => $context['_parent'],
  266.           'index0' => 0,
  267.           'index'  => 1,
  268.           'first'  => true,
  269.         ];
  270.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  271.             $length count($context['_seq']);
  272.             $context['loop']['revindex0'] = $length 1;
  273.             $context['loop']['revindex'] = $length;
  274.             $context['loop']['length'] = $length;
  275.             $context['loop']['last'] = === $length;
  276.         }
  277.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  278.             // line 245
  279.             echo "\t\t\t\"";
  280.             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.'245$this->source); })()), "request", [], "any"falsefalsetrue245), "schemeAndHttpHost", [], "any"falsefalsetrue245), 245$this->source), "html"nulltrue);
  281.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 245$this->source), "save_image"), "html"nulltrue);
  282.             echo "\"
  283. \t\t\t";
  284.             // line 246
  285.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue246)) {
  286.                 echo ",
  287. \t\t\t";
  288.             }
  289.             // line 248
  290.             echo "
  291. \t\t";
  292.             $context['_iterated'] = true;
  293.             ++$context['loop']['index0'];
  294.             ++$context['loop']['index'];
  295.             $context['loop']['first'] = false;
  296.             if (isset($context['loop']['length'])) {
  297.                 --$context['loop']['revindex0'];
  298.                 --$context['loop']['revindex'];
  299.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  300.             }
  301.         }
  302.         if (!$context['_iterated']) {
  303.             // line 250
  304.             echo "\t\t\t\"";
  305.             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.'250$this->source); })()), "request", [], "any"falsefalsetrue250), "schemeAndHttpHost", [], "any"falsefalsetrue250), 250$this->source), "html"nulltrue);
  306.             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);
  307.             echo "\"
  308. \t\t";
  309.         }
  310.         $_parent $context['_parent'];
  311.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  312.         $context array_intersect_key($context$_parent) + $_parent;
  313.         // line 252
  314.         echo "\t\t],
  315. \t\t        \"description\": \"";
  316.         // line 253
  317.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruetrue253)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsetrue253), 253$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.'253$this->source); })()), "description_detail", [], "any"falsefalsetrue253), 253$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.'253$this->source); })()), "description_detail", [], "any"falsefalsetrue253))), ["
  318. => """ " => ""]), 0300), "html"nulltrue);
  319.         echo "\",
  320. \t\t";
  321.         // line 254
  322.         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.'254$this->source); })()), "code_min", [], "any"falsefalsetrue254)) {
  323.             // line 255
  324.             echo "\t\t\t\"sku\": \"";
  325.             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.'255$this->source); })()), "code_min", [], "any"falsefalsetrue255), 255$this->source), "html"nulltrue);
  326.             echo "\",
  327. \t\t";
  328.         }
  329.         // line 257
  330.         echo "\t\t\"offers\": {
  331. \t\t            \"@type\": \"Offer\",
  332. \t\t            \"url\": \"";
  333.         // line 259
  334.         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.'259$this->source); })()), "id", [], "any"falsefalsetrue259)]), "html"nulltrue);
  335.         echo "\",
  336. \t\t            \"priceCurrency\": \"";
  337.         // line 260
  338.         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.'260$this->source); })()), "currency", [], "any"falsefalsetrue260), 260$this->source), "html"nulltrue);
  339.         echo "\",
  340. \t\t            \"price\":
  341. \t\t";
  342.         // line 262
  343.         ((twig_get_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); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue262)) ? (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.'262$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue262), "html"nulltrue))) : (print (0)));
  344.         echo ",
  345. \t\t            \"availability\": \"";
  346.         // line 263
  347.         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.'263$this->source); })()), "stock_find", [], "any"falsefalsetrue263)) ? ("InStock") : ("OutOfStock"));
  348.         echo "\"
  349. \t\t        }
  350. \t\t    }
  351. \t</script>";
  352.         // line 269
  353.         echo "<script>
  354.     \$(function() {
  355.       var \$form = \$('#form1');
  356.       var \$submit = \$form.find('.add-cart');
  357.       function checkRequiredFields() {
  358.         var allValid = true;
  359.        \$('label.form-label.required').each(function () {
  360.         var targetId = \$(this).attr('for');
  361.         var \$input = \$('#' + targetId);
  362.         if (\$input.length === 0) return;
  363.         var isValid = true;
  364.         if (\$input.is('select')) {
  365.           var val = \$input.val();
  366.           var firstVal = \$input.find('option:first').val();
  367.           if (!val || val === firstVal) {
  368.             isValid = false;
  369.           }
  370.         } else if (\$input.is('input, textarea')) {
  371.           if (!\$input.val().trim()) {
  372.             isValid = false;
  373.           }
  374.         }
  375.         \$input.toggleClass('field-error', !isValid);
  376.         if (!isValid) allValid = false;
  377.       });
  378.         \$submit.prop('disabled', !allValid);
  379.       }
  380.       // 入力・変更時にチェック
  381.       \$form.on('input change', 'select, input, textarea', function() {
  382.         checkRequiredFields();
  383.       });
  384.       // 初期状態でチェック
  385.       checkRequiredFields();
  386.     });
  387. </script>";
  388.         
  389.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  390.         
  391.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  392.     }
  393.     // line 316
  394.     public function block_pagetitlearea($context, array $blocks = [])
  395.     {
  396.         $macros $this->macros;
  397.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  398.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""pagetitlearea"));
  399.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  400.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""pagetitlearea"));
  401.         // line 317
  402.         echo "
  403. <div class=\"main-top\">
  404. \t\t";
  405.         // line 320
  406.         echo "\t\t<div id=\"pagetitle\">
  407. \t\t\t<h2>
  408. \t\t\t\tPRODUCT
  409. \t\t\t\t<small>商品</small>
  410. \t\t\t</h2>
  411. \t\t\t<div class=\"image\">
  412. \t\t\t\t<img src=\"";
  413.         // line 326
  414.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/assets/images/pagetitle-image-product.jpg"), "html"nulltrue);
  415.         echo "\">
  416. \t\t\t</div>
  417. \t\t</div>
  418. \t</div>
  419. ";
  420.         
  421.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  422.         
  423.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  424.     }
  425.     // line 332
  426.     public function block_main($context, array $blocks = [])
  427.     {
  428.         $macros $this->macros;
  429.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  430.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  431.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  432.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  433.         // line 333
  434.         echo "
  435. \t<div class=\"ec-productRole\">
  436. \t\t<div class=\"carender-detail\">
  437. \t\t\t<p class=\"title\">
  438. \t\t\t";
  439.         // line 345
  440.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'345$this->source); })()), "code_min", [], "any"falsefalsetrue345))) {
  441.             echo "【";
  442.             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.'345$this->source); })()), "code_min", [], "any"falsefalsetrue345), 345$this->source), "html"nulltrue);
  443.             echo "】";
  444.         }
  445.         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.'345$this->source); })()), "name", [], "any"falsefalsetrue345), 345$this->source), "html"nulltrue);
  446.         echo "
  447. \t\t\t</p>
  448. ";
  449.         // line 350
  450.         echo "\t\t\t\t\t";
  451.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'350$this->source); })()), "ProductCategories", [], "any"falsefalsetrue350))) {
  452.             // line 351
  453.             echo "\t\t\t\t\t\t<div class=\"carender-detail-category\">
  454. \t\t\t\t\t\t\t";
  455.             // line 352
  456.             $context['_parent'] = $context;
  457.             $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.'352$this->source); })()), "ProductCategories", [], "any"falsefalsetrue352));
  458.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  459.                 // line 353
  460.                 echo "\t\t\t\t\t\t\t\t<ul>
  461. \t\t\t\t\t\t\t\t\t<li>
  462. \t\t\t\t\t\t\t\t\t\t";
  463.                 // line 355
  464.                 $context['_parent'] = $context;
  465.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsetrue355), "path", [], "any"falsefalsetrue355));
  466.                 $context['loop'] = [
  467.                   'parent' => $context['_parent'],
  468.                   'index0' => 0,
  469.                   'index'  => 1,
  470.                   'first'  => true,
  471.                 ];
  472.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  473.                     $length count($context['_seq']);
  474.                     $context['loop']['revindex0'] = $length 1;
  475.                     $context['loop']['revindex'] = $length;
  476.                     $context['loop']['length'] = $length;
  477.                     $context['loop']['last'] = === $length;
  478.                 }
  479.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  480.                     // line 356
  481.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsetrue356) == true)) {
  482.                         // line 357
  483.                         echo "\t\t\t\t\t\t\t\t\t\t\t<a href=\"";
  484.                         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  485.                         echo "?category_id=";
  486.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsetrue357), 357$this->source), "html"nulltrue);
  487.                         echo "\">";
  488.                         echo twig_escape_filter($this->env$this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsetrue357), 357$this->source), "html"nulltrue);
  489.                         echo "</a>
  490. \t\t\t\t\t\t\t\t\t\t\t";
  491.                     }
  492.                     ++$context['loop']['index0'];
  493.                     ++$context['loop']['index'];
  494.                     $context['loop']['first'] = false;
  495.                     if (isset($context['loop']['length'])) {
  496.                         --$context['loop']['revindex0'];
  497.                         --$context['loop']['revindex'];
  498.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  499.                     }
  500.                 }
  501.                 $_parent $context['_parent'];
  502.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  503.                 $context array_intersect_key($context$_parent) + $_parent;
  504.                 // line 360
  505.                 echo "\t\t\t\t\t\t\t\t\t</li>
  506. \t\t\t\t\t\t\t\t</ul>
  507. \t\t\t\t\t\t\t";
  508.             }
  509.             $_parent $context['_parent'];
  510.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  511.             $context array_intersect_key($context$_parent) + $_parent;
  512.             // line 363
  513.             echo "\t\t\t\t\t\t</div>
  514. \t\t\t\t\t";
  515.         }
  516.         // line 365
  517.         echo "
  518. \t\t\t<div class=\"image-txt\">
  519. <div class=\"image";
  520.         // line 371
  521.         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.'371$this->source); })()), "stock_find", [], "any"falsefalsetrue371)) {
  522.         } else {
  523.             echo " souldout";
  524.         }
  525.         echo "\">
  526. <div class=\"thumbset\">
  527.           <ul class=\"main\">
  528. \t\t   ";
  529.         // line 376
  530.         $context['_parent'] = $context;
  531.         $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.'376$this->source); })()), "ProductImage", [], "any"falsefalsetrue376));
  532.         $context['_iterated'] = false;
  533.         $context['loop'] = [
  534.           'parent' => $context['_parent'],
  535.           'index0' => 0,
  536.           'index'  => 1,
  537.           'first'  => true,
  538.         ];
  539.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  540.             $length count($context['_seq']);
  541.             $context['loop']['revindex0'] = $length 1;
  542.             $context['loop']['revindex'] = $length;
  543.             $context['loop']['length'] = $length;
  544.             $context['loop']['last'] = === $length;
  545.         }
  546.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  547.             // line 377
  548.             echo "                            <li><div class=\"mainimage\"><img src=\"";
  549.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 377$this->source), "save_image"), "html"nulltrue);
  550.             echo "\" alt=\"";
  551.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue377)) ? (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.'377$this->source); })()), "name", [], "any"falsefalsetrue377), "html"nulltrue))) : (print ("")));
  552.             echo "\" width=\"550\" height=\"550\"";
  553.             if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsetrue377) > 1)) {
  554.                 echo " loading=\"lazy\"";
  555.             }
  556.             echo "></div></li>
  557.                         ";
  558.             $context['_iterated'] = true;
  559.             ++$context['loop']['index0'];
  560.             ++$context['loop']['index'];
  561.             $context['loop']['first'] = false;
  562.             if (isset($context['loop']['length'])) {
  563.                 --$context['loop']['revindex0'];
  564.                 --$context['loop']['revindex'];
  565.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  566.             }
  567.         }
  568.         if (!$context['_iterated']) {
  569.             // line 379
  570.             echo "                            <li><div class=\"mainimage\"><img src=\"";
  571.             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);
  572.             echo "\" alt=\"";
  573.             ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsetrue379)) ? (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.'379$this->source); })()), "name", [], "any"falsefalsetrue379), "html"nulltrue))) : (print ("")));
  574.             echo "\" width=\"550\" height=\"550\"></div></li>
  575.                         ";
  576.         }
  577.         $_parent $context['_parent'];
  578.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  579.         $context array_intersect_key($context$_parent) + $_parent;
  580.         // line 381
  581.         echo "          </ul>
  582.           <ul class=\"thumb\">
  583. \t\t  ";
  584.         // line 383
  585.         $context['_parent'] = $context;
  586.         $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.'383$this->source); })()), "ProductImage", [], "any"falsefalsetrue383));
  587.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  588.             // line 384
  589.             echo "                            <li><div class=\"thumbimage\"><img src=\"";
  590.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 384$this->source), "save_image"), "html"nulltrue);
  591.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div></li>
  592.                         ";
  593.         }
  594.         $_parent $context['_parent'];
  595.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  596.         $context array_intersect_key($context$_parent) + $_parent;
  597.         // line 386
  598.         echo "          </ul>
  599.         </div>
  600. </div><!--image-->
  601. \t\t\t\t<div class=\"txtbox\">
  602. \t\t\t\t
  603. \t\t\t\t\t<table>
  604. \t\t\t\t\t";
  605.         // line 398
  606.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'398$this->source); })()), "ViewData", [=> 1], "method"falsefalsetrue398))) {
  607.             // line 399
  608.             echo "\t\t\t\t\t\t<tr>
  609. \t\t\t\t\t\t\t<th>サイズ</th>
  610. \t\t\t\t\t\t\t<td>";
  611.             // line 401
  612.             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.'401$this->source); })()), "ViewData", [=> 1], "method"falsefalsetrue401), 401$this->source), "html"nulltrue);
  613.             echo "</td>
  614. \t\t\t\t\t\t</tr>
  615. \t\t\t\t\t\t";
  616.         }
  617.         // line 404
  618.         echo "\t\t\t\t\t\t";
  619.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'404$this->source); })()), "ViewData", [=> 2], "method"falsefalsetrue404))) {
  620.             // line 405
  621.             echo "\t\t\t\t\t\t<tr>
  622. \t\t\t\t\t\t\t<th>用紙</th>
  623. \t\t\t\t\t\t\t<td>";
  624.             // line 407
  625.             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.'407$this->source); })()), "ViewData", [=> 2], "method"falsefalsetrue407), 407$this->source), "html"nulltrue);
  626.             echo "</td>
  627. \t\t\t\t\t\t</tr>
  628. \t\t\t\t\t\t";
  629.         }
  630.         // line 410
  631.         echo "\t\t\t\t\t\t";
  632.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'410$this->source); })()), "ViewData", [=> 3], "method"falsefalsetrue410))) {
  633.             // line 411
  634.             echo "\t\t\t\t\t\t<tr>
  635. \t\t\t\t\t\t\t<th>梱包数(重量)</th>
  636. \t\t\t\t\t\t\t<td>";
  637.             // line 413
  638.             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.'413$this->source); })()), "ViewData", [=> 3], "method"falsefalsetrue413), 413$this->source), "html"nulltrue);
  639.             echo "</td>
  640. \t\t\t\t\t\t</tr>
  641. \t\t\t\t\t\t";
  642.         }
  643.         // line 416
  644.         echo "
  645. \t\t\t\t\t\t";
  646.         // line 417
  647.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'417$this->source); })()), "ViewData", [=> 4], "method"falsefalsetrue417))) {
  648.             // line 418
  649.             echo "\t\t\t\t\t\t<tr>
  650. \t\t\t\t\t\t\t<th>名入れスペース</th>
  651. \t\t\t\t\t\t\t<td>";
  652.             // line 420
  653.             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.'420$this->source); })()), "ViewData", [=> 4], "method"falsefalsetrue420), 420$this->source), "html"nulltrue);
  654.             echo "</td>
  655. \t\t\t\t\t\t</tr>
  656. \t\t\t\t\t\t";
  657.         }
  658.         // line 423
  659.         echo "
  660. \t\t\t\t\t\t";
  661.         // line 424
  662.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'424$this->source); })()), "ViewData", [=> 5], "method"falsefalsetrue424))) {
  663.             // line 425
  664.             echo "\t\t\t\t\t\t<tr>
  665. \t\t\t\t\t\t\t<th>名入れ印刷寸法</th>
  666. \t\t\t\t\t\t\t<td>";
  667.             // line 427
  668.             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.'427$this->source); })()), "ViewData", [=> 5], "method"falsefalsetrue427), 427$this->source), "html"nulltrue);
  669.             echo "</td>
  670. \t\t\t\t\t\t</tr>
  671. \t\t\t\t\t\t";
  672.         }
  673.         // line 430
  674.         echo "
  675. \t\t\t\t\t\t";
  676.         // line 431
  677.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'431$this->source); })()), "ViewData", [=> 6], "method"falsefalsetrue431))) {
  678.             // line 432
  679.             echo "\t\t\t\t\t\t<tr>
  680. \t\t\t\t\t\t\t<th>名入れ印刷方法</th>
  681. \t\t\t\t\t\t\t<td>";
  682.             // line 434
  683.             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.'434$this->source); })()), "ViewData", [=> 6], "method"falsefalsetrue434), 434$this->source), "html"nulltrue);
  684.             echo "</td>
  685. \t\t\t\t\t\t</tr>
  686. \t\t\t\t\t\t";
  687.         }
  688.         // line 437
  689.         echo "
  690. \t\t\t\t\t\t";
  691.         // line 438
  692.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'438$this->source); })()), "ViewData", [=> 7], "method"falsefalsetrue438))) {
  693.             // line 439
  694.             echo "\t\t\t\t\t\t<tr>
  695. \t\t\t\t\t\t\t<th>表紙名入印刷</th>
  696. \t\t\t\t\t\t\t<td>";
  697.             // line 441
  698.             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.'441$this->source); })()), "ViewData", [=> 7], "method"falsefalsetrue441), 441$this->source), "html"nulltrue);
  699.             echo "</td>
  700. \t\t\t\t\t\t</tr>
  701. \t\t\t\t\t\t";
  702.         }
  703.         // line 444
  704.         echo "
  705. \t\t\t\t\t\t";
  706.         // line 445
  707.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'445$this->source); })()), "ViewData", [=> 8], "method"falsefalsetrue445))) {
  708.             // line 446
  709.             echo "\t\t\t\t\t\t<tr>
  710. \t\t\t\t\t\t\t<th>製本</th>
  711. \t\t\t\t\t\t\t<td>";
  712.             // line 448
  713.             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.'448$this->source); })()), "ViewData", [=> 8], "method"falsefalsetrue448), 448$this->source), "html"nulltrue);
  714.             echo "</td>
  715. \t\t\t\t\t\t</tr>
  716. \t\t\t\t\t\t";
  717.         }
  718.         // line 451
  719.         echo "
  720. \t\t\t\t\t\t";
  721.         // line 452
  722.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'452$this->source); })()), "ViewData", [=> 9], "method"falsefalsetrue452))) {
  723.             // line 453
  724.             echo "\t\t\t\t\t\t<tr>
  725. \t\t\t\t\t\t\t<th>備考</th>
  726. \t\t\t\t\t\t\t<td>";
  727.             // line 455
  728.             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.'455$this->source); })()), "ViewData", [=> 9], "method"falsefalsetrue455), 455$this->source), "html"nulltrue);
  729.             echo "</td>
  730. \t\t\t\t\t\t</tr>
  731. \t\t\t\t\t\t";
  732.         }
  733.         // line 458
  734.         echo "
  735. \t\t\t\t\t</table>
  736. <form class=\"order\" action=\"";
  737.         // line 469
  738.         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.'469$this->source); })()), "id", [], "any"falsefalsetrue469)]), "html"nulltrue);
  739.         echo "\" method=\"post\" id=\"form1\" name=\"form1\">
  740.                         ";
  741.         // line 470
  742.         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.'470$this->source); })()), "stock_find", [], "any"falsefalsetrue470)) {
  743.             // line 471
  744.             echo "                            <div class=\"ec-productRole__actions\">
  745.                                 ";
  746.             // line 472
  747.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruetrue472)) {
  748.                 // line 473
  749.                 echo "                                    <div class=\"ec-select\">
  750.                                         ";
  751.                 // line 474
  752.                 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.'474$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue474), 474$this->source), 'row');
  753.                 echo "
  754.                                         ";
  755.                 // line 475
  756.                 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.'475$this->source); })()), "classcategory_id1", [], "any"falsefalsetrue475), 475$this->source), 'errors');
  757.                 echo "
  758.                                     </div>
  759.                                     ";
  760.                 // line 477
  761.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruetrue477)) {
  762.                     // line 478
  763.                     echo "                                        <div class=\"ec-select\">
  764.                                             ";
  765.                     // line 479
  766.                     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.'479$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue479), 479$this->source), 'row');
  767.                     echo "
  768.                                             ";
  769.                     // line 480
  770.                     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.'480$this->source); })()), "classcategory_id2", [], "any"falsefalsetrue480), 480$this->source), 'errors');
  771.                     echo "
  772.                                         </div>
  773.                                     ";
  774.                 }
  775.                 // line 483
  776.                 echo "                                ";
  777.             }
  778.             // line 484
  779.             echo "
  780. <div class=\"head\">
  781. \t\t\t\t\t
  782. <div class=\"area\">
  783. <p class=\"formquantitytext\">最小単位10冊より、10冊単位でご入力下さい。<p>
  784.                     ";
  785.             // line 491
  786.             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/option.twig");
  787.             echo "<div class=\"ec-numberInput\">
  788. \t\t\t\t\t\t\t\t<p class=\"heading\">お見積冊数</p>
  789.                                     ";
  790.             // line 493
  791.             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.'493$this->source); })()), "quantity", [], "any"falsefalsetrue493), 493$this->source), 'widget');
  792.             echo "<span>冊</span>
  793.                                     ";
  794.             // line 494
  795.             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.'494$this->source); })()), "quantity", [], "any"falsefalsetrue494), 494$this->source), 'errors');
  796.             echo "
  797.                                 </div>
  798. \t\t\t\t\t\t\t\t
  799. ";
  800.             // line 504
  801.             echo "<script>
  802. \$formquantity = document.getElementById('quantity');
  803.   \$formquantity.setAttribute('min', '10');
  804.   \$formquantity.setAttribute('step', '10');
  805.   \$formquantity.value = 10;
  806. \$formquantity.addEventListener('change', () => {
  807.   const val = parseInt(\$formquantity.value, 10);
  808.   if (val % 10 !== 0) {
  809.     alert('10冊単位でご入力下さい');
  810.     \$formquantity.value = ''; // または、前の正しい値に戻す処理を追加も可
  811.   }
  812. });
  813. </script>
  814. </div>
  815. </div>
  816.                             </div>
  817.                             <div class=\"ec-productRole__btn\">
  818.                                 <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  819.                                     ";
  820.             // line 524
  821.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お見積もりはコチラ"), "html"nulltrue);
  822.             echo "
  823.                                 </button>
  824.                             </div>
  825.                         ";
  826.         } else {
  827.             // line 528
  828.             echo "                            <div class=\"ec-productRole__btn\">
  829.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  830.                                     ";
  831.             // line 530
  832.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  833.             echo "
  834.                                 </button>
  835.                             </div>
  836.                         ";
  837.         }
  838.         // line 534
  839.         echo "
  840.                         ";
  841.         // line 535
  842.         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.'535$this->source); })()), 535$this->source), 'rest');
  843.         echo "
  844.                     </form>
  845.                     ";
  846.         // line 537
  847.         echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Product/option_description.twig");
  848.         echo "<div class=\"ec-modal\">
  849.                         <div class=\"ec-modal-overlay\">
  850.                             <div class=\"ec-modal-wrap\">
  851.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
  852.         // line 540
  853.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  854.         echo "\" alt=\"\"/></span></span>
  855.                                 <div id=\"ec-modal-header\" class=\"text-center\">";
  856.         // line 541
  857.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  858.         echo "</div>
  859.                                 <div class=\"ec-modal-box\">
  860.                                     <div class=\"ec-role\">
  861.                                         <span class=\"ec-inlineBtn--cancel\">";
  862.         // line 544
  863.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  864.         echo "</span>
  865.                                         <a href=\"";
  866.         // line 545
  867.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  868.         echo "\" class=\"ec-inlineBtn--action\">";
  869.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お見積りへ進む"), "html"nulltrue);
  870.         echo "</a>
  871.                                     </div>
  872.                                 </div>
  873.                             </div>
  874.                         </div>
  875.                     </div>
  876.                     ";
  877.         // line 551
  878.         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.'551$this->source); })()), "option_favorite_product", [], "any"falsefalsetrue551)) {
  879.             // line 552
  880.             echo "                        <form action=\"";
  881.             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.'552$this->source); })()), "id", [], "any"falsefalsetrue552)]), "html"nulltrue);
  882.             echo "\" method=\"post\" style=\"display:none;\">
  883.                             <div class=\"ec-productRole__btn\">
  884.                                 ";
  885.             // line 554
  886.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'554$this->source); })()) == false)) {
  887.                 // line 555
  888.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  889.                                         ";
  890.                 // line 556
  891.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  892.                 echo "
  893.                                     </button>
  894.                                 ";
  895.             } else {
  896.                 // line 559
  897.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  898.                                             disabled=\"disabled\">";
  899.                 // line 560
  900.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  901.                 echo "
  902.                                     </button>
  903.                                 ";
  904.             }
  905.             // line 563
  906.             echo "                            </div>
  907.                         </form>
  908.                     ";
  909.         }
  910.         // line 566
  911.         echo "
  912. \t\t\t\t\t
  913. \t\t\t\t</div>
  914. \t\t\t</div>
  915. \t\t\t<div class=\"box\">
  916. \t\t\t\t<div
  917. \t\t\t\t\tclass=\"text\">
  918. \t\t\t\t\t";
  919.         // line 578
  920.         echo "\t\t\t\t\t";
  921.         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.'578$this->source); })()), "hasProductClass", [], "any"falsefalsetrue578)) {
  922.             // line 579
  923.             echo "<div class=\"ec-productRole__priceRegular\">
  924. \t\t\t\t\t\t\t";
  925.             // line 580
  926.             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.'580$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue580)) && (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'580$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue580) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'580$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue580)))) {
  927.                 // line 581
  928.                 echo "\t\t\t\t\t\t\t\t<p>
  929. \t\t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  930. \t\t\t\t\t\t\t\t\t\t";
  931.                 // line 583
  932.                 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.'583$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue583), 583$this->source)), "html"nulltrue);
  933.                 echo "(税別)</span>
  934. \t\t\t\t\t\t\t\t</p>
  935. \t\t\t\t\t\t\t";
  936.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 585
  937. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'585$this->source); })()), "getPrice01Min", [], "any"falsefalsetrue585)) &&  !(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.'585$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue585)))) {
  938.                 // line 586
  939.                 echo "
  940. \t\t\t\t\t\t\t\t<p>
  941. \t\t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  942. \t\t\t\t\t\t\t\t\t\t";
  943.                 // line 589
  944.                 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.'589$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue589), 589$this->source)), "html"nulltrue);
  945.                 echo "~
  946. \t\t\t\t\t\t\t\t\t\t";
  947.                 // line 590
  948.                 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.'590$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsetrue590), 590$this->source)), "html"nulltrue);
  949.                 echo "(税別)</span>
  950. \t\t\t\t\t\t\t\t</p>
  951. \t\t\t\t\t\t\t";
  952.             }
  953.             // line 593
  954.             echo "\t\t\t\t\t\t</div>
  955. \t\t\t\t\t";
  956.         } else {
  957.             // line 595
  958.             echo "\t\t\t\t\t\t";
  959.             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.'595$this->source); })()), "getPrice01Max", [], "any"falsefalsetrue595))) {
  960.                 // line 596
  961.                 echo "\t\t\t\t\t\t\t<p>
  962. \t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  963. \t\t\t\t\t\t\t\t\t";
  964.                 // line 598
  965.                 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.'598$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsetrue598), 598$this->source)), "html"nulltrue);
  966.                 echo "(税別)</span>
  967. \t\t\t\t\t\t\t</p>
  968. \t\t\t\t\t\t";
  969.             }
  970.             // line 601
  971.             echo "\t\t\t\t\t";
  972.         }
  973.         // line 602
  974.         echo "
  975. ";
  976.         // line 605
  977.         echo "\t\t\t\t\t<div class=\"ec-productRole__price big\">
  978.                     <span class=\"red\">キャンペーン価格(100冊/税別)</span>
  979. \t\t\t\t\t\t\t<br>
  980. ";
  981.         // line 610
  982.         echo "
  983. ";
  984.         // line 612
  985.         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.'612$this->source); })()), "stock_find", [], "any"falsefalsetrue612)) {
  986.             // line 613
  987.             echo "
  988. ";
  989.             // line 615
  990.             if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'615$this->source); })()), "ViewData", [=> 11], "method"falsefalsetrue615))) {
  991.                 // line 616
  992.                 echo "<div class=\"ec-price\">
  993. \t\t<span class=\"ec-price__price\">";
  994.                 // line 617
  995.                 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.'617$this->source); })()), "ViewData", [=> 11], "method"falsefalsetrue617), 617$this->source), "html"nulltrue);
  996.                 echo "</span>
  997. </div>
  998. ";
  999.             } else {
  1000.                 // line 622
  1001.                 if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'622$this->source); })()), "hasProductClass", [], "any"falsefalsetrue622)) {
  1002.                     // line 623
  1003.                     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.'623$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue623) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'623$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue623))) {
  1004.                         // line 624
  1005.                         echo "\t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1006. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  1007.                         // line 625
  1008.                         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.'625$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue625) == 0)) {
  1009.                             echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Block/textcampaign.twig");
  1010.                         } else {
  1011.                             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.'625$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue625), 625$this->source)), "html"nulltrue);
  1012.                             echo "/100冊";
  1013.                         }
  1014.                         echo "</span>
  1015. \t\t\t\t\t\t\t\t</div>
  1016. \t\t\t\t\t\t\t";
  1017.                     } else {
  1018.                         // line 628
  1019.                         echo "\t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1020. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
  1021.                         // line 629
  1022.                         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.'629$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue629), 629$this->source)), "html"nulltrue);
  1023.                         echo "
  1024. \t\t\t\t\t\t\t\t\t\t~
  1025. \t\t\t\t\t\t\t\t\t\t";
  1026.                         // line 631
  1027.                         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.'631$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsetrue631), 631$this->source)), "html"nulltrue);
  1028.                         echo "/100冊</span>
  1029. \t\t\t\t\t\t\t\t</div>
  1030. \t\t\t\t\t\t\t";
  1031.                     }
  1032.                     // line 634
  1033.                     echo "\t\t\t\t\t\t";
  1034.                 } else {
  1035.                     // line 635
  1036.                     echo "                        <div class=\"ec-price\">
  1037. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price\">";
  1038.                     // line 636
  1039.                     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.'636$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue636) == 0)) {
  1040.                         echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Block/textcampaign.twig");
  1041.                     } else {
  1042.                         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.'636$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsetrue636), 636$this->source)), "html"nulltrue);
  1043.                         echo "/100冊";
  1044.                     }
  1045.                     echo "</span>
  1046. \t\t\t\t\t\t\t\t</div>
  1047. \t\t\t\t\t\t";
  1048.                 }
  1049.                 // line 639
  1050.                 echo "
  1051. ";
  1052.             }
  1053.             // line 641
  1054.             echo "
  1055. ";
  1056.             // line 644
  1057.             echo " ";
  1058.         } else {
  1059.             // line 645
  1060.             echo "
  1061.  ";
  1062.             // line 647
  1063.             if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'647$this->source); })()), "ViewData", [=> 11], "method"falsefalsetrue647))) {
  1064.                 // line 648
  1065.                 echo "<div class=\"ec-price\">
  1066. \t\t<span class=\"ec-price__price\">";
  1067.                 // line 649
  1068.                 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.'649$this->source); })()), "ViewData", [=> 11], "method"falsefalsetrue649), 649$this->source), "html"nulltrue);
  1069.                 echo "</span>
  1070. </div>
  1071. ";
  1072.             } else {
  1073.                 // line 653
  1074.                 echo " <div class=\"ec-price\">
  1075. \t\t<span class=\"ec-price__price\">";
  1076.                 // line 654
  1077.                 echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env$context"Block/textcampaign.twig");
  1078.                 echo "</span>
  1079. </div>
  1080. ";
  1081.             }
  1082.             // line 657
  1083.             echo "
  1084. ";
  1085.         }
  1086.         // line 659
  1087.         echo "\t\t\t\t\t
  1088. \t\t\t\t\t</div>
  1089. \t\t\t\t\t<p>
  1090. \t\t\t\t\t\t";
  1091.         // line 668
  1092.         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.'668$this->source); })()), "ViewData", [=> 10], "method"falsefalsetrue668), 668$this->source), "html"nulltrue);
  1093.         echo "
  1094. \t\t\t\t\t</p>
  1095. \t\t\t\t</div>
  1096. \t\t\t</div>
  1097. \t\t\t  
  1098. \t\t\t\t\t
  1099. \t\t\t
  1100. \t\t\t<div class=\"text\">
  1101. \t\t\t<h2>";
  1102.         // line 684
  1103.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'684$this->source); })()), "code_min", [], "any"falsefalsetrue684))) {
  1104.             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.'684$this->source); })()), "code_min", [], "any"falsefalsetrue684), 684$this->source), "html"nulltrue);
  1105.         }
  1106.         echo " ";
  1107.         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.'684$this->source); })()), "name", [], "any"falsefalsetrue684), 684$this->source), "html"nulltrue);
  1108.         echo "</h2>
  1109. ";
  1110.         // line 687
  1111.         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.'687$this->source); })()), "description_detail", [], "any"falsefalsetrue687), 687$this->source));
  1112.         echo "
  1113. ";
  1114.         // line 690
  1115.         echo "\t\t\t";
  1116.         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.'690$this->source); })()), "freearea", [], "any"falsefalsetrue690)) {
  1117.             // line 691
  1118.             echo "\t\t\t\t";
  1119.             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.'691$this->source); })()), "freearea", [], "any"falsefalsetrue691), 691$this->source)), array(), truefalsetrue);
  1120.             echo "
  1121. \t\t\t\t";
  1122.         }
  1123.         // line 693
  1124.         echo "\t\t\t</div>
  1125. ";
  1126.         // line 697
  1127.         $context['_parent'] = $context;
  1128.         $context['_seq'] = twig_ensure_traversable(twig_slice($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.'697$this->source); })()), "ProductImage", [], "any"falsefalsetrue697), 1));
  1129.         foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  1130.             // line 698
  1131.             echo "\t\t\t\t\t\t\t<div class=\"fullimg\">
  1132. \t\t\t\t\t\t\t<img src=\"";
  1133.             // line 699
  1134.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 699$this->source), "save_image"), "html"nulltrue);
  1135.             echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\">
  1136. \t\t\t\t\t\t\t</div>
  1137. \t\t\t\t\t\t";
  1138.         }
  1139.         $_parent $context['_parent'];
  1140.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  1141.         $context array_intersect_key($context$_parent) + $_parent;
  1142.         // line 702
  1143.         echo "
  1144. \t\t\t
  1145. \t\t\t";
  1146.         // line 710
  1147.         echo "\t\t\t<div class=\"tel-fax\">
  1148. \t\t\t\t<div class=\"content\">
  1149. \t\t\t\t\t<div class=\"block fax\">
  1150. \t\t\t\t\t\t<p class=\"heading\">FAXからのお問い合わせ</p>
  1151. \t\t\t\t\t\t<div class=\"center\">
  1152. \t\t\t\t\t\t\t<a href=\"fax:0532-55-7373\">
  1153. \t\t\t\t\t\t\t\t<span>TEL.</span>0532-55-7373</a>
  1154. \t\t\t\t\t\t\t<p class=\"time\">受付時間 / 24時間年中無休</p>
  1155. \t\t\t\t\t\t</div>
  1156. \t\t\t\t\t\t<div class=\"block-btn\">
  1157. \t\t\t\t\t\t\t\t<a target=\"_blank\" href=\"https://kinkodo-calendar.com/html/template/kinkodo/assets/assets/pdf/order.pdf\">FAX注文用紙</a>
  1158. \t\t\t\t\t\t</div>
  1159. \t\t\t\t\t</div>
  1160. \t\t\t\t\t<div class=\"block tel\">
  1161. \t\t\t\t\t\t<p class=\"heading\">お電話からのお問い合わせ</p>
  1162. \t\t\t\t\t\t<div class=\"center\">
  1163. \t\t\t\t\t\t\t<a href=\"tel:0532-52-5749\">
  1164. \t\t\t\t\t\t\t\t<span>TEL.</span>0532-52-5749</a>
  1165. \t\t\t\t\t\t\t<p class=\"time\">受付時間 / 平日・土曜日9:00~18:30</p>
  1166. \t\t\t\t\t\t</div>
  1167. \t\t\t\t\t\t<div class=\"block-btn\">
  1168. \t\t\t\t\t\t<a href=\"/contact?contacttype=お問い合わせ\">メールフォーム</a>
  1169. \t\t\t\t\t\t</div>
  1170. \t\t\t\t\t</div>
  1171. \t\t\t\t</div>
  1172. \t\t\t\t<p class=\"time\">※FAX・メールの返信時間帯 平日・土曜日 / 9:00~19:00</p>
  1173. \t\t\t</div>
  1174. \t\t</div>
  1175. \t\t
  1176. \t</div>
  1177. ";
  1178.         
  1179.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  1180.         
  1181.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  1182.     }
  1183.     public function getTemplateName()
  1184.     {
  1185.         return "__string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc";
  1186.     }
  1187.     public function isTraitable()
  1188.     {
  1189.         return false;
  1190.     }
  1191.     public function getDebugInfo()
  1192.     {
  1193.         return array (  1265 => 710,  1256 => 702,  1247 => 699,  1244 => 698,  1240 => 697,  1235 => 693,  1229 => 691,  1226 => 690,  1221 => 687,  1212 => 684,  1193 => 668,  1182 => 659,  1178 => 657,  1172 => 654,  1169 => 653,  1163 => 649,  1160 => 648,  1158 => 647,  1155 => 645,  1152 => 644,  1148 => 641,  1144 => 639,  1133 => 636,  1130 => 635,  1127 => 634,  1121 => 631,  1116 => 629,  1113 => 628,  1102 => 625,  1099 => 624,  1097 => 623,  1095 => 622,  1088 => 617,  1085 => 616,  1083 => 615,  1080 => 613,  1078 => 612,  1075 => 610,  1069 => 605,  1065 => 602,  1062 => 601,  1056 => 598,  1052 => 596,  1049 => 595,  1045 => 593,  1039 => 590,  1035 => 589,  1030 => 586,  1028 => 585,  1023 => 583,  1019 => 581,  1017 => 580,  1014 => 579,  1011 => 578,  998 => 566,  993 => 563,  987 => 560,  984 => 559,  978 => 556,  975 => 555,  973 => 554,  967 => 552,  965 => 551,  954 => 545,  950 => 544,  944 => 541,  940 => 540,  934 => 537,  929 => 535,  926 => 534,  919 => 530,  915 => 528,  908 => 524,  886 => 504,  874 => 494,  870 => 493,  865 => 491,  856 => 484,  853 => 483,  847 => 480,  843 => 479,  840 => 478,  838 => 477,  833 => 475,  829 => 474,  826 => 473,  824 => 472,  821 => 471,  819 => 470,  815 => 469,  802 => 458,  796 => 455,  792 => 453,  790 => 452,  787 => 451,  781 => 448,  777 => 446,  775 => 445,  772 => 444,  766 => 441,  762 => 439,  760 => 438,  757 => 437,  751 => 434,  747 => 432,  745 => 431,  742 => 430,  736 => 427,  732 => 425,  730 => 424,  727 => 423,  721 => 420,  717 => 418,  715 => 417,  712 => 416,  706 => 413,  702 => 411,  699 => 410,  693 => 407,  689 => 405,  686 => 404,  680 => 401,  676 => 399,  674 => 398,  660 => 386,  651 => 384,  647 => 383,  643 => 381,  632 => 379,  610 => 377,  592 => 376,  581 => 371,  573 => 365,  569 => 363,  561 => 360,  539 => 357,  537 => 356,  520 => 355,  516 => 353,  512 => 352,  509 => 351,  506 => 350,  494 => 345,  480 => 333,  470 => 332,  455 => 326,  447 => 320,  443 => 317,  433 => 316,  381 => 269,  375 => 263,  371 => 262,  366 => 260,  362 => 259,  358 => 257,  352 => 255,  350 => 254,  345 => 253,  342 => 252,  332 => 250,  318 => 248,  313 => 246,  307 => 245,  289 => 244,  284 => 242,  263 => 224,  256 => 220,  228 => 195,  223 => 192,  214 => 186,  210 => 184,  208 => 183,  205 => 182,  196 => 176,  192 => 174,  190 => 173,  128 => 113,  121 => 112,  119 => 111,  113 => 110,  99 => 99,  96 => 98,  86 => 97,  76 => 16,  66 => 15,  55 => 11,  53 => 13,  40 => 11,);
  1194.     }
  1195.     public function getSourceContext()
  1196.     {
  1197.         return new Source("{#
  1198. This file is part of EC-CUBE
  1199. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1200. http://www.ec-cube.co.jp/
  1201. For the full copyright and license information, please view the LICENSE
  1202. file that was distributed with this source code.
  1203. #}
  1204. {% extends 'default_frame.twig' %}
  1205. {% set body_class = 'product_page' %}
  1206. {% block stylesheet %}
  1207. \t{# 
  1208. \t    <style>
  1209. \t
  1210. \t        .slick-slider {
  1211. \t            margin-bottom: 30px;
  1212. \t        }
  1213. \t
  1214. \t        .slick-dots {
  1215. \t            position: absolute;
  1216. \t            bottom: -45px;
  1217. \t            display: block;
  1218. \t            width: 100%;
  1219. \t            padding: 0;
  1220. \t            list-style: none;
  1221. \t            text-align: center;
  1222. \t        }
  1223. \t
  1224. \t        .slick-dots li {
  1225. \t            position: relative;
  1226. \t            display: inline-block;
  1227. \t            width: 20px;
  1228. \t            height: 20px;
  1229. \t            margin: 0 5px;
  1230. \t            padding: 0;
  1231. \t
  1232. \t            cursor: pointer;
  1233. \t        }
  1234. \t
  1235. \t        .slick-dots li button {
  1236. \t            font-size: 0;
  1237. \t            line-height: 0;
  1238. \t            display: block;
  1239. \t            width: 20px;
  1240. \t            height: 20px;
  1241. \t            padding: 5px;
  1242. \t            cursor: pointer;
  1243. \t            color: transparent;
  1244. \t            border: 0;
  1245. \t            outline: none;
  1246. \t            background: transparent;
  1247. \t        }
  1248. \t
  1249. \t        .slick-dots li button:hover,
  1250. \t        .slick-dots li button:focus {
  1251. \t            outline: none;
  1252. \t        }
  1253. \t
  1254. \t        .slick-dots li button:hover:before,
  1255. \t        .slick-dots li button:focus:before {
  1256. \t            opacity: 1;
  1257. \t        }
  1258. \t
  1259. \t        .slick-dots li button:before {
  1260. \t            content: \" \";
  1261. \t            line-height: 20px;
  1262. \t            position: absolute;
  1263. \t            top: 0;
  1264. \t            left: 0;
  1265. \t            width: 12px;
  1266. \t            height: 12px;
  1267. \t            text-align: center;
  1268. \t            opacity: .25;
  1269. \t            background-color: black;
  1270. \t            border-radius: 50%;
  1271. \t
  1272. \t        }
  1273. \t
  1274. \t        .slick-dots li.slick-active button:before {
  1275. \t            opacity: .75;
  1276. \t            background-color: black;
  1277. \t        }
  1278. \t
  1279. \t        .slick-dots li button.thumbnail img {
  1280. \t            width: 0;
  1281. \t            height: 0;
  1282. \t        }
  1283. \t
  1284. \t    </style>
  1285. \t     #}
  1286. {% endblock %}
  1287. {% block javascript %}
  1288. \t<script>
  1289. \t\teccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1290. // 規格2に選択肢を割り当てる。
  1291. function fnSetClassCategories(form, classcat_id2_selected) {
  1292. var \$form = \$(form);
  1293. var product_id = \$form.find('input[name=product_id]').val();
  1294. var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1295. var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1296. eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1297. }
  1298. {% if form.classcategory_id2 is defined %}fnSetClassCategories(\$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }});
  1299. {% elseif form.classcategory_id1 is defined %}
  1300. eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);{% endif %}
  1301. \t</script>
  1302. \t<script>
  1303. \t\t\$(function () { // bfcache無効化
  1304. \$(window).bind('pageshow', function (event) {
  1305. if (event.originalEvent.persisted) {
  1306. location.reload(true);
  1307. }
  1308. });
  1309. // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1310. // img タグに width, height が付与されている.
  1311. // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1312. // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1313. \$('.ec-grid2__cell').hide();
  1314. var removeSize = function () {
  1315. \$('.slide-item').height('');
  1316. \$('.slide-item img').removeAttr('width').removeAttr('height').removeAttr('style');
  1317. };
  1318. var slickInitial = function (slick) {
  1319. \$('.ec-grid2__cell').fadeIn(1500);
  1320. var baseHeight = \$(slick.target).height();
  1321. var baseWidth = \$(slick.target).width();
  1322. var rate = baseWidth / baseHeight;
  1323. \$('.slide-item').height(baseHeight * rate);
  1324. // 余白を削除する
  1325. // transform を使用することでCLSの影響を受けないようにする
  1326. \$('.slide-item img').css({
  1327. 'transform-origin': 'top left',
  1328. 'transform': 'scaleY(' + rate + ')',
  1329. 'transition': 'transform .1s'
  1330. });
  1331. // 正しいサイズに近くなったら属性を解除する
  1332. setTimeout(removeSize, 500);
  1333. };
  1334. \$('.item_visual').on('init', slickInitial);
  1335. // リサイズ時は CLS の影響を受けないため属性を解除する
  1336. \$(window).resize(removeSize);
  1337. \$('.item_visual').slick({
  1338. dots: false,
  1339. arrows: false,
  1340. responsive: [
  1341. {
  1342. breakpoint: 768,
  1343. settings: {
  1344. dots: true
  1345. }
  1346. }
  1347. ]
  1348. });
  1349. \$('.slideThumb').on('click', function () {
  1350. var index = \$(this).attr('data-index');
  1351. \$('.item_visual').slick('slickGoTo', index, false);
  1352. })
  1353. });
  1354. \t</script>
  1355. \t<script>
  1356. \t\t\$(function () {
  1357. \$('.add-cart').on('click', function (event){
  1358. {% if form.classcategory_id1 is defined %}
  1359. // 規格1フォームの必須チェック
  1360. if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1361. \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1362. return true;
  1363. } else {
  1364. \$('#classcategory_id1')[0].setCustomValidity('');
  1365. }
  1366. {% endif %}
  1367. {% if form.classcategory_id2 is defined %}
  1368. // 規格2フォームの必須チェック
  1369. if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1370. \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1371. return true;
  1372. } else {
  1373. \$('#classcategory_id2')[0].setCustomValidity('');
  1374. }
  1375. {% endif %}
  1376. // 個数フォームのチェック
  1377. if (\$('#quantity').val() < 1) {
  1378. \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1379. //\$('.ec-modal-box').addClass('nonebtns');
  1380. return true;
  1381. } else {
  1382. //\$('.ec-modal-box').removeClass('nonebtns');
  1383. \$('#quantity')[0].setCustomValidity('');
  1384. } event.preventDefault();
  1385. \$form = \$('#form1');
  1386. \$.ajax({
  1387. url: \$form.attr('action'),
  1388. type: \$form.attr('method'),
  1389. data: \$form.serialize(),
  1390. dataType: 'json',
  1391. beforeSend: function (xhr, settings) { // Buttonを無効にする
  1392. \$('.add-cart').prop('disabled', true);
  1393. }
  1394. }).done(function (data) { // レスポンス内のメッセージをalertで表示
  1395. \$.each(data.messages, function () {
  1396. \$('#ec-modal-header').text(this);
  1397. });
  1398. \$('.ec-modal').show()
  1399. // カートブロックを更新する
  1400. \$.ajax({url: \"{{ url('block_cart') }}\", type: 'GET', dataType: 'html'}).done(function (html) {
  1401. \$('.ec-headerRole__cart').html(html);
  1402. });
  1403. }).fail(function (data) {
  1404. alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1405. }).always(function (data) { // Buttonを有効にする
  1406. \$('.add-cart').prop('disabled', false);
  1407. });
  1408. });
  1409. });
  1410. \$('.ec-modal-wrap').on('click', function (e) { // モーダル内の処理は外側にバブリングさせない
  1411. e.stopPropagation();
  1412. });
  1413. \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
  1414. \$('.ec-modal').hide()
  1415. });
  1416. \t</script>
  1417. \t<script type=\"application/ld+json\">
  1418. \t\t{
  1419. \t\t        \"@context\": \"https://schema.org/\",
  1420. \t\t        \"@type\": \"Product\",
  1421. \t\t        \"name\": \"{{ Product.name }}\",
  1422. \t\t        \"image\": [
  1423. \t\t{% for img in Product.ProductImage %}
  1424. \t\t\t\"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"
  1425. \t\t\t{% if not loop.last %},
  1426. \t\t\t{% endif %}
  1427. \t\t{% else %}
  1428. \t\t\t\"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  1429. \t\t{% endfor %}
  1430. \t\t],
  1431. \t\t        \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  1432. \t\t{% if Product.code_min %}
  1433. \t\t\t\"sku\": \"{{ Product.code_min }}\",
  1434. \t\t{% endif %}
  1435. \t\t\"offers\": {
  1436. \t\t            \"@type\": \"Offer\",
  1437. \t\t            \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  1438. \t\t            \"priceCurrency\": \"{{ eccube_config.currency }}\",
  1439. \t\t            \"price\":
  1440. \t\t{{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  1441. \t\t            \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  1442. \t\t        }
  1443. \t\t    }
  1444. \t</script>
  1445. {#-------------------商品オプション 必須項目未入力時カート追加ボタンを押せないように--------------------#}
  1446. <script>
  1447.     \$(function() {
  1448.       var \$form = \$('#form1');
  1449.       var \$submit = \$form.find('.add-cart');
  1450.       function checkRequiredFields() {
  1451.         var allValid = true;
  1452.        \$('label.form-label.required').each(function () {
  1453.         var targetId = \$(this).attr('for');
  1454.         var \$input = \$('#' + targetId);
  1455.         if (\$input.length === 0) return;
  1456.         var isValid = true;
  1457.         if (\$input.is('select')) {
  1458.           var val = \$input.val();
  1459.           var firstVal = \$input.find('option:first').val();
  1460.           if (!val || val === firstVal) {
  1461.             isValid = false;
  1462.           }
  1463.         } else if (\$input.is('input, textarea')) {
  1464.           if (!\$input.val().trim()) {
  1465.             isValid = false;
  1466.           }
  1467.         }
  1468.         \$input.toggleClass('field-error', !isValid);
  1469.         if (!isValid) allValid = false;
  1470.       });
  1471.         \$submit.prop('disabled', !allValid);
  1472.       }
  1473.       // 入力・変更時にチェック
  1474.       \$form.on('input change', 'select, input, textarea', function() {
  1475.         checkRequiredFields();
  1476.       });
  1477.       // 初期状態でチェック
  1478.       checkRequiredFields();
  1479.     });
  1480. </script>
  1481. {#---------------------------------------------------------------------------------#}
  1482. {% endblock %}
  1483. {% block pagetitlearea %}
  1484. <div class=\"main-top\">
  1485. \t\t{# ページタイトル #}
  1486. \t\t<div id=\"pagetitle\">
  1487. \t\t\t<h2>
  1488. \t\t\t\tPRODUCT
  1489. \t\t\t\t<small>商品</small>
  1490. \t\t\t</h2>
  1491. \t\t\t<div class=\"image\">
  1492. \t\t\t\t<img src=\"{{ asset('assets/assets/images/pagetitle-image-product.jpg') }}\">
  1493. \t\t\t</div>
  1494. \t\t</div>
  1495. \t</div>
  1496. {% endblock %}
  1497. {% block main %}
  1498. \t<div class=\"ec-productRole\">
  1499. \t\t<div class=\"carender-detail\">
  1500. \t\t\t<p class=\"title\">
  1501. \t\t\t{# 商品コード #}{% if Product.code_min is not empty %}【{{ Product.code_min }}】{% endif %}{{ Product.name }}
  1502. \t\t\t</p>
  1503. {# 関連カテゴリ #}
  1504. \t\t\t\t\t{% if Product.ProductCategories is not empty %}
  1505. \t\t\t\t\t\t<div class=\"carender-detail-category\">
  1506. \t\t\t\t\t\t\t{% for ProductCategory in Product.ProductCategories %}
  1507. \t\t\t\t\t\t\t\t<ul>
  1508. \t\t\t\t\t\t\t\t\t<li>
  1509. \t\t\t\t\t\t\t\t\t\t{% for Category in ProductCategory.Category.path %}
  1510. \t\t\t\t\t\t\t\t\t\t\t{%- if loop.last == true %}
  1511. \t\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a>
  1512. \t\t\t\t\t\t\t\t\t\t\t{% endif -%}
  1513. \t\t\t\t\t\t\t\t\t\t{% endfor %}
  1514. \t\t\t\t\t\t\t\t\t</li>
  1515. \t\t\t\t\t\t\t\t</ul>
  1516. \t\t\t\t\t\t\t{% endfor %}
  1517. \t\t\t\t\t\t</div>
  1518. \t\t\t\t\t{% endif %}
  1519. \t\t\t<div class=\"image-txt\">
  1520. <div class=\"image{% if Product.stock_find %}{% else %} souldout{% endif %}\">
  1521. <div class=\"thumbset\">
  1522.           <ul class=\"main\">
  1523. \t\t   {% for ProductImage in Product.ProductImage %}
  1524.                             <li><div class=\"mainimage\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"{% if loop.index > 1 %} loading=\"lazy\"{% endif %}></div></li>
  1525.                         {% else %}
  1526.                             <li><div class=\"mainimage\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"></div></li>
  1527.                         {% endfor %}
  1528.           </ul>
  1529.           <ul class=\"thumb\">
  1530. \t\t  {% for ProductImage in Product.ProductImage %}
  1531.                             <li><div class=\"thumbimage\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div></li>
  1532.                         {% endfor %}
  1533.           </ul>
  1534.         </div>
  1535. </div><!--image-->
  1536. \t\t\t\t<div class=\"txtbox\">
  1537. \t\t\t\t
  1538. \t\t\t\t\t<table>
  1539. \t\t\t\t\t{% if Product.ViewData(1) is not empty %}
  1540. \t\t\t\t\t\t<tr>
  1541. \t\t\t\t\t\t\t<th>サイズ</th>
  1542. \t\t\t\t\t\t\t<td>{{Product.ViewData(1)}}</td>
  1543. \t\t\t\t\t\t</tr>
  1544. \t\t\t\t\t\t{% endif %}
  1545. \t\t\t\t\t\t{% if Product.ViewData(2) is not empty %}
  1546. \t\t\t\t\t\t<tr>
  1547. \t\t\t\t\t\t\t<th>用紙</th>
  1548. \t\t\t\t\t\t\t<td>{{Product.ViewData(2)}}</td>
  1549. \t\t\t\t\t\t</tr>
  1550. \t\t\t\t\t\t{% endif %}
  1551. \t\t\t\t\t\t{% if Product.ViewData(3) is not empty %}
  1552. \t\t\t\t\t\t<tr>
  1553. \t\t\t\t\t\t\t<th>梱包数(重量)</th>
  1554. \t\t\t\t\t\t\t<td>{{Product.ViewData(3)}}</td>
  1555. \t\t\t\t\t\t</tr>
  1556. \t\t\t\t\t\t{% endif %}
  1557. \t\t\t\t\t\t{% if Product.ViewData(4) is not empty %}
  1558. \t\t\t\t\t\t<tr>
  1559. \t\t\t\t\t\t\t<th>名入れスペース</th>
  1560. \t\t\t\t\t\t\t<td>{{Product.ViewData(4)}}</td>
  1561. \t\t\t\t\t\t</tr>
  1562. \t\t\t\t\t\t{% endif %}
  1563. \t\t\t\t\t\t{% if Product.ViewData(5) is not empty %}
  1564. \t\t\t\t\t\t<tr>
  1565. \t\t\t\t\t\t\t<th>名入れ印刷寸法</th>
  1566. \t\t\t\t\t\t\t<td>{{Product.ViewData(5)}}</td>
  1567. \t\t\t\t\t\t</tr>
  1568. \t\t\t\t\t\t{% endif %}
  1569. \t\t\t\t\t\t{% if Product.ViewData(6) is not empty %}
  1570. \t\t\t\t\t\t<tr>
  1571. \t\t\t\t\t\t\t<th>名入れ印刷方法</th>
  1572. \t\t\t\t\t\t\t<td>{{Product.ViewData(6)}}</td>
  1573. \t\t\t\t\t\t</tr>
  1574. \t\t\t\t\t\t{% endif %}
  1575. \t\t\t\t\t\t{% if Product.ViewData(7) is not empty %}
  1576. \t\t\t\t\t\t<tr>
  1577. \t\t\t\t\t\t\t<th>表紙名入印刷</th>
  1578. \t\t\t\t\t\t\t<td>{{Product.ViewData(7)}}</td>
  1579. \t\t\t\t\t\t</tr>
  1580. \t\t\t\t\t\t{% endif %}
  1581. \t\t\t\t\t\t{% if Product.ViewData(8) is not empty %}
  1582. \t\t\t\t\t\t<tr>
  1583. \t\t\t\t\t\t\t<th>製本</th>
  1584. \t\t\t\t\t\t\t<td>{{Product.ViewData(8)}}</td>
  1585. \t\t\t\t\t\t</tr>
  1586. \t\t\t\t\t\t{% endif %}
  1587. \t\t\t\t\t\t{% if Product.ViewData(9) is not empty %}
  1588. \t\t\t\t\t\t<tr>
  1589. \t\t\t\t\t\t\t<th>備考</th>
  1590. \t\t\t\t\t\t\t<td>{{Product.ViewData(9)}}</td>
  1591. \t\t\t\t\t\t</tr>
  1592. \t\t\t\t\t\t{% endif %}
  1593. \t\t\t\t\t</table>
  1594. <form class=\"order\" action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
  1595.                         {% if Product.stock_find %}
  1596.                             <div class=\"ec-productRole__actions\">
  1597.                                 {% if form.classcategory_id1 is defined %}
  1598.                                     <div class=\"ec-select\">
  1599.                                         {{ form_row(form.classcategory_id1) }}
  1600.                                         {{ form_errors(form.classcategory_id1) }}
  1601.                                     </div>
  1602.                                     {% if form.classcategory_id2 is defined %}
  1603.                                         <div class=\"ec-select\">
  1604.                                             {{ form_row(form.classcategory_id2) }}
  1605.                                             {{ form_errors(form.classcategory_id2) }}
  1606.                                         </div>
  1607.                                     {% endif %}
  1608.                                 {% endif %}
  1609. <div class=\"head\">
  1610. \t\t\t\t\t
  1611. <div class=\"area\">
  1612. <p class=\"formquantitytext\">最小単位10冊より、10冊単位でご入力下さい。<p>
  1613.                     {{ include('Product/option.twig') }}<div class=\"ec-numberInput\">
  1614. \t\t\t\t\t\t\t\t<p class=\"heading\">お見積冊数</p>
  1615.                                     {{ form_widget(form.quantity) }}<span>冊</span>
  1616.                                     {{ form_errors(form.quantity) }}
  1617.                                 </div>
  1618. \t\t\t\t\t\t\t\t
  1619. {# お見積冊数を10刻みに #}
  1620. <script>
  1621. \$formquantity = document.getElementById('quantity');
  1622.   \$formquantity.setAttribute('min', '10');
  1623.   \$formquantity.setAttribute('step', '10');
  1624.   \$formquantity.value = 10;
  1625. \$formquantity.addEventListener('change', () => {
  1626.   const val = parseInt(\$formquantity.value, 10);
  1627.   if (val % 10 !== 0) {
  1628.     alert('10冊単位でご入力下さい');
  1629.     \$formquantity.value = ''; // または、前の正しい値に戻す処理を追加も可
  1630.   }
  1631. });
  1632. </script>
  1633. </div>
  1634. </div>
  1635.                             </div>
  1636.                             <div class=\"ec-productRole__btn\">
  1637.                                 <button type=\"submit\" class=\"ec-blockBtn--action add-cart\">
  1638.                                     {{ 'お見積もりはコチラ'|trans }}
  1639.                                 </button>
  1640.                             </div>
  1641.                         {% else %}
  1642.                             <div class=\"ec-productRole__btn\">
  1643.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1644.                                     {{ 'ただいま品切れ中です。'|trans }}
  1645.                                 </button>
  1646.                             </div>
  1647.                         {% endif %}
  1648.                         {{ form_rest(form) }}
  1649.                     </form>
  1650.                     {{ include('Product/option_description.twig') }}<div class=\"ec-modal\">
  1651.                         <div class=\"ec-modal-overlay\">
  1652.                             <div class=\"ec-modal-wrap\">
  1653.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  1654.                                 <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  1655.                                 <div class=\"ec-modal-box\">
  1656.                                     <div class=\"ec-role\">
  1657.                                         <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  1658.                                         <a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'お見積りへ進む'|trans }}</a>
  1659.                                     </div>
  1660.                                 </div>
  1661.                             </div>
  1662.                         </div>
  1663.                     </div>
  1664.                     {% if BaseInfo.option_favorite_product %}
  1665.                         <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\" style=\"display:none;\">
  1666.                             <div class=\"ec-productRole__btn\">
  1667.                                 {% if is_favorite == false %}
  1668.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
  1669.                                         {{ 'お気に入りに追加'|trans }}
  1670.                                     </button>
  1671.                                 {% else %}
  1672.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\"
  1673.                                             disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  1674.                                     </button>
  1675.                                 {% endif %}
  1676.                             </div>
  1677.                         </form>
  1678.                     {% endif %}
  1679. \t\t\t\t\t
  1680. \t\t\t\t</div>
  1681. \t\t\t</div>
  1682. \t\t\t<div class=\"box\">
  1683. \t\t\t\t<div
  1684. \t\t\t\t\tclass=\"text\">
  1685. \t\t\t\t\t{# 通常価格 #}
  1686. \t\t\t\t\t{% if Product.hasProductClass -%}
  1687. \t\t\t\t\t\t<div class=\"ec-productRole__priceRegular\">
  1688. \t\t\t\t\t\t\t{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1689. \t\t\t\t\t\t\t\t<p>
  1690. \t\t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  1691. \t\t\t\t\t\t\t\t\t\t{{ Product.getPrice01IncTaxMin|price }}(税別)</span>
  1692. \t\t\t\t\t\t\t\t</p>
  1693. \t\t\t\t\t\t\t{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1694. \t\t\t\t\t\t\t\t<p>
  1695. \t\t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  1696. \t\t\t\t\t\t\t\t\t\t{{ Product.getPrice01IncTaxMin|price }}~
  1697. \t\t\t\t\t\t\t\t\t\t{{ Product.getPrice01IncTaxMax|price }}(税別)</span>
  1698. \t\t\t\t\t\t\t\t</p>
  1699. \t\t\t\t\t\t\t{% endif %}
  1700. \t\t\t\t\t\t</div>
  1701. \t\t\t\t\t{% else %}
  1702. \t\t\t\t\t\t{% if Product.getPrice01Max is not null %}
  1703. \t\t\t\t\t\t\t<p>
  1704. \t\t\t\t\t\t\t\t<span class=\"bold\">100冊時の通常価格:
  1705. \t\t\t\t\t\t\t\t\t{{ Product.getPrice01IncTaxMin|price }}(税別)</span>
  1706. \t\t\t\t\t\t\t</p>
  1707. \t\t\t\t\t\t{% endif %}
  1708. \t\t\t\t\t{% endif %}
  1709. {# 販売価格 #}
  1710. \t\t\t\t\t<div class=\"ec-productRole__price big\">
  1711.                     <span class=\"red\">キャンペーン価格(100冊/税別)</span>
  1712. \t\t\t\t\t\t\t<br>
  1713. {# 価格表示ここから #}
  1714. {# 在庫があるかどうか #}
  1715. {% if Product.stock_find %}
  1716. {# 販売価格にテキストがあるかどうか #}
  1717. {% if Product.ViewData(11) is not empty %}
  1718. <div class=\"ec-price\">
  1719. \t\t<span class=\"ec-price__price\">{{Product.ViewData(11)}}</span>
  1720. </div>
  1721. {# 販売価格にテキストがない場合価格を表示 0円の場合は準備中のテキストを表示 #}
  1722. {% else %}
  1723. {% if Product.hasProductClass -%}
  1724. \t\t\t\t\t\t\t{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1725. \t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1726. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{% if Product.getPrice02IncTaxMin == 0 %}{{ include('Block/textcampaign.twig') }}{% else %}{{ Product.getPrice02IncTaxMin|price }}/100冊{% endif %}</span>
  1727. \t\t\t\t\t\t\t\t</div>
  1728. \t\t\t\t\t\t\t{% else %}
  1729. \t\t\t\t\t\t\t\t<div class=\"ec-price\">
  1730. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}
  1731. \t\t\t\t\t\t\t\t\t\t~
  1732. \t\t\t\t\t\t\t\t\t\t{{ Product.getPrice02IncTaxMax|price }}/100冊</span>
  1733. \t\t\t\t\t\t\t\t</div>
  1734. \t\t\t\t\t\t\t{% endif %}
  1735. \t\t\t\t\t\t{% else %}
  1736.                         <div class=\"ec-price\">
  1737. \t\t\t\t\t\t\t\t\t<span class=\"ec-price__price\">{% if Product.getPrice02IncTaxMin == 0 %}{{ include('Block/textcampaign.twig') }}{% else %}{{ Product.getPrice02IncTaxMin|price }}/100冊{% endif %}</span>
  1738. \t\t\t\t\t\t\t\t</div>
  1739. \t\t\t\t\t\t{% endif %}
  1740. {% endif %}
  1741. {# 在庫がない場合 #}
  1742.  {% else %}
  1743.  {# 販売価格にテキストがあるかどうか #}
  1744. {% if Product.ViewData(11) is not empty %}
  1745. <div class=\"ec-price\">
  1746. \t\t<span class=\"ec-price__price\">{{Product.ViewData(11)}}</span>
  1747. </div>
  1748. {# 販売価格にテキストがない場合 #}
  1749. {% else %}
  1750.  <div class=\"ec-price\">
  1751. \t\t<span class=\"ec-price__price\">{{ include('Block/textcampaign.twig') }}</span>
  1752. </div>
  1753. {% endif %}
  1754. {% endif %}
  1755. {# 価格表示ここまで #}\t\t\t\t\t
  1756. \t\t\t\t\t</div>
  1757. \t\t\t\t\t<p>
  1758. \t\t\t\t\t\t{{Product.ViewData(10)}}
  1759. \t\t\t\t\t</p>
  1760. \t\t\t\t</div>
  1761. \t\t\t</div>
  1762. \t\t\t  
  1763. \t\t\t\t\t
  1764. \t\t\t
  1765. \t\t\t<div class=\"text\">
  1766. \t\t\t<h2>{# 商品コード #}{% if Product.code_min is not empty %}{{ Product.code_min }}{% endif %} {{ Product.name }}</h2>
  1767. {# 商品説明 #}
  1768. {{ Product.description_detail|raw|nl2br }}
  1769. {# フリーエリア #}
  1770. \t\t\t{% if Product.freearea %}
  1771. \t\t\t\t{{ include(template_from_string(Product.freearea), sandboxed = true) }}
  1772. \t\t\t\t{% endif %}
  1773. \t\t\t</div>
  1774. {# 商品画像2枚目以降から出力 #}
  1775. {% for ProductImage in Product.ProductImage|slice(1) %}
  1776. \t\t\t\t\t\t\t<div class=\"fullimg\">
  1777. \t\t\t\t\t\t\t<img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\">
  1778. \t\t\t\t\t\t\t</div>
  1779. \t\t\t\t\t\t{% endfor %}
  1780. \t\t\t
  1781. \t\t\t{# 電話とメールフォーム #}
  1782. \t\t\t<div class=\"tel-fax\">
  1783. \t\t\t\t<div class=\"content\">
  1784. \t\t\t\t\t<div class=\"block fax\">
  1785. \t\t\t\t\t\t<p class=\"heading\">FAXからのお問い合わせ</p>
  1786. \t\t\t\t\t\t<div class=\"center\">
  1787. \t\t\t\t\t\t\t<a href=\"fax:0532-55-7373\">
  1788. \t\t\t\t\t\t\t\t<span>TEL.</span>0532-55-7373</a>
  1789. \t\t\t\t\t\t\t<p class=\"time\">受付時間 / 24時間年中無休</p>
  1790. \t\t\t\t\t\t</div>
  1791. \t\t\t\t\t\t<div class=\"block-btn\">
  1792. \t\t\t\t\t\t\t\t<a target=\"_blank\" href=\"https://kinkodo-calendar.com/html/template/kinkodo/assets/assets/pdf/order.pdf\">FAX注文用紙</a>
  1793. \t\t\t\t\t\t</div>
  1794. \t\t\t\t\t</div>
  1795. \t\t\t\t\t<div class=\"block tel\">
  1796. \t\t\t\t\t\t<p class=\"heading\">お電話からのお問い合わせ</p>
  1797. \t\t\t\t\t\t<div class=\"center\">
  1798. \t\t\t\t\t\t\t<a href=\"tel:0532-52-5749\">
  1799. \t\t\t\t\t\t\t\t<span>TEL.</span>0532-52-5749</a>
  1800. \t\t\t\t\t\t\t<p class=\"time\">受付時間 / 平日・土曜日9:00~18:30</p>
  1801. \t\t\t\t\t\t</div>
  1802. \t\t\t\t\t\t<div class=\"block-btn\">
  1803. \t\t\t\t\t\t<a href=\"/contact?contacttype=お問い合わせ\">メールフォーム</a>
  1804. \t\t\t\t\t\t</div>
  1805. \t\t\t\t\t</div>
  1806. \t\t\t\t</div>
  1807. \t\t\t\t<p class=\"time\">※FAX・メールの返信時間帯 平日・土曜日 / 9:00~19:00</p>
  1808. \t\t\t</div>
  1809. \t\t</div>
  1810. \t\t
  1811. \t</div>
  1812. {% endblock %}""__string_template__063f8b06ae51e18c749e258f0c761d90400a6cd0d60e227da64a4fb27b8988fc""");
  1813.     }
  1814.     
  1815.     public function checkSecurity()
  1816.     {
  1817.         static $tags = array("set" => 13"if" => 110"for" => 244);
  1818.         static $filters = array("raw" => 99"json_encode" => 110"escape" => 112"trans" => 176"no_image_product" => 250"slice" => 253"replace" => 253"default" => 253"price" => 583"nl2br" => 687);
  1819.         static $functions = array("class_categories_as_json" => 99"url" => 220"asset" => 245"form_row" => 474"form_errors" => 475"include" => 491"form_widget" => 493"form_rest" => 535"template_from_string" => 691);
  1820.         try {
  1821.             $this->sandbox->checkSecurity(
  1822.                 ['set''if''for'],
  1823.                 ['raw''json_encode''escape''trans''no_image_product''slice''replace''default''price''nl2br'],
  1824.                 ['class_categories_as_json''url''asset''form_row''form_errors''include''form_widget''form_rest''template_from_string']
  1825.             );
  1826.         } catch (SecurityError $e) {
  1827.             $e->setSourceContext($this->source);
  1828.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  1829.                 $e->setTemplateLine($tags[$e->getTagName()]);
  1830.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  1831.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  1832.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  1833.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  1834.             }
  1835.             throw $e;
  1836.         }
  1837.     }
  1838. }