var/cache/dev/twig/bf/bfd1dc8b9930424f126de303ca7b111a.php line 88

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* pages/product/get_detail.html.twig */
  16. class __TwigTemplate_a036afd2f019ede9ab963721d351c017 extends Template
  17. {
  18. private Source $source;
  19. /**
  20. * @var array<string, Template>
  21. */
  22. private array $macros = [];
  23. public function __construct(Environment $env)
  24. {
  25. parent::__construct($env);
  26. $this->source = $this->getSourceContext();
  27. $this->blocks = [
  28. 'gtmDataLayer' => [$this, 'block_gtmDataLayer'],
  29. 'meta' => [$this, 'block_meta'],
  30. 'openGraph' => [$this, 'block_openGraph'],
  31. 'structuredData' => [$this, 'block_structuredData'],
  32. 'title' => [$this, 'block_title'],
  33. 'stylesheets' => [$this, 'block_stylesheets'],
  34. 'econdaTracing' => [$this, 'block_econdaTracing'],
  35. 'breadcrumb' => [$this, 'block_breadcrumb'],
  36. 'content' => [$this, 'block_content'],
  37. 'productHeadline' => [$this, 'block_productHeadline'],
  38. 'productSku' => [$this, 'block_productSku'],
  39. 'productFeedback' => [$this, 'block_productFeedback'],
  40. 'buyBox' => [$this, 'block_buyBox'],
  41. 'buyBoxActions' => [$this, 'block_buyBoxActions'],
  42. 'econdaSlider' => [$this, 'block_econdaSlider'],
  43. 'additionalInformation' => [$this, 'block_additionalInformation'],
  44. 'tenderText' => [$this, 'block_tenderText'],
  45. 'compare' => [$this, 'block_compare'],
  46. 'slot_center' => [$this, 'block_slot_center'],
  47. 'extraProductListing' => [$this, 'block_extraProductListing'],
  48. 'accessoriesProductsSlider' => [$this, 'block_accessoriesProductsSlider'],
  49. 'feedback' => [$this, 'block_feedback'],
  50. 'offcanvasCart' => [$this, 'block_offcanvasCart'],
  51. 'modal' => [$this, 'block_modal'],
  52. 'javascripts' => [$this, 'block_javascripts'],
  53. ];
  54. }
  55. protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  56. {
  57. // line 1
  58. return "pages/base.html.twig";
  59. }
  60. protected function doDisplay(array $context, array $blocks = []): iterable
  61. {
  62. $macros = $this->macros;
  63. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  64. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  65. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  66. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  67. // line 2
  68. $context["page_type_tracking"] = "cp products";
  69. // line 3
  70. if (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "attributes", [], "any", false, true, false, 3), "centAmountGross", [], "any", true, true, false, 3)) {
  71. // line 4
  72. $context["currentPrice"] = ((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "attributes", [], "any", true, true, false, 4)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 4, $this->source); })()), "attributes", [], "any", false, false, false, 4), ["centAmountGross" => 0])) : (["centAmountGross" => 0]));
  73. } else {
  74. // line 6
  75. $context["currentPrice"] = ["centAmountGross" => 0];
  76. }
  77. // line 1
  78. $this->parent = $this->load("pages/base.html.twig", 1);
  79. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  80. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  81. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  82. }
  83. // line 8
  84. /**
  85. * @return iterable<null|scalar|\Stringable>
  86. */
  87. public function block_gtmDataLayer(array $context, array $blocks = []): iterable
  88. {
  89. $macros = $this->macros;
  90. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  91. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "gtmDataLayer"));
  92. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  93. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "gtmDataLayer"));
  94. // line 9
  95. yield " ";
  96. $context["objectId"] = ((((CoreExtension::getAttribute($this->env, $this->source, ($context["product"] ?? null), "id", [], "any", true, true, false, 9)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 9, $this->source); })()), "id", [], "any", false, false, false, 9))) : ("")) . ".") . ((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "id", [], "any", true, true, false, 9)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 9, $this->source); })()), "id", [], "any", false, false, false, 9))) : ("")));
  97. // line 10
  98. yield " ";
  99. yield from $this->load("components/atoms/gtm-data-layer/gtm-data-layer.html.twig", 10)->unwrap()->yield(CoreExtension::merge($context, ["product_id" => ((CoreExtension::getAttribute($this->env, $this->source, // line 11
  100. ($context["variant"] ?? null), "displaySku", [], "any", true, true, false, 11)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 11, $this->source); })()), "displaySku", [], "any", false, false, false, 11), "")) : ("")), "objectId" => // line 12
  101. (isset($context["objectId"]) || array_key_exists("objectId", $context) ? $context["objectId"] : (function () { throw new RuntimeError('Variable "objectId" does not exist.', 12, $this->source); })()), "product_name" => ((CoreExtension::getAttribute($this->env, $this->source, // line 13
  102. ($context["variant"] ?? null), "name", [], "any", true, true, false, 13)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 13, $this->source); })()), "name", [], "any", false, false, false, 13), "")) : ("")), "category" => ((CoreExtension::getAttribute($this->env, $this->source, // line 14
  103. ($context["product"] ?? null), "categoryName", [], "any", true, true, false, 14)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 14, $this->source); })()), "categoryName", [], "any", false, false, false, 14), "")) : ("")), "product_price" => Twig\Extension\CoreExtension::default($this->extensions['App\Twig\Filters\PriceExtension']->priceDefaultFormat(CoreExtension::getAttribute($this->env, $this->source, // line 15
  104. (isset($context["currentPrice"]) || array_key_exists("currentPrice", $context) ? $context["currentPrice"] : (function () { throw new RuntimeError('Variable "currentPrice" does not exist.', 15, $this->source); })()), "centAmountGross", [], "any", false, false, false, 15)), ""), "brand" => ((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 16
  105. ($context["variant"] ?? null), "structuredData", [], "any", false, true, false, 16), "brand", [], "any", false, true, false, 16), "name", [], "any", false, true, false, 16), "value", [], "any", true, true, false, 16)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 16, $this->source); })()), "structuredData", [], "any", false, false, false, 16), "brand", [], "any", false, false, false, 16), "name", [], "any", false, false, false, 16), "value", [], "any", false, false, false, 16), "")) : ("")), "availability" => (((CoreExtension::getAttribute($this->env, $this->source, // line 17
  106. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 17, $this->source); })()), "salesStatus", [], "any", false, false, false, 17) == "saleable")) ? ("yes") : ("no"))]));
  107. // line 19
  108. yield " <script>
  109. window.dataLayer.push({
  110. 'event': 'eec.detail_view',
  111. 'ecommerce': {
  112. 'detail': {
  113. 'actionField': {'list': 'cp products'},
  114. 'products': [{
  115. 'name': '";
  116. // line 26
  117. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "name", [], "any", true, true, false, 26)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 26, $this->source); })()), "name", [], "any", false, false, false, 26), "")) : ("")), "html", null, true);
  118. yield "',
  119. 'id': '";
  120. // line 27
  121. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "displaySku", [], "any", true, true, false, 27)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 27, $this->source); })()), "displaySku", [], "any", false, false, false, 27), "")) : ("")), "html", null, true);
  122. yield "',
  123. 'objectId':'";
  124. // line 28
  125. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["objectId"]) || array_key_exists("objectId", $context) ? $context["objectId"] : (function () { throw new RuntimeError('Variable "objectId" does not exist.', 28, $this->source); })()), "html", null, true);
  126. yield "',
  127. 'price': '";
  128. // line 29
  129. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['App\Twig\Filters\PriceExtension']->priceDefaultFormat(CoreExtension::getAttribute($this->env, $this->source, (isset($context["currentPrice"]) || array_key_exists("currentPrice", $context) ? $context["currentPrice"] : (function () { throw new RuntimeError('Variable "currentPrice" does not exist.', 29, $this->source); })()), "centAmountGross", [], "any", false, false, false, 29)), "html", null, true);
  130. yield "',
  131. 'brand': '";
  132. // line 30
  133. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "structuredData", [], "any", false, true, false, 30), "brand", [], "any", false, true, false, 30), "name", [], "any", false, true, false, 30), "value", [], "any", true, true, false, 30)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 30, $this->source); })()), "structuredData", [], "any", false, false, false, 30), "brand", [], "any", false, false, false, 30), "name", [], "any", false, false, false, 30), "value", [], "any", false, false, false, 30), "")) : ("")), "html", null, true);
  134. yield "',
  135. 'category': '";
  136. // line 31
  137. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, ($context["product"] ?? null), "categoryName", [], "any", true, true, false, 31)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 31, $this->source); })()), "categoryName", [], "any", false, false, false, 31), "")) : ("")), "html", null, true);
  138. yield "',
  139. }]
  140. }
  141. },
  142. })
  143. </script>
  144. ";
  145. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  146. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  147. yield from [];
  148. }
  149. // line 39
  150. /**
  151. * @return iterable<null|scalar|\Stringable>
  152. */
  153. public function block_meta(array $context, array $blocks = []): iterable
  154. {
  155. $macros = $this->macros;
  156. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  157. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "meta"));
  158. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  159. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "meta"));
  160. // line 40
  161. yield " ";
  162. yield from $this->load("components/organisms/meta/meta.html.twig", 40)->unwrap()->yield(CoreExtension::merge($context, ["metaInformation" => ((CoreExtension::getAttribute($this->env, $this->source, // line 41
  163. ($context["variant"] ?? null), "metaInformation", [], "any", true, true, false, 41)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 41, $this->source); })()), "metaInformation", [], "any", false, false, false, 41), null)) : (null)), "fallback" => (CoreExtension::getAttribute($this->env, $this->source, // line 42
  164. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 42, $this->source); })()), "name", [], "any", false, false, false, 42) . $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("meta_description_default"))]));
  165. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  166. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  167. yield from [];
  168. }
  169. // line 46
  170. /**
  171. * @return iterable<null|scalar|\Stringable>
  172. */
  173. public function block_openGraph(array $context, array $blocks = []): iterable
  174. {
  175. $macros = $this->macros;
  176. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  177. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "openGraph"));
  178. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  179. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "openGraph"));
  180. // line 47
  181. yield " ";
  182. yield from $this->load("components/organisms/open-graph/open-graph.html.twig", 47)->unwrap()->yield(CoreExtension::merge($context, ["openGraphInformation" => ((CoreExtension::getAttribute($this->env, $this->source, // line 48
  183. ($context["variant"] ?? null), "openGraphInformation", [], "any", true, true, false, 48)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 48, $this->source); })()), "openGraphInformation", [], "any", false, false, false, 48), null)) : (null))]));
  184. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  185. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  186. yield from [];
  187. }
  188. // line 52
  189. /**
  190. * @return iterable<null|scalar|\Stringable>
  191. */
  192. public function block_structuredData(array $context, array $blocks = []): iterable
  193. {
  194. $macros = $this->macros;
  195. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  196. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "structuredData"));
  197. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  198. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "structuredData"));
  199. // line 53
  200. yield " ";
  201. yield from $this->yieldParentBlock("structuredData", $context, $blocks);
  202. yield "
  203. ";
  204. // line 54
  205. if (array_key_exists("variantStructuredData", $context)) {
  206. // line 55
  207. yield " ";
  208. yield from $this->load("components/atoms/structured-data/structured-data.html.twig", 55)->unwrap()->yield(CoreExtension::merge($context, ["structuredData" => (( // line 56
  209. array_key_exists("variantStructuredData", $context)) ? (Twig\Extension\CoreExtension::default((isset($context["variantStructuredData"]) || array_key_exists("variantStructuredData", $context) ? $context["variantStructuredData"] : (function () { throw new RuntimeError('Variable "variantStructuredData" does not exist.', 56, $this->source); })()))) : (""))]));
  210. // line 58
  211. yield " ";
  212. }
  213. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  214. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  215. yield from [];
  216. }
  217. // line 61
  218. /**
  219. * @return iterable<null|scalar|\Stringable>
  220. */
  221. public function block_title(array $context, array $blocks = []): iterable
  222. {
  223. $macros = $this->macros;
  224. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  225. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
  226. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  227. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
  228. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "name", [], "any", true, true, false, 61)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 61, $this->source); })()), "name", [], "any", false, false, false, 61), CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 61, $this->source); })()), "name", [], "any", false, false, false, 61))) : (CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 61, $this->source); })()), "name", [], "any", false, false, false, 61))), "html", null, true);
  229. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  230. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  231. yield from [];
  232. }
  233. // line 63
  234. /**
  235. * @return iterable<null|scalar|\Stringable>
  236. */
  237. public function block_stylesheets(array $context, array $blocks = []): iterable
  238. {
  239. $macros = $this->macros;
  240. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  241. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
  242. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  243. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
  244. // line 64
  245. yield " ";
  246. yield from $this->yieldParentBlock("stylesheets", $context, $blocks);
  247. yield "
  248. ";
  249. // line 66
  250. yield $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackLinkTags("product");
  251. yield "
  252. ";
  253. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  254. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  255. yield from [];
  256. }
  257. // line 68
  258. /**
  259. * @return iterable<null|scalar|\Stringable>
  260. */
  261. public function block_econdaTracing(array $context, array $blocks = []): iterable
  262. {
  263. $macros = $this->macros;
  264. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  265. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "econdaTracing"));
  266. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  267. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "econdaTracing"));
  268. // line 69
  269. yield " ";
  270. yield from $this->load("components/atoms/econda-tracking/econda-tracking.html.twig", 69)->unwrap()->yield(CoreExtension::merge($context, ["page_type_tracking" => // line 70
  271. (isset($context["page_type_tracking"]) || array_key_exists("page_type_tracking", $context) ? $context["page_type_tracking"] : (function () { throw new RuntimeError('Variable "page_type_tracking" does not exist.', 70, $this->source); })()), "econdaSend" => ["ec_Event" => [["type" => "view", "pid" => ((CoreExtension::getAttribute($this->env, $this->source, // line 75
  272. ($context["variant"] ?? null), "displaySku", [], "any", true, true, false, 75)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 75, $this->source); })()), "displaySku", [], "any", false, false, false, 75), "")) : ("")), "sku" => ((CoreExtension::getAttribute($this->env, $this->source, // line 76
  273. ($context["variant"] ?? null), "displaySku", [], "any", true, true, false, 76)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 76, $this->source); })()), "displaySku", [], "any", false, false, false, 76), "")) : ("")), "name" => ((CoreExtension::getAttribute($this->env, $this->source, // line 77
  274. ($context["variant"] ?? null), "name", [], "any", true, true, false, 77)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 77, $this->source); })()), "name", [], "any", false, false, false, 77), "")) : ("")), "price" => $this->extensions['App\Twig\Filters\PriceExtension']->priceDefaultFormat(CoreExtension::getAttribute($this->env, $this->source, // line 78
  275. (isset($context["currentPrice"]) || array_key_exists("currentPrice", $context) ? $context["currentPrice"] : (function () { throw new RuntimeError('Variable "currentPrice" does not exist.', 78, $this->source); })()), "centAmountGross", [], "any", false, false, false, 78)), "group" => CoreExtension::getAttribute($this->env, $this->source, // line 79
  276. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 79, $this->source); })()), "categoryName", [], "any", false, false, false, 79), "count" => 1, "var1" => null, "var2" => null, "var3" => null]]]]));
  277. // line 88
  278. yield "
  279. ";
  280. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  281. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  282. yield from [];
  283. }
  284. // line 90
  285. /**
  286. * @return iterable<null|scalar|\Stringable>
  287. */
  288. public function block_breadcrumb(array $context, array $blocks = []): iterable
  289. {
  290. $macros = $this->macros;
  291. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  292. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "breadcrumb"));
  293. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  294. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "breadcrumb"));
  295. // line 91
  296. yield " ";
  297. yield from $this->load("components/molecules/breadcrumb/breadcrumb.html.twig", 91)->unwrap()->yield(CoreExtension::merge($context, ["page" => "detail", "backOffset" => -1, "showBackAlways" => true]));
  298. // line 96
  299. yield "
  300. ";
  301. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  302. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  303. yield from [];
  304. }
  305. // line 99
  306. /**
  307. * @return iterable<null|scalar|\Stringable>
  308. */
  309. public function block_content(array $context, array $blocks = []): iterable
  310. {
  311. $macros = $this->macros;
  312. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  313. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
  314. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  315. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
  316. // line 100
  317. yield " <div class=\"product-detail\">
  318. <div class=\"product-detail__data\">
  319. <div class=\"product-detail__header\">
  320. <div class=\"product-detail__headline\">
  321. ";
  322. // line 104
  323. yield from $this->unwrap()->yieldBlock('productHeadline', $context, $blocks);
  324. // line 111
  325. yield "
  326. ";
  327. // line 112
  328. yield from $this->unwrap()->yieldBlock('productSku', $context, $blocks);
  329. // line 117
  330. yield " ";
  331. yield from $this->unwrap()->yieldBlock('productFeedback', $context, $blocks);
  332. // line 122
  333. yield " </div>
  334. <div class=\"product-detail__image\">
  335. ";
  336. // line 126
  337. yield from $this->load("components/organisms/pdp-gallery/pdp-gallery.html.twig", 126)->unwrap()->yield($context);
  338. // line 127
  339. yield " </div>
  340. <div class=\"product-detail__description\">
  341. ";
  342. // line 129
  343. $context["accessoriesSkus"] = $this->extensions['App\Twig\Functions\CrossSellExtension']->getCrossSellSkus((isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 129, $this->source); })()), Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::ACCESSORY"));
  344. // line 130
  345. yield " ";
  346. $context["sparepartSkus"] = $this->extensions['App\Twig\Functions\CrossSellExtension']->getCrossSellSkus((isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 130, $this->source); })()), Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::SPAREPART"));
  347. // line 131
  348. yield " ";
  349. $context["mainSkus"] = $this->extensions['App\Twig\Functions\CrossSellExtension']->getCrossSellSkus((isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 131, $this->source); })()), Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::MAIN"));
  350. // line 132
  351. yield " ";
  352. $context["serviceSkus"] = $this->extensions['App\Twig\Functions\CrossSellExtension']->getCrossSellSkus((isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 132, $this->source); })()), Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::SERVICE"));
  353. // line 133
  354. yield "
  355. ";
  356. // line 134
  357. $context["productLinks"] = Twig\Extension\CoreExtension::filter($this->env, [["slug" => "#product_information", "name" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("product_information"), "active" => true, "gtm" => "data-gtm-cp-pdp-go-to"], ["slug" => "#serviceProductsSlider", "name" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("product_service"), "active" => (Twig\Extension\CoreExtension::length($this->env->getCharset(), // line 139
  358. (isset($context["serviceSkus"]) || array_key_exists("serviceSkus", $context) ? $context["serviceSkus"] : (function () { throw new RuntimeError('Variable "serviceSkus" does not exist.', 139, $this->source); })())) > 0), "gtm" => "data-gtm-cp-pdp-go-to"], ["slug" => "#product-compare", "name" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("compare_products"), "active" => (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 145
  359. ($context["variant"] ?? null), "attributes", [], "any", false, true, false, 145), "comparable_articles", [], "any", true, true, false, 145) && !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 145, $this->source); })()), "attributes", [], "any", false, false, false, 145), "comparable_articles", [], "any", false, false, false, 145))), "gtm" => "data-gtm-cp-pdp-go-to"], ["slug" => "#accessoriesProductsSlider", "name" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("accessories_products_slider_headline"), "active" => ((Twig\Extension\CoreExtension::length($this->env->getCharset(), // line 151
  360. (isset($context["accessoriesSkus"]) || array_key_exists("accessoriesSkus", $context) ? $context["accessoriesSkus"] : (function () { throw new RuntimeError('Variable "accessoriesSkus" does not exist.', 151, $this->source); })())) > 0) || (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["sparepartSkus"]) || array_key_exists("sparepartSkus", $context) ? $context["sparepartSkus"] : (function () { throw new RuntimeError('Variable "sparepartSkus" does not exist.', 151, $this->source); })())) > 0)), "gtm" => "data-gtm-cp-pdp-go-to"]], // line 154
  361. function ($__v__) use ($context, $macros) { $context["v"] = $__v__; return CoreExtension::getAttribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 154, $this->source); })()), "active", [], "any", false, false, false, 154); });
  362. // line 155
  363. yield "
  364. ";
  365. // line 157
  366. yield from $this->load("components/organisms/product-description/product-description.html.twig", 157)->unwrap()->yield(CoreExtension::merge($context, ["product" => // line 158
  367. (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 158, $this->source); })()), "variant" => // line 159
  368. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 159, $this->source); })())]));
  369. // line 161
  370. yield "
  371. ";
  372. // line 162
  373. if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["productLinks"]) || array_key_exists("productLinks", $context) ? $context["productLinks"] : (function () { throw new RuntimeError('Variable "productLinks" does not exist.', 162, $this->source); })())) > 0)) {
  374. // line 163
  375. yield " <div class=\"product-detail__actions\">
  376. ";
  377. // line 165
  378. yield from $this->load("components/molecules/link-list/link-list.html.twig", 165)->unwrap()->yield(CoreExtension::merge($context, ["entries" => // line 166
  379. (isset($context["productLinks"]) || array_key_exists("productLinks", $context) ? $context["productLinks"] : (function () { throw new RuntimeError('Variable "productLinks" does not exist.', 166, $this->source); })()), "class" => "link-list--pdp", "classLink" => "text-link--arrow-left"]));
  380. // line 170
  381. yield " </div>
  382. ";
  383. }
  384. // line 172
  385. yield "
  386. ";
  387. // line 173
  388. if ((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "ghsImages", [], "any", true, true, false, 173) && !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 173, $this->source); })()), "ghsImages", [], "any", false, false, false, 173)))) {
  389. // line 174
  390. yield " <div class=\"product-detail__icons\">
  391. <div class=\"js-icon-image-gallery product-detail__icons-slider icon-slider\">
  392. <div class=\"swiper-wrapper\">
  393. ";
  394. // line 177
  395. $context['_parent'] = $context;
  396. $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 177, $this->source); })()), "ghsImages", [], "any", false, false, false, 177));
  397. foreach ($context['_seq'] as $context["_key"] => $context["icon"]) {
  398. // line 178
  399. yield " <div class=\"swiper-slide\">
  400. <img height=\"40\" src=\"";
  401. // line 179
  402. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, $context["icon"], "uri", [], "any", true, true, false, 179)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, $context["icon"], "uri", [], "any", false, false, false, 179))) : ("")), "html", null, true);
  403. yield "\" alt=\"";
  404. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, $context["icon"], "text", [], "any", true, true, false, 179)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, $context["icon"], "text", [], "any", false, false, false, 179))) : ("")), "html", null, true);
  405. yield "\">
  406. </div>
  407. ";
  408. }
  409. $_parent = $context['_parent'];
  410. unset($context['_seq'], $context['_key'], $context['icon'], $context['_parent']);
  411. $context = array_intersect_key($context, $_parent) + $_parent;
  412. // line 182
  413. yield " </div>
  414. <div class=\"icon-slider__prev swiper-button-prev\" aria-hidden=\"true\"></div>
  415. <div class=\"icon-slider__next swiper-button-next\" aria-hidden=\"true\"></div>
  416. </div>
  417. </div>
  418. ";
  419. }
  420. // line 188
  421. yield " </div>
  422. </div>
  423. <div class=\"product-detail__sidebar\">
  424. <div class=\"product-detail__variant-anchor\" id=\"buy-box__variant-selection\"></div>
  425. ";
  426. // line 192
  427. yield from $this->load("components/organisms/variant-selection/variant-selection.html.twig", 192)->unwrap()->yield(CoreExtension::merge($context, ["product" => // line 193
  428. (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 193, $this->source); })()), "variant" => // line 194
  429. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 194, $this->source); })())]));
  430. // line 196
  431. yield " <div class=\"product-detail__sticky-box\">
  432. ";
  433. // line 197
  434. yield from $this->unwrap()->yieldBlock('buyBox', $context, $blocks);
  435. // line 209
  436. yield " ";
  437. if (array_key_exists("slot_pdp_sidebar_default", $context)) {
  438. // line 210
  439. yield " ";
  440. yield from $this->load("components/organisms/storyblok/storyblok.html.twig", 210)->unwrap()->yield(CoreExtension::merge($context, ["componentData" => // line 211
  441. (isset($context["slot_pdp_sidebar_default"]) || array_key_exists("slot_pdp_sidebar_default", $context) ? $context["slot_pdp_sidebar_default"] : (function () { throw new RuntimeError('Variable "slot_pdp_sidebar_default" does not exist.', 211, $this->source); })()), "componentConfig" => ["contact-box" => ["modifier" => "detail js-cms-contact-box"]]]));
  442. // line 218
  443. yield " ";
  444. }
  445. // line 219
  446. yield " ";
  447. if (array_key_exists("slot_pdp_sidebar", $context)) {
  448. // line 220
  449. yield " ";
  450. yield from $this->load("components/organisms/storyblok/storyblok.html.twig", 220)->unwrap()->yield(CoreExtension::merge($context, ["componentData" => // line 221
  451. (isset($context["slot_pdp_sidebar"]) || array_key_exists("slot_pdp_sidebar", $context) ? $context["slot_pdp_sidebar"] : (function () { throw new RuntimeError('Variable "slot_pdp_sidebar" does not exist.', 221, $this->source); })()), "componentConfig" => ["contact-box" => ["modifier" => "detail js-cms-contact-box"]]]));
  452. // line 228
  453. yield " ";
  454. }
  455. // line 229
  456. yield " </div>
  457. </div>
  458. <div class=\"product-detail__info\">
  459. ";
  460. // line 232
  461. if ((($tmp = !(isset($context["isPunchout"]) || array_key_exists("isPunchout", $context) ? $context["isPunchout"] : (function () { throw new RuntimeError('Variable "isPunchout" does not exist.', 232, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
  462. // line 233
  463. yield " ";
  464. yield from $this->unwrap()->yieldBlock('econdaSlider', $context, $blocks);
  465. // line 271
  466. yield " ";
  467. }
  468. // line 272
  469. yield " ";
  470. yield from $this->unwrap()->yieldBlock('additionalInformation', $context, $blocks);
  471. // line 304
  472. yield "
  473. ";
  474. // line 305
  475. yield from $this->unwrap()->yieldBlock('tenderText', $context, $blocks);
  476. // line 307
  477. yield "
  478. ";
  479. // line 308
  480. yield from $this->unwrap()->yieldBlock('compare', $context, $blocks);
  481. // line 317
  482. yield " ";
  483. yield from $this->unwrap()->yieldBlock('slot_center', $context, $blocks);
  484. // line 327
  485. yield "
  486. ";
  487. // line 328
  488. yield from $this->unwrap()->yieldBlock('extraProductListing', $context, $blocks);
  489. // line 366
  490. yield "
  491. ";
  492. // line 367
  493. yield from $this->unwrap()->yieldBlock('accessoriesProductsSlider', $context, $blocks);
  494. // line 389
  495. yield "
  496. ";
  497. // line 390
  498. yield from $this->unwrap()->yieldBlock('feedback', $context, $blocks);
  499. // line 408
  500. yield " </div>
  501. <div class=\"product-detail__mobile-buy-box\">
  502. ";
  503. // line 410
  504. yield from $this->load("components/organisms/buy-box/small-mobile-buy-box.html.twig", 410)->unwrap()->yield(CoreExtension::merge($context, ["product" => // line 411
  505. (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 411, $this->source); })()), "variant" => // line 412
  506. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 412, $this->source); })()), "structuredProducts" => // line 413
  507. (isset($context["structuredProducts"]) || array_key_exists("structuredProducts", $context) ? $context["structuredProducts"] : (function () { throw new RuntimeError('Variable "structuredProducts" does not exist.', 413, $this->source); })()), "class" => "buy-box--mobile"]));
  508. // line 416
  509. yield "
  510. </div>
  511. </div>
  512. <div class=\"product-detail__cms-bottom\">
  513. ";
  514. // line 420
  515. if (array_key_exists("slot_pdp_bottom", $context)) {
  516. // line 421
  517. yield " <div class=\"spacing spacing--50\"></div>
  518. ";
  519. // line 422
  520. yield from $this->load("components/organisms/storyblok/storyblok.html.twig", 422)->unwrap()->yield(CoreExtension::merge($context, ["componentData" => // line 423
  521. (isset($context["slot_pdp_bottom"]) || array_key_exists("slot_pdp_bottom", $context) ? $context["slot_pdp_bottom"] : (function () { throw new RuntimeError('Variable "slot_pdp_bottom" does not exist.', 423, $this->source); })())]));
  522. // line 425
  523. yield " ";
  524. } else {
  525. // line 426
  526. yield " <div class=\"spacing spacing--50\"></div>
  527. ";
  528. // line 427
  529. yield from $this->load("components/organisms/last-seen-product-slider/last-seen-product-slider.html.twig", 427)->unwrap()->yield(CoreExtension::merge($context, ["headline" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("recently_viewed"), "headlineTag" => "h2", "additionalClass" => "product-detail__last-seen"]));
  530. // line 432
  531. yield " ";
  532. }
  533. // line 433
  534. yield " </div>
  535. </div>
  536. ";
  537. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  538. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  539. yield from [];
  540. }
  541. // line 104
  542. /**
  543. * @return iterable<null|scalar|\Stringable>
  544. */
  545. public function block_productHeadline(array $context, array $blocks = []): iterable
  546. {
  547. $macros = $this->macros;
  548. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  549. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productHeadline"));
  550. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  551. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productHeadline"));
  552. // line 105
  553. yield " ";
  554. yield from $this->load("components/atoms/headline/headline.html.twig", 105)->unwrap()->yield(CoreExtension::merge($context, ["headlineTag" => "h1", "text" => CoreExtension::getAttribute($this->env, $this->source, // line 107
  555. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 107, $this->source); })()), "name", [], "any", false, false, false, 107), "class" => "product-description__headline"]));
  556. // line 110
  557. yield " ";
  558. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  559. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  560. yield from [];
  561. }
  562. // line 112
  563. /**
  564. * @return iterable<null|scalar|\Stringable>
  565. */
  566. public function block_productSku(array $context, array $blocks = []): iterable
  567. {
  568. $macros = $this->macros;
  569. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  570. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productSku"));
  571. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  572. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productSku"));
  573. // line 113
  574. yield " <p class=\"product-description__sku\">
  575. ";
  576. // line 114
  577. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("product_sku"), "html", null, true);
  578. yield ": ";
  579. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 114, $this->source); })()), "displaySku", [], "any", false, false, false, 114), "html", null, true);
  580. yield "
  581. </p>
  582. ";
  583. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  584. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  585. yield from [];
  586. }
  587. // line 117
  588. /**
  589. * @return iterable<null|scalar|\Stringable>
  590. */
  591. public function block_productFeedback(array $context, array $blocks = []): iterable
  592. {
  593. $macros = $this->macros;
  594. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  595. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productFeedback"));
  596. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  597. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "productFeedback"));
  598. // line 118
  599. yield " <div class=\"etrusted--product-stars\" >
  600. <etrusted-product-review-list-widget-product-star-extension></etrusted-product-review-list-widget-product-star-extension>
  601. </div>
  602. ";
  603. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  604. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  605. yield from [];
  606. }
  607. // line 197
  608. /**
  609. * @return iterable<null|scalar|\Stringable>
  610. */
  611. public function block_buyBox(array $context, array $blocks = []): iterable
  612. {
  613. $macros = $this->macros;
  614. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  615. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "buyBox"));
  616. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  617. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "buyBox"));
  618. // line 198
  619. yield " ";
  620. yield from $this->load("components/organisms/buy-box/buy-box.html.twig", 198)->unwrap()->yield(CoreExtension::merge($context, ["product" => // line 199
  621. (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 199, $this->source); })()), "variant" => // line 200
  622. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 200, $this->source); })()), "structuredProducts" => // line 201
  623. (isset($context["structuredProducts"]) || array_key_exists("structuredProducts", $context) ? $context["structuredProducts"] : (function () { throw new RuntimeError('Variable "structuredProducts" does not exist.', 201, $this->source); })())]));
  624. // line 203
  625. yield " ";
  626. yield from $this->unwrap()->yieldBlock('buyBoxActions', $context, $blocks);
  627. // line 208
  628. yield " ";
  629. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  630. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  631. yield from [];
  632. }
  633. // line 203
  634. /**
  635. * @return iterable<null|scalar|\Stringable>
  636. */
  637. public function block_buyBoxActions(array $context, array $blocks = []): iterable
  638. {
  639. $macros = $this->macros;
  640. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  641. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "buyBoxActions"));
  642. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  643. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "buyBoxActions"));
  644. // line 204
  645. yield " <div class=\"buy-box__actions\">
  646. ";
  647. // line 205
  648. yield from $this->load("components/molecules/icon-links-actions/icon-links-actions.html.twig", 205)->unwrap()->yield($context);
  649. // line 206
  650. yield " </div>
  651. ";
  652. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  653. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  654. yield from [];
  655. }
  656. // line 233
  657. /**
  658. * @return iterable<null|scalar|\Stringable>
  659. */
  660. public function block_econdaSlider(array $context, array $blocks = []): iterable
  661. {
  662. $macros = $this->macros;
  663. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  664. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "econdaSlider"));
  665. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  666. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "econdaSlider"));
  667. // line 234
  668. yield " <div class=\"spacing spacing--30\"></div>
  669. <div class=\"product-detail__econda-div\">
  670. <div class=\"product-detail__econda-slider\" id=\"econdaProductsSlider\">
  671. ";
  672. // line 238
  673. $context["econdaWidgets"] = [["id" => "econda_1", "widgetId" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("econda_product_widget_id"), "headline" => ["text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("similar_products_slider_headline")], "component" => ""], ["id" => "econda_2", "widgetId" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("econda_product_buy_together_widget_id"), "headline" => ["text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("purchased_together_products_slider_headline")], "component" => ""]];
  674. // line 255
  675. yield " ";
  676. yield from $this->load("pages/product/get_detail.html.twig", 255, "775155179")->unwrap()->yield(CoreExtension::merge($context, ["entries" => // line 256
  677. (isset($context["econdaWidgets"]) || array_key_exists("econdaWidgets", $context) ? $context["econdaWidgets"] : (function () { throw new RuntimeError('Variable "econdaWidgets" does not exist.', 256, $this->source); })())]));
  678. // line 268
  679. yield " </div>
  680. </div>
  681. ";
  682. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  683. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  684. yield from [];
  685. }
  686. // line 272
  687. /**
  688. * @return iterable<null|scalar|\Stringable>
  689. */
  690. public function block_additionalInformation(array $context, array $blocks = []): iterable
  691. {
  692. $macros = $this->macros;
  693. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  694. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "additionalInformation"));
  695. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  696. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "additionalInformation"));
  697. // line 273
  698. yield " <div class=\"spacing spacing--30\"></div>
  699. ";
  700. // line 274
  701. yield from $this->load("pages/product/data-tabs.html.twig", 274)->unwrap()->yield($context);
  702. // line 275
  703. yield " ";
  704. if ((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "links", [], "any", false, true, false, 275), "epaper", [], "any", true, true, false, 275) && !Twig\Extension\CoreExtension::testEmpty(((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "links", [], "any", false, true, false, 275), "epaper", [], "any", true, true, false, 275)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 275, $this->source); })()), "links", [], "any", false, false, false, 275), "epaper", [], "any", false, false, false, 275))) : (""))))) {
  705. // line 276
  706. yield " ";
  707. yield from $this->load("components/atoms/text-link/text-link.html.twig", 276)->unwrap()->yield(CoreExtension::merge($context, ["class" => "text-link--arrow-right text-link--hide-in-print", "href" => ((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 279
  708. ($context["variant"] ?? null), "links", [], "any", false, true, false, 279), "epaper", [], "any", true, true, false, 279)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 279, $this->source); })()), "links", [], "any", false, false, false, 279), "epaper", [], "any", false, false, false, 279))) : ("")), "text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("catalog_page"), "attributes" => ["target" => "_blank"]]));
  709. // line 285
  710. yield " ";
  711. }
  712. // line 286
  713. yield " <div class=\"spacing spacing--10\"></div>
  714. ";
  715. // line 287
  716. if (CoreExtension::getAttribute($this->env, $this->source, ($context["cms_globals"] ?? null), "slot_inquiry", [], "any", true, true, false, 287)) {
  717. // line 288
  718. yield " ";
  719. yield from $this->load("pages/product/get_detail.html.twig", 288, "188396788")->unwrap()->yield(CoreExtension::merge($context, ["class" => "text-link js-modal button--arrow-right text-link--arrow-right", "type" => "button", "attributes" => ["data-modal-id" => "inquiry"]]));
  720. // line 301
  721. yield " ";
  722. }
  723. // line 302
  724. yield "
  725. ";
  726. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  727. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  728. yield from [];
  729. }
  730. // line 305
  731. /**
  732. * @return iterable<null|scalar|\Stringable>
  733. */
  734. public function block_tenderText(array $context, array $blocks = []): iterable
  735. {
  736. $macros = $this->macros;
  737. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  738. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "tenderText"));
  739. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  740. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "tenderText"));
  741. // line 306
  742. yield " ";
  743. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  744. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  745. yield from [];
  746. }
  747. // line 308
  748. /**
  749. * @return iterable<null|scalar|\Stringable>
  750. */
  751. public function block_compare(array $context, array $blocks = []): iterable
  752. {
  753. $macros = $this->macros;
  754. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  755. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "compare"));
  756. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  757. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "compare"));
  758. // line 309
  759. yield " ";
  760. if (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "attributes", [], "any", false, true, false, 309), "comparable_articles", [], "any", true, true, false, 309)) {
  761. // line 310
  762. yield " <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  763. ";
  764. // line 311
  765. yield from $this->load("components/organisms/product-compare/product-compare.html.twig", 311)->unwrap()->yield(CoreExtension::merge($context, ["productSku" => CoreExtension::getAttribute($this->env, $this->source, // line 312
  766. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 312, $this->source); })()), "sku", [], "any", false, false, false, 312), "compareSkus" => CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 313
  767. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 313, $this->source); })()), "attributes", [], "any", false, false, false, 313), "comparable_articles", [], "any", false, false, false, 313)]));
  768. // line 315
  769. yield " ";
  770. }
  771. // line 316
  772. yield " ";
  773. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  774. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  775. yield from [];
  776. }
  777. // line 317
  778. /**
  779. * @return iterable<null|scalar|\Stringable>
  780. */
  781. public function block_slot_center(array $context, array $blocks = []): iterable
  782. {
  783. $macros = $this->macros;
  784. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  785. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "slot_center"));
  786. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  787. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "slot_center"));
  788. // line 318
  789. yield " ";
  790. if (array_key_exists("slot_pdp_center", $context)) {
  791. // line 319
  792. yield " <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  793. <div class=\"product-detail__cms-center\">
  794. ";
  795. // line 321
  796. yield from $this->load("components/organisms/storyblok/storyblok.html.twig", 321)->unwrap()->yield(CoreExtension::merge($context, ["componentData" => // line 322
  797. (isset($context["slot_pdp_center"]) || array_key_exists("slot_pdp_center", $context) ? $context["slot_pdp_center"] : (function () { throw new RuntimeError('Variable "slot_pdp_center" does not exist.', 322, $this->source); })())]));
  798. // line 324
  799. yield " </div>
  800. ";
  801. }
  802. // line 326
  803. yield " ";
  804. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  805. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  806. yield from [];
  807. }
  808. // line 328
  809. /**
  810. * @return iterable<null|scalar|\Stringable>
  811. */
  812. public function block_extraProductListing(array $context, array $blocks = []): iterable
  813. {
  814. $macros = $this->macros;
  815. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  816. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "extraProductListing"));
  817. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  818. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "extraProductListing"));
  819. // line 329
  820. yield " ";
  821. if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["serviceSkus"]) || array_key_exists("serviceSkus", $context) ? $context["serviceSkus"] : (function () { throw new RuntimeError('Variable "serviceSkus" does not exist.', 329, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
  822. // line 330
  823. yield " <div class=\"spacing spacing--50\"></div>
  824. ";
  825. // line 331
  826. yield from $this->load("components/atoms/headline/headline.html.twig", 331)->unwrap()->yield(CoreExtension::merge($context, ["headlineTag" => "h2", "text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("product_service"), "class" => "headline--section", "attributes" => ["id" => "serviceProductsSlider"]]));
  827. // line 339
  828. yield " <div class=\"product-detail__service-products\">
  829. ";
  830. // line 340
  831. yield from $this->load("components/organisms/related-products/related-products.html.twig", 340)->unwrap()->yield(CoreExtension::merge($context, ["class" => "", "skus" => // line 342
  832. (isset($context["serviceSkus"]) || array_key_exists("serviceSkus", $context) ? $context["serviceSkus"] : (function () { throw new RuntimeError('Variable "serviceSkus" does not exist.', 342, $this->source); })()), "api_url" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_get_products"), "current_language" => CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 344
  833. (isset($context["storeContext"]) || array_key_exists("storeContext", $context) ? $context["storeContext"] : (function () { throw new RuntimeError('Variable "storeContext" does not exist.', 344, $this->source); })()), "localeInfo", [], "any", false, false, false, 344), "currentLocale", [], "any", false, false, false, 344)]));
  834. // line 346
  835. yield " </div>
  836. ";
  837. }
  838. // line 348
  839. yield "
  840. ";
  841. // line 349
  842. if ((($tmp = !Twig\Extension\CoreExtension::testEmpty((isset($context["mainSkus"]) || array_key_exists("mainSkus", $context) ? $context["mainSkus"] : (function () { throw new RuntimeError('Variable "mainSkus" does not exist.', 349, $this->source); })()))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
  843. // line 350
  844. yield " <div class=\"spacing spacing--50\"></div>
  845. ";
  846. // line 351
  847. yield from $this->load("components/atoms/headline/headline.html.twig", 351)->unwrap()->yield(CoreExtension::merge($context, ["headlineTag" => "h2", "text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("main_products"), "class" => "headline--section"]));
  848. // line 356
  849. yield " <div class=\"product-detail__main-products\">
  850. ";
  851. // line 357
  852. yield from $this->load("components/organisms/related-products/related-products.html.twig", 357)->unwrap()->yield(CoreExtension::merge($context, ["class" => "", "skus" => // line 359
  853. (isset($context["mainSkus"]) || array_key_exists("mainSkus", $context) ? $context["mainSkus"] : (function () { throw new RuntimeError('Variable "mainSkus" does not exist.', 359, $this->source); })()), "api_url" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_get_products"), "current_language" => CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 361
  854. (isset($context["storeContext"]) || array_key_exists("storeContext", $context) ? $context["storeContext"] : (function () { throw new RuntimeError('Variable "storeContext" does not exist.', 361, $this->source); })()), "localeInfo", [], "any", false, false, false, 361), "currentLocale", [], "any", false, false, false, 361)]));
  855. // line 363
  856. yield " </div>
  857. ";
  858. }
  859. // line 365
  860. yield " ";
  861. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  862. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  863. yield from [];
  864. }
  865. // line 367
  866. /**
  867. * @return iterable<null|scalar|\Stringable>
  868. */
  869. public function block_accessoriesProductsSlider(array $context, array $blocks = []): iterable
  870. {
  871. $macros = $this->macros;
  872. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  873. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "accessoriesProductsSlider"));
  874. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  875. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "accessoriesProductsSlider"));
  876. // line 368
  877. yield " ";
  878. if (( !Twig\Extension\CoreExtension::testEmpty((isset($context["sparepartSkus"]) || array_key_exists("sparepartSkus", $context) ? $context["sparepartSkus"] : (function () { throw new RuntimeError('Variable "sparepartSkus" does not exist.', 368, $this->source); })())) || !Twig\Extension\CoreExtension::testEmpty((isset($context["accessoriesSkus"]) || array_key_exists("accessoriesSkus", $context) ? $context["accessoriesSkus"] : (function () { throw new RuntimeError('Variable "accessoriesSkus" does not exist.', 368, $this->source); })())))) {
  879. // line 369
  880. yield " <div class=\"spacing spacing--50\"></div>
  881. ";
  882. // line 370
  883. yield from $this->load("components/atoms/headline/headline.html.twig", 370)->unwrap()->yield(CoreExtension::merge($context, ["headlineTag" => "h2", "text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("accessories_products_slider_headline"), "class" => "headline--section", "attributes" => ["id" => "accessoriesProductsSlider"]]));
  884. // line 378
  885. yield " <related-products-tabs
  886. tab-entries=\"";
  887. // line 379
  888. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(json_encode($this->extensions['App\Twig\Functions\CrossSellExtension']->getCrossSellEntries((isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 379, $this->source); })()), [Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::ACCESSORY"), Twig\Extension\CoreExtension::constant("App\\Twig\\Functions\\CrossSellExtension::SPAREPART")])), "html", null, true);
  889. yield "\"
  890. css-class=\"related-products-tabs\"
  891. image-service=\"";
  892. // line 381
  893. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["imageservice"]) || array_key_exists("imageservice", $context) ? $context["imageservice"] : (function () { throw new RuntimeError('Variable "imageservice" does not exist.', 381, $this->source); })()), "html", null, true);
  894. yield "\"
  895. api-url=\"";
  896. // line 382
  897. yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_get_products");
  898. yield "\"
  899. add-product-url=\"";
  900. // line 383
  901. yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("checkout_cart_add_line_item");
  902. yield "\"
  903. id=\"pdp-related-products\"
  904. current-language=\"";
  905. // line 385
  906. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["storeContext"]) || array_key_exists("storeContext", $context) ? $context["storeContext"] : (function () { throw new RuntimeError('Variable "storeContext" does not exist.', 385, $this->source); })()), "localeInfo", [], "any", false, false, false, 385), "currentLocale", [], "any", false, false, false, 385), "html", null, true);
  907. yield "\"
  908. product-component-class=\"product-component\"></related-products-tabs>
  909. ";
  910. }
  911. // line 388
  912. yield " ";
  913. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  914. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  915. yield from [];
  916. }
  917. // line 390
  918. /**
  919. * @return iterable<null|scalar|\Stringable>
  920. */
  921. public function block_feedback(array $context, array $blocks = []): iterable
  922. {
  923. $macros = $this->macros;
  924. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  925. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "feedback"));
  926. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  927. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "feedback"));
  928. // line 391
  929. yield " ";
  930. if (( !Twig\Extension\CoreExtension::testEmpty($this->extensions['App\Twig\Filters\CustomEmptyTextFallbackTranslatorExtension']->transFallbackEmptyText("product_feedback_widget_id")) && !(isset($context["isPunchout"]) || array_key_exists("isPunchout", $context) ? $context["isPunchout"] : (function () { throw new RuntimeError('Variable "isPunchout" does not exist.', 391, $this->source); })()))) {
  931. // line 392
  932. yield " <div id=\"feedback\" class=\"product-detail__feedback etrusted-js etrusted--invisible\">
  933. <div class=\"spacing spacing--50\"></div>
  934. ";
  935. // line 394
  936. yield from $this->load("components/atoms/headline/headline.html.twig", 394)->unwrap()->yield(CoreExtension::merge($context, ["headlineTag" => "h2", "text" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("customer_reviews"), "class" => "headline--section"]));
  937. // line 399
  938. yield " ";
  939. yield from $this->load("components/atoms/etrusted/etrusted.html.twig", 399)->unwrap()->yield(CoreExtension::merge($context, ["type" => "product", "class" => "etrusted--product-feedback", "sku" => CoreExtension::getAttribute($this->env, $this->source, // line 402
  940. (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 402, $this->source); })()), "sku", [], "any", false, false, false, 402), "widget_id" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("product_feedback_widget_id")]));
  941. // line 405
  942. yield " </div>
  943. ";
  944. }
  945. // line 407
  946. yield " ";
  947. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  948. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  949. yield from [];
  950. }
  951. // line 436
  952. /**
  953. * @return iterable<null|scalar|\Stringable>
  954. */
  955. public function block_offcanvasCart(array $context, array $blocks = []): iterable
  956. {
  957. $macros = $this->macros;
  958. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  959. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "offcanvasCart"));
  960. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  961. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "offcanvasCart"));
  962. // line 437
  963. yield " ";
  964. yield from $this->load("components/organisms/offcanvas-cart/offcanvas-cart.html.twig", 437)->unwrap()->yield($context);
  965. // line 438
  966. yield "
  967. ";
  968. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  969. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  970. yield from [];
  971. }
  972. // line 440
  973. /**
  974. * @return iterable<null|scalar|\Stringable>
  975. */
  976. public function block_modal(array $context, array $blocks = []): iterable
  977. {
  978. $macros = $this->macros;
  979. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  980. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modal"));
  981. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  982. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modal"));
  983. // line 441
  984. yield " ";
  985. if (CoreExtension::getAttribute($this->env, $this->source, ($context["cms_globals"] ?? null), "slot_inquiry", [], "any", true, true, false, 441)) {
  986. // line 442
  987. yield " ";
  988. yield from $this->load("pages/product/get_detail.html.twig", 442, "2104544243")->unwrap()->yield(CoreExtension::merge($context, ["modalId" => "inquiry"]));
  989. // line 460
  990. yield " ";
  991. }
  992. // line 461
  993. yield "
  994. ";
  995. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  996. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  997. yield from [];
  998. }
  999. // line 464
  1000. /**
  1001. * @return iterable<null|scalar|\Stringable>
  1002. */
  1003. public function block_javascripts(array $context, array $blocks = []): iterable
  1004. {
  1005. $macros = $this->macros;
  1006. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  1007. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
  1008. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  1009. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
  1010. // line 465
  1011. yield " <script>
  1012. window.dataStore = window.dataStore || [];
  1013. window.dataStore.sku = ";
  1014. // line 467
  1015. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((CoreExtension::getAttribute($this->env, $this->source, ($context["variant"] ?? null), "sku", [], "any", true, true, false, 467)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 467, $this->source); })()), "sku", [], "any", false, false, false, 467), "")) : ("")), "html", null, true);
  1016. yield ";
  1017. </script>
  1018. ";
  1019. // line 469
  1020. yield from $this->yieldParentBlock("javascripts", $context, $blocks);
  1021. yield "
  1022. ";
  1023. // line 471
  1024. yield $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackScriptTags("product");
  1025. yield "
  1026. ";
  1027. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1028. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1029. yield from [];
  1030. }
  1031. /**
  1032. * @codeCoverageIgnore
  1033. */
  1034. public function getTemplateName(): string
  1035. {
  1036. return "pages/product/get_detail.html.twig";
  1037. }
  1038. /**
  1039. * @codeCoverageIgnore
  1040. */
  1041. public function isTraitable(): bool
  1042. {
  1043. return false;
  1044. }
  1045. /**
  1046. * @codeCoverageIgnore
  1047. */
  1048. public function getDebugInfo(): array
  1049. {
  1050. return array ( 1215 => 471, 1210 => 469, 1205 => 467, 1201 => 465, 1188 => 464, 1176 => 461, 1173 => 460, 1170 => 442, 1167 => 441, 1154 => 440, 1142 => 438, 1139 => 437, 1126 => 436, 1115 => 407, 1111 => 405, 1109 => 402, 1107 => 399, 1105 => 394, 1101 => 392, 1098 => 391, 1085 => 390, 1074 => 388, 1068 => 385, 1063 => 383, 1059 => 382, 1055 => 381, 1050 => 379, 1047 => 378, 1045 => 370, 1042 => 369, 1039 => 368, 1026 => 367, 1015 => 365, 1011 => 363, 1009 => 361, 1008 => 359, 1007 => 357, 1004 => 356, 1002 => 351, 999 => 350, 997 => 349, 994 => 348, 990 => 346, 988 => 344, 987 => 342, 986 => 340, 983 => 339, 981 => 331, 978 => 330, 975 => 329, 962 => 328, 951 => 326, 947 => 324, 945 => 322, 944 => 321, 940 => 319, 937 => 318, 924 => 317, 913 => 316, 910 => 315, 908 => 313, 907 => 312, 906 => 311, 903 => 310, 900 => 309, 887 => 308, 876 => 306, 863 => 305, 851 => 302, 848 => 301, 845 => 288, 843 => 287, 840 => 286, 837 => 285, 835 => 279, 833 => 276, 830 => 275, 828 => 274, 825 => 273, 812 => 272, 799 => 268, 797 => 256, 795 => 255, 793 => 238, 787 => 234, 774 => 233, 762 => 206, 760 => 205, 757 => 204, 744 => 203, 733 => 208, 730 => 203, 728 => 201, 727 => 200, 726 => 199, 724 => 198, 711 => 197, 697 => 118, 684 => 117, 668 => 114, 665 => 113, 652 => 112, 641 => 110, 639 => 107, 637 => 105, 624 => 104, 611 => 433, 608 => 432, 606 => 427, 603 => 426, 600 => 425, 598 => 423, 597 => 422, 594 => 421, 592 => 420, 586 => 416, 584 => 413, 583 => 412, 582 => 411, 581 => 410, 577 => 408, 575 => 390, 572 => 389, 570 => 367, 567 => 366, 565 => 328, 562 => 327, 559 => 317, 557 => 308, 554 => 307, 552 => 305, 549 => 304, 546 => 272, 543 => 271, 540 => 233, 538 => 232, 533 => 229, 530 => 228, 528 => 221, 526 => 220, 523 => 219, 520 => 218, 518 => 211, 516 => 210, 513 => 209, 511 => 197, 508 => 196, 506 => 194, 505 => 193, 504 => 192, 498 => 188, 490 => 182, 479 => 179, 476 => 178, 472 => 177, 467 => 174, 465 => 173, 462 => 172, 458 => 170, 456 => 166, 455 => 165, 451 => 163, 449 => 162, 446 => 161, 444 => 159, 443 => 158, 442 => 157, 438 => 155, 436 => 154, 435 => 151, 434 => 145, 433 => 139, 432 => 134, 429 => 133, 426 => 132, 423 => 131, 420 => 130, 418 => 129, 414 => 127, 412 => 126, 406 => 122, 403 => 117, 401 => 112, 398 => 111, 396 => 104, 390 => 100, 377 => 99, 365 => 96, 362 => 91, 349 => 90, 337 => 88, 335 => 79, 334 => 78, 333 => 77, 332 => 76, 331 => 75, 330 => 70, 328 => 69, 315 => 68, 302 => 66, 296 => 64, 283 => 63, 260 => 61, 248 => 58, 246 => 56, 244 => 55, 242 => 54, 237 => 53, 224 => 52, 213 => 48, 211 => 47, 198 => 46, 187 => 42, 186 => 41, 184 => 40, 171 => 39, 153 => 31, 149 => 30, 145 => 29, 141 => 28, 137 => 27, 133 => 26, 124 => 19, 122 => 17, 121 => 16, 120 => 15, 119 => 14, 118 => 13, 117 => 12, 116 => 11, 114 => 10, 111 => 9, 98 => 8, 87 => 1, 84 => 6, 81 => 4, 79 => 3, 77 => 2, 64 => 1,);
  1051. }
  1052. public function getSourceContext(): Source
  1053. {
  1054. return new Source("{% extends 'pages/base.html.twig' %}
  1055. {% set page_type_tracking = 'cp products' %}
  1056. {% if variant.attributes.centAmountGross is defined %}
  1057. {% set currentPrice = variant.attributes|default({'centAmountGross': 0}) %}
  1058. {% else %}
  1059. {% set currentPrice = {'centAmountGross': 0} %}
  1060. {% endif%}
  1061. {% block gtmDataLayer %}
  1062. {% set objectId = product.id|default ~'.' ~ variant.id|default %}
  1063. {% include('components/atoms/gtm-data-layer/gtm-data-layer.html.twig') with {
  1064. 'product_id': variant.displaySku|default(''),
  1065. 'objectId':objectId,
  1066. 'product_name': variant.name|default(''),
  1067. 'category': product.categoryName|default(''),
  1068. 'product_price': currentPrice.centAmountGross|priceDefaultFormat|default(''),
  1069. 'brand': variant.structuredData.brand.name.value|default(''),
  1070. 'availability': variant.salesStatus == \"saleable\" ? \"yes\" : \"no\"
  1071. } %}
  1072. <script>
  1073. window.dataLayer.push({
  1074. 'event': 'eec.detail_view',
  1075. 'ecommerce': {
  1076. 'detail': {
  1077. 'actionField': {'list': 'cp products'},
  1078. 'products': [{
  1079. 'name': '{{ variant.name|default('') }}',
  1080. 'id': '{{ variant.displaySku|default('') }}',
  1081. 'objectId':'{{ objectId }}',
  1082. 'price': '{{ currentPrice.centAmountGross|priceDefaultFormat }}',
  1083. 'brand': '{{ variant.structuredData.brand.name.value|default('') }}',
  1084. 'category': '{{ product.categoryName|default('') }}',
  1085. }]
  1086. }
  1087. },
  1088. })
  1089. </script>
  1090. {% endblock %}
  1091. {% block meta %}
  1092. {% include 'components/organisms/meta/meta.html.twig' with {
  1093. 'metaInformation': variant.metaInformation|default(null),
  1094. 'fallback': variant.name ~ 'meta_description_default'|trans,
  1095. } %}
  1096. {% endblock %}
  1097. {% block openGraph %}
  1098. {% include 'components/organisms/open-graph/open-graph.html.twig' with {
  1099. 'openGraphInformation': variant.openGraphInformation|default(null)
  1100. } %}
  1101. {% endblock %}
  1102. {% block structuredData %}
  1103. {{ parent() }}
  1104. {% if variantStructuredData is defined %}
  1105. {% include('components/atoms/structured-data/structured-data.html.twig') with {
  1106. 'structuredData': variantStructuredData|default,
  1107. } %}
  1108. {% endif %}
  1109. {% endblock %}
  1110. {% block title %}{{ variant.name|default(product.name) }}{% endblock %}
  1111. {% block stylesheets %}
  1112. {{ parent() }}
  1113. {{ encore_entry_link_tags('product') }}
  1114. {% endblock %}
  1115. {% block econdaTracing %}
  1116. {% include('components/atoms/econda-tracking/econda-tracking.html.twig') with{
  1117. 'page_type_tracking': page_type_tracking,
  1118. 'econdaSend': {
  1119. ec_Event: [
  1120. {
  1121. type: 'view',
  1122. pid: variant.displaySku|default('') ,
  1123. sku: variant.displaySku|default('') ,
  1124. name: variant.name|default('') ,
  1125. price: currentPrice.centAmountGross|priceDefaultFormat ,
  1126. group: variant.categoryName,
  1127. count: 1,
  1128. var1: null,
  1129. var2: null,
  1130. var3: null
  1131. }
  1132. ]
  1133. },
  1134. } %}
  1135. {% endblock %}
  1136. {% block breadcrumb %}
  1137. {% include('components/molecules/breadcrumb/breadcrumb.html.twig') with {
  1138. 'page': 'detail',
  1139. 'backOffset': -1,
  1140. 'showBackAlways': true
  1141. } %}
  1142. {% endblock %}
  1143. {% block content %}
  1144. <div class=\"product-detail\">
  1145. <div class=\"product-detail__data\">
  1146. <div class=\"product-detail__header\">
  1147. <div class=\"product-detail__headline\">
  1148. {% block productHeadline %}
  1149. {% include('components/atoms/headline/headline.html.twig') with {
  1150. 'headlineTag': 'h1',
  1151. 'text': variant.name,
  1152. 'class': 'product-description__headline'
  1153. } %}
  1154. {% endblock %}
  1155. {% block productSku %}
  1156. <p class=\"product-description__sku\">
  1157. {{ 'product_sku'|trans }}: {{ variant.displaySku }}
  1158. </p>
  1159. {% endblock %}
  1160. {% block productFeedback %}
  1161. <div class=\"etrusted--product-stars\" >
  1162. <etrusted-product-review-list-widget-product-star-extension></etrusted-product-review-list-widget-product-star-extension>
  1163. </div>
  1164. {% endblock %}
  1165. </div>
  1166. <div class=\"product-detail__image\">
  1167. {% include('components/organisms/pdp-gallery/pdp-gallery.html.twig') %}
  1168. </div>
  1169. <div class=\"product-detail__description\">
  1170. {% set accessoriesSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY') ) %}
  1171. {% set sparepartSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ) %}
  1172. {% set mainSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::MAIN') ) %}
  1173. {% set serviceSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SERVICE') ) %}
  1174. {% set productLinks = [
  1175. {slug: '#product_information', name: 'product_information'|trans, active: true, gtm: 'data-gtm-cp-pdp-go-to'},
  1176. {
  1177. slug: '#serviceProductsSlider',
  1178. name: 'product_service'|trans,
  1179. active: (serviceSkus|length > 0),
  1180. gtm: 'data-gtm-cp-pdp-go-to'
  1181. },
  1182. {
  1183. slug: '#product-compare',
  1184. name: 'compare_products'|trans,
  1185. active: (variant.attributes.comparable_articles is defined and variant.attributes.comparable_articles is not empty),
  1186. gtm: 'data-gtm-cp-pdp-go-to'
  1187. },
  1188. {
  1189. slug: '#accessoriesProductsSlider',
  1190. name: 'accessories_products_slider_headline'|trans,
  1191. active: (accessoriesSkus|length > 0) or (sparepartSkus|length > 0),
  1192. gtm: 'data-gtm-cp-pdp-go-to'
  1193. },
  1194. ]|filter(v => v.active) %}
  1195. {% include 'components/organisms/product-description/product-description.html.twig' with {
  1196. 'product': product,
  1197. 'variant': variant
  1198. } %}
  1199. {% if productLinks|length > 0 %}
  1200. <div class=\"product-detail__actions\">
  1201. {% include('components/molecules/link-list/link-list.html.twig') with {
  1202. 'entries': productLinks,
  1203. 'class': 'link-list--pdp',
  1204. 'classLink': 'text-link--arrow-left'
  1205. } %}
  1206. </div>
  1207. {% endif %}
  1208. {% if variant.ghsImages is defined and variant.ghsImages is not empty %}
  1209. <div class=\"product-detail__icons\">
  1210. <div class=\"js-icon-image-gallery product-detail__icons-slider icon-slider\">
  1211. <div class=\"swiper-wrapper\">
  1212. {% for icon in variant.ghsImages %}
  1213. <div class=\"swiper-slide\">
  1214. <img height=\"40\" src=\"{{ icon.uri| default}}\" alt=\"{{ icon.text| default }}\">
  1215. </div>
  1216. {% endfor %}
  1217. </div>
  1218. <div class=\"icon-slider__prev swiper-button-prev\" aria-hidden=\"true\"></div>
  1219. <div class=\"icon-slider__next swiper-button-next\" aria-hidden=\"true\"></div>
  1220. </div>
  1221. </div>
  1222. {% endif %}
  1223. </div>
  1224. </div>
  1225. <div class=\"product-detail__sidebar\">
  1226. <div class=\"product-detail__variant-anchor\" id=\"buy-box__variant-selection\"></div>
  1227. {% include 'components/organisms/variant-selection/variant-selection.html.twig' with {
  1228. 'product': product,
  1229. 'variant': variant,
  1230. } %}
  1231. <div class=\"product-detail__sticky-box\">
  1232. {% block buyBox %}
  1233. {% include 'components/organisms/buy-box/buy-box.html.twig' with {
  1234. 'product': product,
  1235. 'variant': variant,
  1236. 'structuredProducts': structuredProducts
  1237. } %}
  1238. {% block buyBoxActions %}
  1239. <div class=\"buy-box__actions\">
  1240. {% include 'components/molecules/icon-links-actions/icon-links-actions.html.twig' %}
  1241. </div>
  1242. {% endblock %}
  1243. {% endblock %}
  1244. {% if slot_pdp_sidebar_default is defined %}
  1245. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1246. 'componentData': slot_pdp_sidebar_default,
  1247. 'componentConfig': {
  1248. 'contact-box': {
  1249. modifier: 'detail js-cms-contact-box',
  1250. }
  1251. }
  1252. } %}
  1253. {% endif %}
  1254. {% if slot_pdp_sidebar is defined %}
  1255. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1256. 'componentData': slot_pdp_sidebar,
  1257. 'componentConfig': {
  1258. 'contact-box': {
  1259. modifier: 'detail js-cms-contact-box',
  1260. }
  1261. }
  1262. } %}
  1263. {% endif %}
  1264. </div>
  1265. </div>
  1266. <div class=\"product-detail__info\">
  1267. {% if not isPunchout %}
  1268. {% block econdaSlider %}
  1269. <div class=\"spacing spacing--30\"></div>
  1270. <div class=\"product-detail__econda-div\">
  1271. <div class=\"product-detail__econda-slider\" id=\"econdaProductsSlider\">
  1272. {% set econdaWidgets = [{
  1273. id:'econda_1',
  1274. widgetId: 'econda_product_widget_id'|trans,
  1275. headline: {
  1276. text:'similar_products_slider_headline'|trans,
  1277. },
  1278. component: ''
  1279. },
  1280. {
  1281. id:'econda_2',
  1282. widgetId: 'econda_product_buy_together_widget_id'|trans,
  1283. headline:{
  1284. text:'purchased_together_products_slider_headline'|trans,
  1285. },
  1286. component: ''
  1287. }
  1288. ] %}
  1289. {% embed 'components/organisms/tabs/tabs.html.twig' with {
  1290. 'entries': econdaWidgets
  1291. } %}
  1292. {% block entryContent %}
  1293. {% include ('components/organisms/econda-slider/econda-slider.html.twig') with {
  1294. 'econdaContentIdentifier': 'productEcondaSilder',
  1295. 'econdaProductId': variant.displaySku|default(''),
  1296. 'widgetId': entry['widgetId'],
  1297. 'headline': '',
  1298. 'class': 'econda-slider-pdp'
  1299. } %}
  1300. {% endblock %}
  1301. {% endembed %}
  1302. </div>
  1303. </div>
  1304. {% endblock %}
  1305. {% endif %}
  1306. {% block additionalInformation %}
  1307. <div class=\"spacing spacing--30\"></div>
  1308. {% include 'pages/product/data-tabs.html.twig' %}
  1309. {% if variant.links.epaper is defined and variant.links.epaper|default is not empty %}
  1310. {% include 'components/atoms/text-link/text-link.html.twig'
  1311. with {
  1312. 'class': 'text-link--arrow-right text-link--hide-in-print',
  1313. 'href': variant.links.epaper|default,
  1314. 'text': 'catalog_page'|trans,
  1315. 'attributes': {
  1316. target: '_blank'
  1317. }
  1318. } %}
  1319. {% endif %}
  1320. <div class=\"spacing spacing--10\"></div>
  1321. {% if cms_globals.slot_inquiry is defined %}
  1322. {% embed 'components/atoms/button/button.html.twig'
  1323. with {
  1324. 'class': 'text-link js-modal button--arrow-right text-link--arrow-right',
  1325. 'type': 'button',
  1326. 'attributes': {
  1327. 'data-modal-id': 'inquiry'
  1328. }
  1329. } %}
  1330. {% block content %}
  1331. {{ 'expert_advice_questions'|trans }}
  1332. <span class=\"text-link__arrow\"></span>
  1333. {% endblock %}
  1334. {% endembed %}
  1335. {% endif %}
  1336. {% endblock %}
  1337. {% block tenderText %}
  1338. {% endblock %}
  1339. {% block compare %}
  1340. {% if variant.attributes.comparable_articles is defined %}
  1341. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  1342. {% include ('components/organisms/product-compare/product-compare.html.twig') with {
  1343. \"productSku\": variant.sku,
  1344. \"compareSkus\":variant.attributes.comparable_articles
  1345. } %}
  1346. {% endif%}
  1347. {% endblock %}
  1348. {% block slot_center %}
  1349. {% if slot_pdp_center is defined %}
  1350. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  1351. <div class=\"product-detail__cms-center\">
  1352. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1353. 'componentData': slot_pdp_center
  1354. } %}
  1355. </div>
  1356. {% endif%}
  1357. {% endblock %}
  1358. {% block extraProductListing %}
  1359. {% if serviceSkus is not empty%}
  1360. <div class=\"spacing spacing--50\"></div>
  1361. {% include('components/atoms/headline/headline.html.twig') with {
  1362. 'headlineTag': 'h2',
  1363. 'text': 'product_service'|trans,
  1364. 'class': 'headline--section',
  1365. 'attributes': {
  1366. 'id':'serviceProductsSlider'
  1367. }
  1368. } %}
  1369. <div class=\"product-detail__service-products\">
  1370. {% include 'components/organisms/related-products/related-products.html.twig' with {
  1371. 'class': '',
  1372. 'skus': serviceSkus,
  1373. 'api_url': path('app_get_products') ,
  1374. 'current_language': storeContext.localeInfo.currentLocale,
  1375. } %}
  1376. </div>
  1377. {%endif%}
  1378. {% if mainSkus is not empty%}
  1379. <div class=\"spacing spacing--50\"></div>
  1380. {% include('components/atoms/headline/headline.html.twig') with {
  1381. 'headlineTag': 'h2',
  1382. 'text': 'main_products'|trans,
  1383. 'class': 'headline--section'
  1384. } %}
  1385. <div class=\"product-detail__main-products\">
  1386. {% include 'components/organisms/related-products/related-products.html.twig' with {
  1387. 'class': '',
  1388. 'skus': mainSkus,
  1389. 'api_url': path('app_get_products') ,
  1390. 'current_language': storeContext.localeInfo.currentLocale,
  1391. } %}
  1392. </div>
  1393. {% endif %}
  1394. {% endblock %}
  1395. {% block accessoriesProductsSlider %}
  1396. {% if sparepartSkus is not empty or accessoriesSkus is not empty %}
  1397. <div class=\"spacing spacing--50\"></div>
  1398. {% include('components/atoms/headline/headline.html.twig') with {
  1399. 'headlineTag': 'h2',
  1400. 'text': 'accessories_products_slider_headline'|trans,
  1401. 'class': 'headline--section',
  1402. 'attributes': {
  1403. 'id':'accessoriesProductsSlider'
  1404. }
  1405. } %}
  1406. <related-products-tabs
  1407. tab-entries=\"{{ getCrossSellEntries(variant, [constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY'),constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ])|json_encode }}\"
  1408. css-class=\"related-products-tabs\"
  1409. image-service=\"{{ imageservice }}\"
  1410. api-url=\"{{ path('app_get_products')}}\"
  1411. add-product-url=\"{{ path('checkout_cart_add_line_item') }}\"
  1412. id=\"pdp-related-products\"
  1413. current-language=\"{{ storeContext.localeInfo.currentLocale}}\"
  1414. product-component-class=\"product-component\"></related-products-tabs>
  1415. {% endif %}
  1416. {% endblock %}
  1417. {% block feedback %}
  1418. {% if 'product_feedback_widget_id'|transFallbackEmptyText is not empty and not isPunchout %}
  1419. <div id=\"feedback\" class=\"product-detail__feedback etrusted-js etrusted--invisible\">
  1420. <div class=\"spacing spacing--50\"></div>
  1421. {% include('components/atoms/headline/headline.html.twig') with {
  1422. 'headlineTag': 'h2',
  1423. 'text': 'customer_reviews'|trans,
  1424. 'class': 'headline--section'
  1425. } %}
  1426. {% include 'components/atoms/etrusted/etrusted.html.twig' with {
  1427. 'type':'product',
  1428. 'class': 'etrusted--product-feedback',
  1429. 'sku':variant.sku ,
  1430. 'widget_id':'product_feedback_widget_id'|trans
  1431. } %}
  1432. </div>
  1433. {% endif %}
  1434. {%endblock%}
  1435. </div>
  1436. <div class=\"product-detail__mobile-buy-box\">
  1437. {% include 'components/organisms/buy-box/small-mobile-buy-box.html.twig' with {
  1438. 'product': product,
  1439. 'variant': variant,
  1440. 'structuredProducts': structuredProducts,
  1441. 'class': 'buy-box--mobile'
  1442. } %}
  1443. </div>
  1444. </div>
  1445. <div class=\"product-detail__cms-bottom\">
  1446. {% if slot_pdp_bottom is defined %}
  1447. <div class=\"spacing spacing--50\"></div>
  1448. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1449. 'componentData': slot_pdp_bottom
  1450. } %}
  1451. {% else %}
  1452. <div class=\"spacing spacing--50\"></div>
  1453. {% include ('components/organisms/last-seen-product-slider/last-seen-product-slider.html.twig') with {
  1454. 'headline': 'recently_viewed'|trans,
  1455. 'headlineTag': 'h2',
  1456. 'additionalClass': 'product-detail__last-seen'
  1457. } %}
  1458. {% endif %}
  1459. </div>
  1460. </div>
  1461. {% endblock %}
  1462. {% block offcanvasCart %}
  1463. {% include 'components/organisms/offcanvas-cart/offcanvas-cart.html.twig' %}
  1464. {% endblock %}
  1465. {% block modal %}
  1466. {% if cms_globals.slot_inquiry is defined %}
  1467. {% embed 'components/organisms/modal/modal.html.twig' with {
  1468. 'modalId': 'inquiry'
  1469. } %}
  1470. {% block modalContent %}
  1471. {% set extraData = extraData|default({}) %}
  1472. {% set extraData = extraData|merge({'inquiryType': 'product'}) %}
  1473. {% set extraData = extraData|merge({'productSku': variant.sku}) %}
  1474. {% set extraData = extraData|merge({'products': structuredProducts|json_encode}) %}
  1475. <dynamic-form
  1476. service-base-url=\"{{ formservice }}\"
  1477. form-id=\"{{ cms_globals.slot_inquiry }}\"
  1478. extra-data=\"{{ extraData|json_encode }}\"
  1479. locale=\"{{ storeContext.localeInfo.currentLocale }}\"
  1480. frc-site-key=\"{{ frc_sitekey }}\"
  1481. ></dynamic-form>
  1482. {% endblock %}
  1483. {% endembed %}
  1484. {% endif %}
  1485. {% endblock %}
  1486. {% block javascripts %}
  1487. <script>
  1488. window.dataStore = window.dataStore || [];
  1489. window.dataStore.sku = {{ variant.sku|default('') }};
  1490. </script>
  1491. {{ parent() }}
  1492. {{ encore_entry_script_tags('product') }}
  1493. {% endblock %}
  1494. ", "pages/product/get_detail.html.twig", "/var/www/html/templates/default/pages/product/get_detail.html.twig");
  1495. }
  1496. }
  1497. /* pages/product/get_detail.html.twig */
  1498. class __TwigTemplate_a036afd2f019ede9ab963721d351c017___775155179 extends Template
  1499. {
  1500. private Source $source;
  1501. /**
  1502. * @var array<string, Template>
  1503. */
  1504. private array $macros = [];
  1505. public function __construct(Environment $env)
  1506. {
  1507. parent::__construct($env);
  1508. $this->source = $this->getSourceContext();
  1509. $this->blocks = [
  1510. 'entryContent' => [$this, 'block_entryContent'],
  1511. ];
  1512. }
  1513. protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  1514. {
  1515. // line 255
  1516. return "components/organisms/tabs/tabs.html.twig";
  1517. }
  1518. protected function doDisplay(array $context, array $blocks = []): iterable
  1519. {
  1520. $macros = $this->macros;
  1521. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  1522. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  1523. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  1524. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  1525. $this->parent = $this->load("components/organisms/tabs/tabs.html.twig", 255);
  1526. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  1527. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1528. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1529. }
  1530. // line 258
  1531. /**
  1532. * @return iterable<null|scalar|\Stringable>
  1533. */
  1534. public function block_entryContent(array $context, array $blocks = []): iterable
  1535. {
  1536. $macros = $this->macros;
  1537. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  1538. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "entryContent"));
  1539. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  1540. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "entryContent"));
  1541. // line 259
  1542. yield " ";
  1543. yield from $this->load("components/organisms/econda-slider/econda-slider.html.twig", 259)->unwrap()->yield(CoreExtension::merge($context, ["econdaContentIdentifier" => "productEcondaSilder", "econdaProductId" => ((CoreExtension::getAttribute($this->env, $this->source, // line 261
  1544. ($context["variant"] ?? null), "displaySku", [], "any", true, true, false, 261)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 261, $this->source); })()), "displaySku", [], "any", false, false, false, 261), "")) : ("")), "widgetId" => CoreExtension::getAttribute($this->env, $this->source, // line 262
  1545. (isset($context["entry"]) || array_key_exists("entry", $context) ? $context["entry"] : (function () { throw new RuntimeError('Variable "entry" does not exist.', 262, $this->source); })()), "widgetId", [], "array", false, false, false, 262), "headline" => "", "class" => "econda-slider-pdp"]));
  1546. // line 266
  1547. yield " ";
  1548. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1549. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1550. yield from [];
  1551. }
  1552. /**
  1553. * @codeCoverageIgnore
  1554. */
  1555. public function getTemplateName(): string
  1556. {
  1557. return "pages/product/get_detail.html.twig";
  1558. }
  1559. /**
  1560. * @codeCoverageIgnore
  1561. */
  1562. public function isTraitable(): bool
  1563. {
  1564. return false;
  1565. }
  1566. /**
  1567. * @codeCoverageIgnore
  1568. */
  1569. public function getDebugInfo(): array
  1570. {
  1571. return array ( 1796 => 266, 1794 => 262, 1793 => 261, 1791 => 259, 1778 => 258, 1755 => 255, 1215 => 471, 1210 => 469, 1205 => 467, 1201 => 465, 1188 => 464, 1176 => 461, 1173 => 460, 1170 => 442, 1167 => 441, 1154 => 440, 1142 => 438, 1139 => 437, 1126 => 436, 1115 => 407, 1111 => 405, 1109 => 402, 1107 => 399, 1105 => 394, 1101 => 392, 1098 => 391, 1085 => 390, 1074 => 388, 1068 => 385, 1063 => 383, 1059 => 382, 1055 => 381, 1050 => 379, 1047 => 378, 1045 => 370, 1042 => 369, 1039 => 368, 1026 => 367, 1015 => 365, 1011 => 363, 1009 => 361, 1008 => 359, 1007 => 357, 1004 => 356, 1002 => 351, 999 => 350, 997 => 349, 994 => 348, 990 => 346, 988 => 344, 987 => 342, 986 => 340, 983 => 339, 981 => 331, 978 => 330, 975 => 329, 962 => 328, 951 => 326, 947 => 324, 945 => 322, 944 => 321, 940 => 319, 937 => 318, 924 => 317, 913 => 316, 910 => 315, 908 => 313, 907 => 312, 906 => 311, 903 => 310, 900 => 309, 887 => 308, 876 => 306, 863 => 305, 851 => 302, 848 => 301, 845 => 288, 843 => 287, 840 => 286, 837 => 285, 835 => 279, 833 => 276, 830 => 275, 828 => 274, 825 => 273, 812 => 272, 799 => 268, 797 => 256, 795 => 255, 793 => 238, 787 => 234, 774 => 233, 762 => 206, 760 => 205, 757 => 204, 744 => 203, 733 => 208, 730 => 203, 728 => 201, 727 => 200, 726 => 199, 724 => 198, 711 => 197, 697 => 118, 684 => 117, 668 => 114, 665 => 113, 652 => 112, 641 => 110, 639 => 107, 637 => 105, 624 => 104, 611 => 433, 608 => 432, 606 => 427, 603 => 426, 600 => 425, 598 => 423, 597 => 422, 594 => 421, 592 => 420, 586 => 416, 584 => 413, 583 => 412, 582 => 411, 581 => 410, 577 => 408, 575 => 390, 572 => 389, 570 => 367, 567 => 366, 565 => 328, 562 => 327, 559 => 317, 557 => 308, 554 => 307, 552 => 305, 549 => 304, 546 => 272, 543 => 271, 540 => 233, 538 => 232, 533 => 229, 530 => 228, 528 => 221, 526 => 220, 523 => 219, 520 => 218, 518 => 211, 516 => 210, 513 => 209, 511 => 197, 508 => 196, 506 => 194, 505 => 193, 504 => 192, 498 => 188, 490 => 182, 479 => 179, 476 => 178, 472 => 177, 467 => 174, 465 => 173, 462 => 172, 458 => 170, 456 => 166, 455 => 165, 451 => 163, 449 => 162, 446 => 161, 444 => 159, 443 => 158, 442 => 157, 438 => 155, 436 => 154, 435 => 151, 434 => 145, 433 => 139, 432 => 134, 429 => 133, 426 => 132, 423 => 131, 420 => 130, 418 => 129, 414 => 127, 412 => 126, 406 => 122, 403 => 117, 401 => 112, 398 => 111, 396 => 104, 390 => 100, 377 => 99, 365 => 96, 362 => 91, 349 => 90, 337 => 88, 335 => 79, 334 => 78, 333 => 77, 332 => 76, 331 => 75, 330 => 70, 328 => 69, 315 => 68, 302 => 66, 296 => 64, 283 => 63, 260 => 61, 248 => 58, 246 => 56, 244 => 55, 242 => 54, 237 => 53, 224 => 52, 213 => 48, 211 => 47, 198 => 46, 187 => 42, 186 => 41, 184 => 40, 171 => 39, 153 => 31, 149 => 30, 145 => 29, 141 => 28, 137 => 27, 133 => 26, 124 => 19, 122 => 17, 121 => 16, 120 => 15, 119 => 14, 118 => 13, 117 => 12, 116 => 11, 114 => 10, 111 => 9, 98 => 8, 87 => 1, 84 => 6, 81 => 4, 79 => 3, 77 => 2, 64 => 1,);
  1572. }
  1573. public function getSourceContext(): Source
  1574. {
  1575. return new Source("{% extends 'pages/base.html.twig' %}
  1576. {% set page_type_tracking = 'cp products' %}
  1577. {% if variant.attributes.centAmountGross is defined %}
  1578. {% set currentPrice = variant.attributes|default({'centAmountGross': 0}) %}
  1579. {% else %}
  1580. {% set currentPrice = {'centAmountGross': 0} %}
  1581. {% endif%}
  1582. {% block gtmDataLayer %}
  1583. {% set objectId = product.id|default ~'.' ~ variant.id|default %}
  1584. {% include('components/atoms/gtm-data-layer/gtm-data-layer.html.twig') with {
  1585. 'product_id': variant.displaySku|default(''),
  1586. 'objectId':objectId,
  1587. 'product_name': variant.name|default(''),
  1588. 'category': product.categoryName|default(''),
  1589. 'product_price': currentPrice.centAmountGross|priceDefaultFormat|default(''),
  1590. 'brand': variant.structuredData.brand.name.value|default(''),
  1591. 'availability': variant.salesStatus == \"saleable\" ? \"yes\" : \"no\"
  1592. } %}
  1593. <script>
  1594. window.dataLayer.push({
  1595. 'event': 'eec.detail_view',
  1596. 'ecommerce': {
  1597. 'detail': {
  1598. 'actionField': {'list': 'cp products'},
  1599. 'products': [{
  1600. 'name': '{{ variant.name|default('') }}',
  1601. 'id': '{{ variant.displaySku|default('') }}',
  1602. 'objectId':'{{ objectId }}',
  1603. 'price': '{{ currentPrice.centAmountGross|priceDefaultFormat }}',
  1604. 'brand': '{{ variant.structuredData.brand.name.value|default('') }}',
  1605. 'category': '{{ product.categoryName|default('') }}',
  1606. }]
  1607. }
  1608. },
  1609. })
  1610. </script>
  1611. {% endblock %}
  1612. {% block meta %}
  1613. {% include 'components/organisms/meta/meta.html.twig' with {
  1614. 'metaInformation': variant.metaInformation|default(null),
  1615. 'fallback': variant.name ~ 'meta_description_default'|trans,
  1616. } %}
  1617. {% endblock %}
  1618. {% block openGraph %}
  1619. {% include 'components/organisms/open-graph/open-graph.html.twig' with {
  1620. 'openGraphInformation': variant.openGraphInformation|default(null)
  1621. } %}
  1622. {% endblock %}
  1623. {% block structuredData %}
  1624. {{ parent() }}
  1625. {% if variantStructuredData is defined %}
  1626. {% include('components/atoms/structured-data/structured-data.html.twig') with {
  1627. 'structuredData': variantStructuredData|default,
  1628. } %}
  1629. {% endif %}
  1630. {% endblock %}
  1631. {% block title %}{{ variant.name|default(product.name) }}{% endblock %}
  1632. {% block stylesheets %}
  1633. {{ parent() }}
  1634. {{ encore_entry_link_tags('product') }}
  1635. {% endblock %}
  1636. {% block econdaTracing %}
  1637. {% include('components/atoms/econda-tracking/econda-tracking.html.twig') with{
  1638. 'page_type_tracking': page_type_tracking,
  1639. 'econdaSend': {
  1640. ec_Event: [
  1641. {
  1642. type: 'view',
  1643. pid: variant.displaySku|default('') ,
  1644. sku: variant.displaySku|default('') ,
  1645. name: variant.name|default('') ,
  1646. price: currentPrice.centAmountGross|priceDefaultFormat ,
  1647. group: variant.categoryName,
  1648. count: 1,
  1649. var1: null,
  1650. var2: null,
  1651. var3: null
  1652. }
  1653. ]
  1654. },
  1655. } %}
  1656. {% endblock %}
  1657. {% block breadcrumb %}
  1658. {% include('components/molecules/breadcrumb/breadcrumb.html.twig') with {
  1659. 'page': 'detail',
  1660. 'backOffset': -1,
  1661. 'showBackAlways': true
  1662. } %}
  1663. {% endblock %}
  1664. {% block content %}
  1665. <div class=\"product-detail\">
  1666. <div class=\"product-detail__data\">
  1667. <div class=\"product-detail__header\">
  1668. <div class=\"product-detail__headline\">
  1669. {% block productHeadline %}
  1670. {% include('components/atoms/headline/headline.html.twig') with {
  1671. 'headlineTag': 'h1',
  1672. 'text': variant.name,
  1673. 'class': 'product-description__headline'
  1674. } %}
  1675. {% endblock %}
  1676. {% block productSku %}
  1677. <p class=\"product-description__sku\">
  1678. {{ 'product_sku'|trans }}: {{ variant.displaySku }}
  1679. </p>
  1680. {% endblock %}
  1681. {% block productFeedback %}
  1682. <div class=\"etrusted--product-stars\" >
  1683. <etrusted-product-review-list-widget-product-star-extension></etrusted-product-review-list-widget-product-star-extension>
  1684. </div>
  1685. {% endblock %}
  1686. </div>
  1687. <div class=\"product-detail__image\">
  1688. {% include('components/organisms/pdp-gallery/pdp-gallery.html.twig') %}
  1689. </div>
  1690. <div class=\"product-detail__description\">
  1691. {% set accessoriesSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY') ) %}
  1692. {% set sparepartSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ) %}
  1693. {% set mainSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::MAIN') ) %}
  1694. {% set serviceSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SERVICE') ) %}
  1695. {% set productLinks = [
  1696. {slug: '#product_information', name: 'product_information'|trans, active: true, gtm: 'data-gtm-cp-pdp-go-to'},
  1697. {
  1698. slug: '#serviceProductsSlider',
  1699. name: 'product_service'|trans,
  1700. active: (serviceSkus|length > 0),
  1701. gtm: 'data-gtm-cp-pdp-go-to'
  1702. },
  1703. {
  1704. slug: '#product-compare',
  1705. name: 'compare_products'|trans,
  1706. active: (variant.attributes.comparable_articles is defined and variant.attributes.comparable_articles is not empty),
  1707. gtm: 'data-gtm-cp-pdp-go-to'
  1708. },
  1709. {
  1710. slug: '#accessoriesProductsSlider',
  1711. name: 'accessories_products_slider_headline'|trans,
  1712. active: (accessoriesSkus|length > 0) or (sparepartSkus|length > 0),
  1713. gtm: 'data-gtm-cp-pdp-go-to'
  1714. },
  1715. ]|filter(v => v.active) %}
  1716. {% include 'components/organisms/product-description/product-description.html.twig' with {
  1717. 'product': product,
  1718. 'variant': variant
  1719. } %}
  1720. {% if productLinks|length > 0 %}
  1721. <div class=\"product-detail__actions\">
  1722. {% include('components/molecules/link-list/link-list.html.twig') with {
  1723. 'entries': productLinks,
  1724. 'class': 'link-list--pdp',
  1725. 'classLink': 'text-link--arrow-left'
  1726. } %}
  1727. </div>
  1728. {% endif %}
  1729. {% if variant.ghsImages is defined and variant.ghsImages is not empty %}
  1730. <div class=\"product-detail__icons\">
  1731. <div class=\"js-icon-image-gallery product-detail__icons-slider icon-slider\">
  1732. <div class=\"swiper-wrapper\">
  1733. {% for icon in variant.ghsImages %}
  1734. <div class=\"swiper-slide\">
  1735. <img height=\"40\" src=\"{{ icon.uri| default}}\" alt=\"{{ icon.text| default }}\">
  1736. </div>
  1737. {% endfor %}
  1738. </div>
  1739. <div class=\"icon-slider__prev swiper-button-prev\" aria-hidden=\"true\"></div>
  1740. <div class=\"icon-slider__next swiper-button-next\" aria-hidden=\"true\"></div>
  1741. </div>
  1742. </div>
  1743. {% endif %}
  1744. </div>
  1745. </div>
  1746. <div class=\"product-detail__sidebar\">
  1747. <div class=\"product-detail__variant-anchor\" id=\"buy-box__variant-selection\"></div>
  1748. {% include 'components/organisms/variant-selection/variant-selection.html.twig' with {
  1749. 'product': product,
  1750. 'variant': variant,
  1751. } %}
  1752. <div class=\"product-detail__sticky-box\">
  1753. {% block buyBox %}
  1754. {% include 'components/organisms/buy-box/buy-box.html.twig' with {
  1755. 'product': product,
  1756. 'variant': variant,
  1757. 'structuredProducts': structuredProducts
  1758. } %}
  1759. {% block buyBoxActions %}
  1760. <div class=\"buy-box__actions\">
  1761. {% include 'components/molecules/icon-links-actions/icon-links-actions.html.twig' %}
  1762. </div>
  1763. {% endblock %}
  1764. {% endblock %}
  1765. {% if slot_pdp_sidebar_default is defined %}
  1766. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1767. 'componentData': slot_pdp_sidebar_default,
  1768. 'componentConfig': {
  1769. 'contact-box': {
  1770. modifier: 'detail js-cms-contact-box',
  1771. }
  1772. }
  1773. } %}
  1774. {% endif %}
  1775. {% if slot_pdp_sidebar is defined %}
  1776. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1777. 'componentData': slot_pdp_sidebar,
  1778. 'componentConfig': {
  1779. 'contact-box': {
  1780. modifier: 'detail js-cms-contact-box',
  1781. }
  1782. }
  1783. } %}
  1784. {% endif %}
  1785. </div>
  1786. </div>
  1787. <div class=\"product-detail__info\">
  1788. {% if not isPunchout %}
  1789. {% block econdaSlider %}
  1790. <div class=\"spacing spacing--30\"></div>
  1791. <div class=\"product-detail__econda-div\">
  1792. <div class=\"product-detail__econda-slider\" id=\"econdaProductsSlider\">
  1793. {% set econdaWidgets = [{
  1794. id:'econda_1',
  1795. widgetId: 'econda_product_widget_id'|trans,
  1796. headline: {
  1797. text:'similar_products_slider_headline'|trans,
  1798. },
  1799. component: ''
  1800. },
  1801. {
  1802. id:'econda_2',
  1803. widgetId: 'econda_product_buy_together_widget_id'|trans,
  1804. headline:{
  1805. text:'purchased_together_products_slider_headline'|trans,
  1806. },
  1807. component: ''
  1808. }
  1809. ] %}
  1810. {% embed 'components/organisms/tabs/tabs.html.twig' with {
  1811. 'entries': econdaWidgets
  1812. } %}
  1813. {% block entryContent %}
  1814. {% include ('components/organisms/econda-slider/econda-slider.html.twig') with {
  1815. 'econdaContentIdentifier': 'productEcondaSilder',
  1816. 'econdaProductId': variant.displaySku|default(''),
  1817. 'widgetId': entry['widgetId'],
  1818. 'headline': '',
  1819. 'class': 'econda-slider-pdp'
  1820. } %}
  1821. {% endblock %}
  1822. {% endembed %}
  1823. </div>
  1824. </div>
  1825. {% endblock %}
  1826. {% endif %}
  1827. {% block additionalInformation %}
  1828. <div class=\"spacing spacing--30\"></div>
  1829. {% include 'pages/product/data-tabs.html.twig' %}
  1830. {% if variant.links.epaper is defined and variant.links.epaper|default is not empty %}
  1831. {% include 'components/atoms/text-link/text-link.html.twig'
  1832. with {
  1833. 'class': 'text-link--arrow-right text-link--hide-in-print',
  1834. 'href': variant.links.epaper|default,
  1835. 'text': 'catalog_page'|trans,
  1836. 'attributes': {
  1837. target: '_blank'
  1838. }
  1839. } %}
  1840. {% endif %}
  1841. <div class=\"spacing spacing--10\"></div>
  1842. {% if cms_globals.slot_inquiry is defined %}
  1843. {% embed 'components/atoms/button/button.html.twig'
  1844. with {
  1845. 'class': 'text-link js-modal button--arrow-right text-link--arrow-right',
  1846. 'type': 'button',
  1847. 'attributes': {
  1848. 'data-modal-id': 'inquiry'
  1849. }
  1850. } %}
  1851. {% block content %}
  1852. {{ 'expert_advice_questions'|trans }}
  1853. <span class=\"text-link__arrow\"></span>
  1854. {% endblock %}
  1855. {% endembed %}
  1856. {% endif %}
  1857. {% endblock %}
  1858. {% block tenderText %}
  1859. {% endblock %}
  1860. {% block compare %}
  1861. {% if variant.attributes.comparable_articles is defined %}
  1862. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  1863. {% include ('components/organisms/product-compare/product-compare.html.twig') with {
  1864. \"productSku\": variant.sku,
  1865. \"compareSkus\":variant.attributes.comparable_articles
  1866. } %}
  1867. {% endif%}
  1868. {% endblock %}
  1869. {% block slot_center %}
  1870. {% if slot_pdp_center is defined %}
  1871. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  1872. <div class=\"product-detail__cms-center\">
  1873. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1874. 'componentData': slot_pdp_center
  1875. } %}
  1876. </div>
  1877. {% endif%}
  1878. {% endblock %}
  1879. {% block extraProductListing %}
  1880. {% if serviceSkus is not empty%}
  1881. <div class=\"spacing spacing--50\"></div>
  1882. {% include('components/atoms/headline/headline.html.twig') with {
  1883. 'headlineTag': 'h2',
  1884. 'text': 'product_service'|trans,
  1885. 'class': 'headline--section',
  1886. 'attributes': {
  1887. 'id':'serviceProductsSlider'
  1888. }
  1889. } %}
  1890. <div class=\"product-detail__service-products\">
  1891. {% include 'components/organisms/related-products/related-products.html.twig' with {
  1892. 'class': '',
  1893. 'skus': serviceSkus,
  1894. 'api_url': path('app_get_products') ,
  1895. 'current_language': storeContext.localeInfo.currentLocale,
  1896. } %}
  1897. </div>
  1898. {%endif%}
  1899. {% if mainSkus is not empty%}
  1900. <div class=\"spacing spacing--50\"></div>
  1901. {% include('components/atoms/headline/headline.html.twig') with {
  1902. 'headlineTag': 'h2',
  1903. 'text': 'main_products'|trans,
  1904. 'class': 'headline--section'
  1905. } %}
  1906. <div class=\"product-detail__main-products\">
  1907. {% include 'components/organisms/related-products/related-products.html.twig' with {
  1908. 'class': '',
  1909. 'skus': mainSkus,
  1910. 'api_url': path('app_get_products') ,
  1911. 'current_language': storeContext.localeInfo.currentLocale,
  1912. } %}
  1913. </div>
  1914. {% endif %}
  1915. {% endblock %}
  1916. {% block accessoriesProductsSlider %}
  1917. {% if sparepartSkus is not empty or accessoriesSkus is not empty %}
  1918. <div class=\"spacing spacing--50\"></div>
  1919. {% include('components/atoms/headline/headline.html.twig') with {
  1920. 'headlineTag': 'h2',
  1921. 'text': 'accessories_products_slider_headline'|trans,
  1922. 'class': 'headline--section',
  1923. 'attributes': {
  1924. 'id':'accessoriesProductsSlider'
  1925. }
  1926. } %}
  1927. <related-products-tabs
  1928. tab-entries=\"{{ getCrossSellEntries(variant, [constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY'),constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ])|json_encode }}\"
  1929. css-class=\"related-products-tabs\"
  1930. image-service=\"{{ imageservice }}\"
  1931. api-url=\"{{ path('app_get_products')}}\"
  1932. add-product-url=\"{{ path('checkout_cart_add_line_item') }}\"
  1933. id=\"pdp-related-products\"
  1934. current-language=\"{{ storeContext.localeInfo.currentLocale}}\"
  1935. product-component-class=\"product-component\"></related-products-tabs>
  1936. {% endif %}
  1937. {% endblock %}
  1938. {% block feedback %}
  1939. {% if 'product_feedback_widget_id'|transFallbackEmptyText is not empty and not isPunchout %}
  1940. <div id=\"feedback\" class=\"product-detail__feedback etrusted-js etrusted--invisible\">
  1941. <div class=\"spacing spacing--50\"></div>
  1942. {% include('components/atoms/headline/headline.html.twig') with {
  1943. 'headlineTag': 'h2',
  1944. 'text': 'customer_reviews'|trans,
  1945. 'class': 'headline--section'
  1946. } %}
  1947. {% include 'components/atoms/etrusted/etrusted.html.twig' with {
  1948. 'type':'product',
  1949. 'class': 'etrusted--product-feedback',
  1950. 'sku':variant.sku ,
  1951. 'widget_id':'product_feedback_widget_id'|trans
  1952. } %}
  1953. </div>
  1954. {% endif %}
  1955. {%endblock%}
  1956. </div>
  1957. <div class=\"product-detail__mobile-buy-box\">
  1958. {% include 'components/organisms/buy-box/small-mobile-buy-box.html.twig' with {
  1959. 'product': product,
  1960. 'variant': variant,
  1961. 'structuredProducts': structuredProducts,
  1962. 'class': 'buy-box--mobile'
  1963. } %}
  1964. </div>
  1965. </div>
  1966. <div class=\"product-detail__cms-bottom\">
  1967. {% if slot_pdp_bottom is defined %}
  1968. <div class=\"spacing spacing--50\"></div>
  1969. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  1970. 'componentData': slot_pdp_bottom
  1971. } %}
  1972. {% else %}
  1973. <div class=\"spacing spacing--50\"></div>
  1974. {% include ('components/organisms/last-seen-product-slider/last-seen-product-slider.html.twig') with {
  1975. 'headline': 'recently_viewed'|trans,
  1976. 'headlineTag': 'h2',
  1977. 'additionalClass': 'product-detail__last-seen'
  1978. } %}
  1979. {% endif %}
  1980. </div>
  1981. </div>
  1982. {% endblock %}
  1983. {% block offcanvasCart %}
  1984. {% include 'components/organisms/offcanvas-cart/offcanvas-cart.html.twig' %}
  1985. {% endblock %}
  1986. {% block modal %}
  1987. {% if cms_globals.slot_inquiry is defined %}
  1988. {% embed 'components/organisms/modal/modal.html.twig' with {
  1989. 'modalId': 'inquiry'
  1990. } %}
  1991. {% block modalContent %}
  1992. {% set extraData = extraData|default({}) %}
  1993. {% set extraData = extraData|merge({'inquiryType': 'product'}) %}
  1994. {% set extraData = extraData|merge({'productSku': variant.sku}) %}
  1995. {% set extraData = extraData|merge({'products': structuredProducts|json_encode}) %}
  1996. <dynamic-form
  1997. service-base-url=\"{{ formservice }}\"
  1998. form-id=\"{{ cms_globals.slot_inquiry }}\"
  1999. extra-data=\"{{ extraData|json_encode }}\"
  2000. locale=\"{{ storeContext.localeInfo.currentLocale }}\"
  2001. frc-site-key=\"{{ frc_sitekey }}\"
  2002. ></dynamic-form>
  2003. {% endblock %}
  2004. {% endembed %}
  2005. {% endif %}
  2006. {% endblock %}
  2007. {% block javascripts %}
  2008. <script>
  2009. window.dataStore = window.dataStore || [];
  2010. window.dataStore.sku = {{ variant.sku|default('') }};
  2011. </script>
  2012. {{ parent() }}
  2013. {{ encore_entry_script_tags('product') }}
  2014. {% endblock %}
  2015. ", "pages/product/get_detail.html.twig", "/var/www/html/templates/default/pages/product/get_detail.html.twig");
  2016. }
  2017. }
  2018. /* pages/product/get_detail.html.twig */
  2019. class __TwigTemplate_a036afd2f019ede9ab963721d351c017___188396788 extends Template
  2020. {
  2021. private Source $source;
  2022. /**
  2023. * @var array<string, Template>
  2024. */
  2025. private array $macros = [];
  2026. public function __construct(Environment $env)
  2027. {
  2028. parent::__construct($env);
  2029. $this->source = $this->getSourceContext();
  2030. $this->blocks = [
  2031. 'content' => [$this, 'block_content'],
  2032. ];
  2033. }
  2034. protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  2035. {
  2036. // line 288
  2037. return "components/atoms/button/button.html.twig";
  2038. }
  2039. protected function doDisplay(array $context, array $blocks = []): iterable
  2040. {
  2041. $macros = $this->macros;
  2042. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  2043. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  2044. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2045. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  2046. $this->parent = $this->load("components/atoms/button/button.html.twig", 288);
  2047. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  2048. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2049. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2050. }
  2051. // line 296
  2052. /**
  2053. * @return iterable<null|scalar|\Stringable>
  2054. */
  2055. public function block_content(array $context, array $blocks = []): iterable
  2056. {
  2057. $macros = $this->macros;
  2058. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  2059. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
  2060. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2061. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
  2062. // line 297
  2063. yield " ";
  2064. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("expert_advice_questions"), "html", null, true);
  2065. yield "
  2066. <span class=\"text-link__arrow\"></span>
  2067. ";
  2068. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2069. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2070. yield from [];
  2071. }
  2072. /**
  2073. * @codeCoverageIgnore
  2074. */
  2075. public function getTemplateName(): string
  2076. {
  2077. return "pages/product/get_detail.html.twig";
  2078. }
  2079. /**
  2080. * @codeCoverageIgnore
  2081. */
  2082. public function isTraitable(): bool
  2083. {
  2084. return false;
  2085. }
  2086. /**
  2087. * @codeCoverageIgnore
  2088. */
  2089. public function getDebugInfo(): array
  2090. {
  2091. return array ( 2369 => 297, 2356 => 296, 2333 => 288, 1796 => 266, 1794 => 262, 1793 => 261, 1791 => 259, 1778 => 258, 1755 => 255, 1215 => 471, 1210 => 469, 1205 => 467, 1201 => 465, 1188 => 464, 1176 => 461, 1173 => 460, 1170 => 442, 1167 => 441, 1154 => 440, 1142 => 438, 1139 => 437, 1126 => 436, 1115 => 407, 1111 => 405, 1109 => 402, 1107 => 399, 1105 => 394, 1101 => 392, 1098 => 391, 1085 => 390, 1074 => 388, 1068 => 385, 1063 => 383, 1059 => 382, 1055 => 381, 1050 => 379, 1047 => 378, 1045 => 370, 1042 => 369, 1039 => 368, 1026 => 367, 1015 => 365, 1011 => 363, 1009 => 361, 1008 => 359, 1007 => 357, 1004 => 356, 1002 => 351, 999 => 350, 997 => 349, 994 => 348, 990 => 346, 988 => 344, 987 => 342, 986 => 340, 983 => 339, 981 => 331, 978 => 330, 975 => 329, 962 => 328, 951 => 326, 947 => 324, 945 => 322, 944 => 321, 940 => 319, 937 => 318, 924 => 317, 913 => 316, 910 => 315, 908 => 313, 907 => 312, 906 => 311, 903 => 310, 900 => 309, 887 => 308, 876 => 306, 863 => 305, 851 => 302, 848 => 301, 845 => 288, 843 => 287, 840 => 286, 837 => 285, 835 => 279, 833 => 276, 830 => 275, 828 => 274, 825 => 273, 812 => 272, 799 => 268, 797 => 256, 795 => 255, 793 => 238, 787 => 234, 774 => 233, 762 => 206, 760 => 205, 757 => 204, 744 => 203, 733 => 208, 730 => 203, 728 => 201, 727 => 200, 726 => 199, 724 => 198, 711 => 197, 697 => 118, 684 => 117, 668 => 114, 665 => 113, 652 => 112, 641 => 110, 639 => 107, 637 => 105, 624 => 104, 611 => 433, 608 => 432, 606 => 427, 603 => 426, 600 => 425, 598 => 423, 597 => 422, 594 => 421, 592 => 420, 586 => 416, 584 => 413, 583 => 412, 582 => 411, 581 => 410, 577 => 408, 575 => 390, 572 => 389, 570 => 367, 567 => 366, 565 => 328, 562 => 327, 559 => 317, 557 => 308, 554 => 307, 552 => 305, 549 => 304, 546 => 272, 543 => 271, 540 => 233, 538 => 232, 533 => 229, 530 => 228, 528 => 221, 526 => 220, 523 => 219, 520 => 218, 518 => 211, 516 => 210, 513 => 209, 511 => 197, 508 => 196, 506 => 194, 505 => 193, 504 => 192, 498 => 188, 490 => 182, 479 => 179, 476 => 178, 472 => 177, 467 => 174, 465 => 173, 462 => 172, 458 => 170, 456 => 166, 455 => 165, 451 => 163, 449 => 162, 446 => 161, 444 => 159, 443 => 158, 442 => 157, 438 => 155, 436 => 154, 435 => 151, 434 => 145, 433 => 139, 432 => 134, 429 => 133, 426 => 132, 423 => 131, 420 => 130, 418 => 129, 414 => 127, 412 => 126, 406 => 122, 403 => 117, 401 => 112, 398 => 111, 396 => 104, 390 => 100, 377 => 99, 365 => 96, 362 => 91, 349 => 90, 337 => 88, 335 => 79, 334 => 78, 333 => 77, 332 => 76, 331 => 75, 330 => 70, 328 => 69, 315 => 68, 302 => 66, 296 => 64, 283 => 63, 260 => 61, 248 => 58, 246 => 56, 244 => 55, 242 => 54, 237 => 53, 224 => 52, 213 => 48, 211 => 47, 198 => 46, 187 => 42, 186 => 41, 184 => 40, 171 => 39, 153 => 31, 149 => 30, 145 => 29, 141 => 28, 137 => 27, 133 => 26, 124 => 19, 122 => 17, 121 => 16, 120 => 15, 119 => 14, 118 => 13, 117 => 12, 116 => 11, 114 => 10, 111 => 9, 98 => 8, 87 => 1, 84 => 6, 81 => 4, 79 => 3, 77 => 2, 64 => 1,);
  2092. }
  2093. public function getSourceContext(): Source
  2094. {
  2095. return new Source("{% extends 'pages/base.html.twig' %}
  2096. {% set page_type_tracking = 'cp products' %}
  2097. {% if variant.attributes.centAmountGross is defined %}
  2098. {% set currentPrice = variant.attributes|default({'centAmountGross': 0}) %}
  2099. {% else %}
  2100. {% set currentPrice = {'centAmountGross': 0} %}
  2101. {% endif%}
  2102. {% block gtmDataLayer %}
  2103. {% set objectId = product.id|default ~'.' ~ variant.id|default %}
  2104. {% include('components/atoms/gtm-data-layer/gtm-data-layer.html.twig') with {
  2105. 'product_id': variant.displaySku|default(''),
  2106. 'objectId':objectId,
  2107. 'product_name': variant.name|default(''),
  2108. 'category': product.categoryName|default(''),
  2109. 'product_price': currentPrice.centAmountGross|priceDefaultFormat|default(''),
  2110. 'brand': variant.structuredData.brand.name.value|default(''),
  2111. 'availability': variant.salesStatus == \"saleable\" ? \"yes\" : \"no\"
  2112. } %}
  2113. <script>
  2114. window.dataLayer.push({
  2115. 'event': 'eec.detail_view',
  2116. 'ecommerce': {
  2117. 'detail': {
  2118. 'actionField': {'list': 'cp products'},
  2119. 'products': [{
  2120. 'name': '{{ variant.name|default('') }}',
  2121. 'id': '{{ variant.displaySku|default('') }}',
  2122. 'objectId':'{{ objectId }}',
  2123. 'price': '{{ currentPrice.centAmountGross|priceDefaultFormat }}',
  2124. 'brand': '{{ variant.structuredData.brand.name.value|default('') }}',
  2125. 'category': '{{ product.categoryName|default('') }}',
  2126. }]
  2127. }
  2128. },
  2129. })
  2130. </script>
  2131. {% endblock %}
  2132. {% block meta %}
  2133. {% include 'components/organisms/meta/meta.html.twig' with {
  2134. 'metaInformation': variant.metaInformation|default(null),
  2135. 'fallback': variant.name ~ 'meta_description_default'|trans,
  2136. } %}
  2137. {% endblock %}
  2138. {% block openGraph %}
  2139. {% include 'components/organisms/open-graph/open-graph.html.twig' with {
  2140. 'openGraphInformation': variant.openGraphInformation|default(null)
  2141. } %}
  2142. {% endblock %}
  2143. {% block structuredData %}
  2144. {{ parent() }}
  2145. {% if variantStructuredData is defined %}
  2146. {% include('components/atoms/structured-data/structured-data.html.twig') with {
  2147. 'structuredData': variantStructuredData|default,
  2148. } %}
  2149. {% endif %}
  2150. {% endblock %}
  2151. {% block title %}{{ variant.name|default(product.name) }}{% endblock %}
  2152. {% block stylesheets %}
  2153. {{ parent() }}
  2154. {{ encore_entry_link_tags('product') }}
  2155. {% endblock %}
  2156. {% block econdaTracing %}
  2157. {% include('components/atoms/econda-tracking/econda-tracking.html.twig') with{
  2158. 'page_type_tracking': page_type_tracking,
  2159. 'econdaSend': {
  2160. ec_Event: [
  2161. {
  2162. type: 'view',
  2163. pid: variant.displaySku|default('') ,
  2164. sku: variant.displaySku|default('') ,
  2165. name: variant.name|default('') ,
  2166. price: currentPrice.centAmountGross|priceDefaultFormat ,
  2167. group: variant.categoryName,
  2168. count: 1,
  2169. var1: null,
  2170. var2: null,
  2171. var3: null
  2172. }
  2173. ]
  2174. },
  2175. } %}
  2176. {% endblock %}
  2177. {% block breadcrumb %}
  2178. {% include('components/molecules/breadcrumb/breadcrumb.html.twig') with {
  2179. 'page': 'detail',
  2180. 'backOffset': -1,
  2181. 'showBackAlways': true
  2182. } %}
  2183. {% endblock %}
  2184. {% block content %}
  2185. <div class=\"product-detail\">
  2186. <div class=\"product-detail__data\">
  2187. <div class=\"product-detail__header\">
  2188. <div class=\"product-detail__headline\">
  2189. {% block productHeadline %}
  2190. {% include('components/atoms/headline/headline.html.twig') with {
  2191. 'headlineTag': 'h1',
  2192. 'text': variant.name,
  2193. 'class': 'product-description__headline'
  2194. } %}
  2195. {% endblock %}
  2196. {% block productSku %}
  2197. <p class=\"product-description__sku\">
  2198. {{ 'product_sku'|trans }}: {{ variant.displaySku }}
  2199. </p>
  2200. {% endblock %}
  2201. {% block productFeedback %}
  2202. <div class=\"etrusted--product-stars\" >
  2203. <etrusted-product-review-list-widget-product-star-extension></etrusted-product-review-list-widget-product-star-extension>
  2204. </div>
  2205. {% endblock %}
  2206. </div>
  2207. <div class=\"product-detail__image\">
  2208. {% include('components/organisms/pdp-gallery/pdp-gallery.html.twig') %}
  2209. </div>
  2210. <div class=\"product-detail__description\">
  2211. {% set accessoriesSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY') ) %}
  2212. {% set sparepartSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ) %}
  2213. {% set mainSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::MAIN') ) %}
  2214. {% set serviceSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SERVICE') ) %}
  2215. {% set productLinks = [
  2216. {slug: '#product_information', name: 'product_information'|trans, active: true, gtm: 'data-gtm-cp-pdp-go-to'},
  2217. {
  2218. slug: '#serviceProductsSlider',
  2219. name: 'product_service'|trans,
  2220. active: (serviceSkus|length > 0),
  2221. gtm: 'data-gtm-cp-pdp-go-to'
  2222. },
  2223. {
  2224. slug: '#product-compare',
  2225. name: 'compare_products'|trans,
  2226. active: (variant.attributes.comparable_articles is defined and variant.attributes.comparable_articles is not empty),
  2227. gtm: 'data-gtm-cp-pdp-go-to'
  2228. },
  2229. {
  2230. slug: '#accessoriesProductsSlider',
  2231. name: 'accessories_products_slider_headline'|trans,
  2232. active: (accessoriesSkus|length > 0) or (sparepartSkus|length > 0),
  2233. gtm: 'data-gtm-cp-pdp-go-to'
  2234. },
  2235. ]|filter(v => v.active) %}
  2236. {% include 'components/organisms/product-description/product-description.html.twig' with {
  2237. 'product': product,
  2238. 'variant': variant
  2239. } %}
  2240. {% if productLinks|length > 0 %}
  2241. <div class=\"product-detail__actions\">
  2242. {% include('components/molecules/link-list/link-list.html.twig') with {
  2243. 'entries': productLinks,
  2244. 'class': 'link-list--pdp',
  2245. 'classLink': 'text-link--arrow-left'
  2246. } %}
  2247. </div>
  2248. {% endif %}
  2249. {% if variant.ghsImages is defined and variant.ghsImages is not empty %}
  2250. <div class=\"product-detail__icons\">
  2251. <div class=\"js-icon-image-gallery product-detail__icons-slider icon-slider\">
  2252. <div class=\"swiper-wrapper\">
  2253. {% for icon in variant.ghsImages %}
  2254. <div class=\"swiper-slide\">
  2255. <img height=\"40\" src=\"{{ icon.uri| default}}\" alt=\"{{ icon.text| default }}\">
  2256. </div>
  2257. {% endfor %}
  2258. </div>
  2259. <div class=\"icon-slider__prev swiper-button-prev\" aria-hidden=\"true\"></div>
  2260. <div class=\"icon-slider__next swiper-button-next\" aria-hidden=\"true\"></div>
  2261. </div>
  2262. </div>
  2263. {% endif %}
  2264. </div>
  2265. </div>
  2266. <div class=\"product-detail__sidebar\">
  2267. <div class=\"product-detail__variant-anchor\" id=\"buy-box__variant-selection\"></div>
  2268. {% include 'components/organisms/variant-selection/variant-selection.html.twig' with {
  2269. 'product': product,
  2270. 'variant': variant,
  2271. } %}
  2272. <div class=\"product-detail__sticky-box\">
  2273. {% block buyBox %}
  2274. {% include 'components/organisms/buy-box/buy-box.html.twig' with {
  2275. 'product': product,
  2276. 'variant': variant,
  2277. 'structuredProducts': structuredProducts
  2278. } %}
  2279. {% block buyBoxActions %}
  2280. <div class=\"buy-box__actions\">
  2281. {% include 'components/molecules/icon-links-actions/icon-links-actions.html.twig' %}
  2282. </div>
  2283. {% endblock %}
  2284. {% endblock %}
  2285. {% if slot_pdp_sidebar_default is defined %}
  2286. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2287. 'componentData': slot_pdp_sidebar_default,
  2288. 'componentConfig': {
  2289. 'contact-box': {
  2290. modifier: 'detail js-cms-contact-box',
  2291. }
  2292. }
  2293. } %}
  2294. {% endif %}
  2295. {% if slot_pdp_sidebar is defined %}
  2296. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2297. 'componentData': slot_pdp_sidebar,
  2298. 'componentConfig': {
  2299. 'contact-box': {
  2300. modifier: 'detail js-cms-contact-box',
  2301. }
  2302. }
  2303. } %}
  2304. {% endif %}
  2305. </div>
  2306. </div>
  2307. <div class=\"product-detail__info\">
  2308. {% if not isPunchout %}
  2309. {% block econdaSlider %}
  2310. <div class=\"spacing spacing--30\"></div>
  2311. <div class=\"product-detail__econda-div\">
  2312. <div class=\"product-detail__econda-slider\" id=\"econdaProductsSlider\">
  2313. {% set econdaWidgets = [{
  2314. id:'econda_1',
  2315. widgetId: 'econda_product_widget_id'|trans,
  2316. headline: {
  2317. text:'similar_products_slider_headline'|trans,
  2318. },
  2319. component: ''
  2320. },
  2321. {
  2322. id:'econda_2',
  2323. widgetId: 'econda_product_buy_together_widget_id'|trans,
  2324. headline:{
  2325. text:'purchased_together_products_slider_headline'|trans,
  2326. },
  2327. component: ''
  2328. }
  2329. ] %}
  2330. {% embed 'components/organisms/tabs/tabs.html.twig' with {
  2331. 'entries': econdaWidgets
  2332. } %}
  2333. {% block entryContent %}
  2334. {% include ('components/organisms/econda-slider/econda-slider.html.twig') with {
  2335. 'econdaContentIdentifier': 'productEcondaSilder',
  2336. 'econdaProductId': variant.displaySku|default(''),
  2337. 'widgetId': entry['widgetId'],
  2338. 'headline': '',
  2339. 'class': 'econda-slider-pdp'
  2340. } %}
  2341. {% endblock %}
  2342. {% endembed %}
  2343. </div>
  2344. </div>
  2345. {% endblock %}
  2346. {% endif %}
  2347. {% block additionalInformation %}
  2348. <div class=\"spacing spacing--30\"></div>
  2349. {% include 'pages/product/data-tabs.html.twig' %}
  2350. {% if variant.links.epaper is defined and variant.links.epaper|default is not empty %}
  2351. {% include 'components/atoms/text-link/text-link.html.twig'
  2352. with {
  2353. 'class': 'text-link--arrow-right text-link--hide-in-print',
  2354. 'href': variant.links.epaper|default,
  2355. 'text': 'catalog_page'|trans,
  2356. 'attributes': {
  2357. target: '_blank'
  2358. }
  2359. } %}
  2360. {% endif %}
  2361. <div class=\"spacing spacing--10\"></div>
  2362. {% if cms_globals.slot_inquiry is defined %}
  2363. {% embed 'components/atoms/button/button.html.twig'
  2364. with {
  2365. 'class': 'text-link js-modal button--arrow-right text-link--arrow-right',
  2366. 'type': 'button',
  2367. 'attributes': {
  2368. 'data-modal-id': 'inquiry'
  2369. }
  2370. } %}
  2371. {% block content %}
  2372. {{ 'expert_advice_questions'|trans }}
  2373. <span class=\"text-link__arrow\"></span>
  2374. {% endblock %}
  2375. {% endembed %}
  2376. {% endif %}
  2377. {% endblock %}
  2378. {% block tenderText %}
  2379. {% endblock %}
  2380. {% block compare %}
  2381. {% if variant.attributes.comparable_articles is defined %}
  2382. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  2383. {% include ('components/organisms/product-compare/product-compare.html.twig') with {
  2384. \"productSku\": variant.sku,
  2385. \"compareSkus\":variant.attributes.comparable_articles
  2386. } %}
  2387. {% endif%}
  2388. {% endblock %}
  2389. {% block slot_center %}
  2390. {% if slot_pdp_center is defined %}
  2391. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  2392. <div class=\"product-detail__cms-center\">
  2393. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2394. 'componentData': slot_pdp_center
  2395. } %}
  2396. </div>
  2397. {% endif%}
  2398. {% endblock %}
  2399. {% block extraProductListing %}
  2400. {% if serviceSkus is not empty%}
  2401. <div class=\"spacing spacing--50\"></div>
  2402. {% include('components/atoms/headline/headline.html.twig') with {
  2403. 'headlineTag': 'h2',
  2404. 'text': 'product_service'|trans,
  2405. 'class': 'headline--section',
  2406. 'attributes': {
  2407. 'id':'serviceProductsSlider'
  2408. }
  2409. } %}
  2410. <div class=\"product-detail__service-products\">
  2411. {% include 'components/organisms/related-products/related-products.html.twig' with {
  2412. 'class': '',
  2413. 'skus': serviceSkus,
  2414. 'api_url': path('app_get_products') ,
  2415. 'current_language': storeContext.localeInfo.currentLocale,
  2416. } %}
  2417. </div>
  2418. {%endif%}
  2419. {% if mainSkus is not empty%}
  2420. <div class=\"spacing spacing--50\"></div>
  2421. {% include('components/atoms/headline/headline.html.twig') with {
  2422. 'headlineTag': 'h2',
  2423. 'text': 'main_products'|trans,
  2424. 'class': 'headline--section'
  2425. } %}
  2426. <div class=\"product-detail__main-products\">
  2427. {% include 'components/organisms/related-products/related-products.html.twig' with {
  2428. 'class': '',
  2429. 'skus': mainSkus,
  2430. 'api_url': path('app_get_products') ,
  2431. 'current_language': storeContext.localeInfo.currentLocale,
  2432. } %}
  2433. </div>
  2434. {% endif %}
  2435. {% endblock %}
  2436. {% block accessoriesProductsSlider %}
  2437. {% if sparepartSkus is not empty or accessoriesSkus is not empty %}
  2438. <div class=\"spacing spacing--50\"></div>
  2439. {% include('components/atoms/headline/headline.html.twig') with {
  2440. 'headlineTag': 'h2',
  2441. 'text': 'accessories_products_slider_headline'|trans,
  2442. 'class': 'headline--section',
  2443. 'attributes': {
  2444. 'id':'accessoriesProductsSlider'
  2445. }
  2446. } %}
  2447. <related-products-tabs
  2448. tab-entries=\"{{ getCrossSellEntries(variant, [constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY'),constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ])|json_encode }}\"
  2449. css-class=\"related-products-tabs\"
  2450. image-service=\"{{ imageservice }}\"
  2451. api-url=\"{{ path('app_get_products')}}\"
  2452. add-product-url=\"{{ path('checkout_cart_add_line_item') }}\"
  2453. id=\"pdp-related-products\"
  2454. current-language=\"{{ storeContext.localeInfo.currentLocale}}\"
  2455. product-component-class=\"product-component\"></related-products-tabs>
  2456. {% endif %}
  2457. {% endblock %}
  2458. {% block feedback %}
  2459. {% if 'product_feedback_widget_id'|transFallbackEmptyText is not empty and not isPunchout %}
  2460. <div id=\"feedback\" class=\"product-detail__feedback etrusted-js etrusted--invisible\">
  2461. <div class=\"spacing spacing--50\"></div>
  2462. {% include('components/atoms/headline/headline.html.twig') with {
  2463. 'headlineTag': 'h2',
  2464. 'text': 'customer_reviews'|trans,
  2465. 'class': 'headline--section'
  2466. } %}
  2467. {% include 'components/atoms/etrusted/etrusted.html.twig' with {
  2468. 'type':'product',
  2469. 'class': 'etrusted--product-feedback',
  2470. 'sku':variant.sku ,
  2471. 'widget_id':'product_feedback_widget_id'|trans
  2472. } %}
  2473. </div>
  2474. {% endif %}
  2475. {%endblock%}
  2476. </div>
  2477. <div class=\"product-detail__mobile-buy-box\">
  2478. {% include 'components/organisms/buy-box/small-mobile-buy-box.html.twig' with {
  2479. 'product': product,
  2480. 'variant': variant,
  2481. 'structuredProducts': structuredProducts,
  2482. 'class': 'buy-box--mobile'
  2483. } %}
  2484. </div>
  2485. </div>
  2486. <div class=\"product-detail__cms-bottom\">
  2487. {% if slot_pdp_bottom is defined %}
  2488. <div class=\"spacing spacing--50\"></div>
  2489. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2490. 'componentData': slot_pdp_bottom
  2491. } %}
  2492. {% else %}
  2493. <div class=\"spacing spacing--50\"></div>
  2494. {% include ('components/organisms/last-seen-product-slider/last-seen-product-slider.html.twig') with {
  2495. 'headline': 'recently_viewed'|trans,
  2496. 'headlineTag': 'h2',
  2497. 'additionalClass': 'product-detail__last-seen'
  2498. } %}
  2499. {% endif %}
  2500. </div>
  2501. </div>
  2502. {% endblock %}
  2503. {% block offcanvasCart %}
  2504. {% include 'components/organisms/offcanvas-cart/offcanvas-cart.html.twig' %}
  2505. {% endblock %}
  2506. {% block modal %}
  2507. {% if cms_globals.slot_inquiry is defined %}
  2508. {% embed 'components/organisms/modal/modal.html.twig' with {
  2509. 'modalId': 'inquiry'
  2510. } %}
  2511. {% block modalContent %}
  2512. {% set extraData = extraData|default({}) %}
  2513. {% set extraData = extraData|merge({'inquiryType': 'product'}) %}
  2514. {% set extraData = extraData|merge({'productSku': variant.sku}) %}
  2515. {% set extraData = extraData|merge({'products': structuredProducts|json_encode}) %}
  2516. <dynamic-form
  2517. service-base-url=\"{{ formservice }}\"
  2518. form-id=\"{{ cms_globals.slot_inquiry }}\"
  2519. extra-data=\"{{ extraData|json_encode }}\"
  2520. locale=\"{{ storeContext.localeInfo.currentLocale }}\"
  2521. frc-site-key=\"{{ frc_sitekey }}\"
  2522. ></dynamic-form>
  2523. {% endblock %}
  2524. {% endembed %}
  2525. {% endif %}
  2526. {% endblock %}
  2527. {% block javascripts %}
  2528. <script>
  2529. window.dataStore = window.dataStore || [];
  2530. window.dataStore.sku = {{ variant.sku|default('') }};
  2531. </script>
  2532. {{ parent() }}
  2533. {{ encore_entry_script_tags('product') }}
  2534. {% endblock %}
  2535. ", "pages/product/get_detail.html.twig", "/var/www/html/templates/default/pages/product/get_detail.html.twig");
  2536. }
  2537. }
  2538. /* pages/product/get_detail.html.twig */
  2539. class __TwigTemplate_a036afd2f019ede9ab963721d351c017___2104544243 extends Template
  2540. {
  2541. private Source $source;
  2542. /**
  2543. * @var array<string, Template>
  2544. */
  2545. private array $macros = [];
  2546. public function __construct(Environment $env)
  2547. {
  2548. parent::__construct($env);
  2549. $this->source = $this->getSourceContext();
  2550. $this->blocks = [
  2551. 'modalContent' => [$this, 'block_modalContent'],
  2552. ];
  2553. }
  2554. protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  2555. {
  2556. // line 442
  2557. return "components/organisms/modal/modal.html.twig";
  2558. }
  2559. protected function doDisplay(array $context, array $blocks = []): iterable
  2560. {
  2561. $macros = $this->macros;
  2562. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  2563. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  2564. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2565. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "pages/product/get_detail.html.twig"));
  2566. $this->parent = $this->load("components/organisms/modal/modal.html.twig", 442);
  2567. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  2568. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2569. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2570. }
  2571. // line 445
  2572. /**
  2573. * @return iterable<null|scalar|\Stringable>
  2574. */
  2575. public function block_modalContent(array $context, array $blocks = []): iterable
  2576. {
  2577. $macros = $this->macros;
  2578. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  2579. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modalContent"));
  2580. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2581. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modalContent"));
  2582. // line 446
  2583. yield " ";
  2584. $context["extraData"] = ((array_key_exists("extraData", $context)) ? (Twig\Extension\CoreExtension::default((isset($context["extraData"]) || array_key_exists("extraData", $context) ? $context["extraData"] : (function () { throw new RuntimeError('Variable "extraData" does not exist.', 446, $this->source); })()), [])) : ([]));
  2585. // line 447
  2586. yield " ";
  2587. $context["extraData"] = Twig\Extension\CoreExtension::merge((isset($context["extraData"]) || array_key_exists("extraData", $context) ? $context["extraData"] : (function () { throw new RuntimeError('Variable "extraData" does not exist.', 447, $this->source); })()), ["inquiryType" => "product"]);
  2588. // line 448
  2589. yield " ";
  2590. $context["extraData"] = Twig\Extension\CoreExtension::merge((isset($context["extraData"]) || array_key_exists("extraData", $context) ? $context["extraData"] : (function () { throw new RuntimeError('Variable "extraData" does not exist.', 448, $this->source); })()), ["productSku" => CoreExtension::getAttribute($this->env, $this->source, (isset($context["variant"]) || array_key_exists("variant", $context) ? $context["variant"] : (function () { throw new RuntimeError('Variable "variant" does not exist.', 448, $this->source); })()), "sku", [], "any", false, false, false, 448)]);
  2591. // line 449
  2592. yield " ";
  2593. $context["extraData"] = Twig\Extension\CoreExtension::merge((isset($context["extraData"]) || array_key_exists("extraData", $context) ? $context["extraData"] : (function () { throw new RuntimeError('Variable "extraData" does not exist.', 449, $this->source); })()), ["products" => json_encode((isset($context["structuredProducts"]) || array_key_exists("structuredProducts", $context) ? $context["structuredProducts"] : (function () { throw new RuntimeError('Variable "structuredProducts" does not exist.', 449, $this->source); })()))]);
  2594. // line 450
  2595. yield "
  2596. <dynamic-form
  2597. service-base-url=\"";
  2598. // line 452
  2599. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["formservice"]) || array_key_exists("formservice", $context) ? $context["formservice"] : (function () { throw new RuntimeError('Variable "formservice" does not exist.', 452, $this->source); })()), "html", null, true);
  2600. yield "\"
  2601. form-id=\"";
  2602. // line 453
  2603. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["cms_globals"]) || array_key_exists("cms_globals", $context) ? $context["cms_globals"] : (function () { throw new RuntimeError('Variable "cms_globals" does not exist.', 453, $this->source); })()), "slot_inquiry", [], "any", false, false, false, 453), "html", null, true);
  2604. yield "\"
  2605. extra-data=\"";
  2606. // line 454
  2607. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(json_encode((isset($context["extraData"]) || array_key_exists("extraData", $context) ? $context["extraData"] : (function () { throw new RuntimeError('Variable "extraData" does not exist.', 454, $this->source); })())), "html", null, true);
  2608. yield "\"
  2609. locale=\"";
  2610. // line 455
  2611. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["storeContext"]) || array_key_exists("storeContext", $context) ? $context["storeContext"] : (function () { throw new RuntimeError('Variable "storeContext" does not exist.', 455, $this->source); })()), "localeInfo", [], "any", false, false, false, 455), "currentLocale", [], "any", false, false, false, 455), "html", null, true);
  2612. yield "\"
  2613. frc-site-key=\"";
  2614. // line 456
  2615. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["frc_sitekey"]) || array_key_exists("frc_sitekey", $context) ? $context["frc_sitekey"] : (function () { throw new RuntimeError('Variable "frc_sitekey" does not exist.', 456, $this->source); })()), "html", null, true);
  2616. yield "\"
  2617. ></dynamic-form>
  2618. ";
  2619. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2620. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2621. yield from [];
  2622. }
  2623. /**
  2624. * @codeCoverageIgnore
  2625. */
  2626. public function getTemplateName(): string
  2627. {
  2628. return "pages/product/get_detail.html.twig";
  2629. }
  2630. /**
  2631. * @codeCoverageIgnore
  2632. */
  2633. public function isTraitable(): bool
  2634. {
  2635. return false;
  2636. }
  2637. /**
  2638. * @codeCoverageIgnore
  2639. */
  2640. public function getDebugInfo(): array
  2641. {
  2642. return array ( 2978 => 456, 2974 => 455, 2970 => 454, 2966 => 453, 2962 => 452, 2958 => 450, 2955 => 449, 2952 => 448, 2949 => 447, 2946 => 446, 2933 => 445, 2910 => 442, 2369 => 297, 2356 => 296, 2333 => 288, 1796 => 266, 1794 => 262, 1793 => 261, 1791 => 259, 1778 => 258, 1755 => 255, 1215 => 471, 1210 => 469, 1205 => 467, 1201 => 465, 1188 => 464, 1176 => 461, 1173 => 460, 1170 => 442, 1167 => 441, 1154 => 440, 1142 => 438, 1139 => 437, 1126 => 436, 1115 => 407, 1111 => 405, 1109 => 402, 1107 => 399, 1105 => 394, 1101 => 392, 1098 => 391, 1085 => 390, 1074 => 388, 1068 => 385, 1063 => 383, 1059 => 382, 1055 => 381, 1050 => 379, 1047 => 378, 1045 => 370, 1042 => 369, 1039 => 368, 1026 => 367, 1015 => 365, 1011 => 363, 1009 => 361, 1008 => 359, 1007 => 357, 1004 => 356, 1002 => 351, 999 => 350, 997 => 349, 994 => 348, 990 => 346, 988 => 344, 987 => 342, 986 => 340, 983 => 339, 981 => 331, 978 => 330, 975 => 329, 962 => 328, 951 => 326, 947 => 324, 945 => 322, 944 => 321, 940 => 319, 937 => 318, 924 => 317, 913 => 316, 910 => 315, 908 => 313, 907 => 312, 906 => 311, 903 => 310, 900 => 309, 887 => 308, 876 => 306, 863 => 305, 851 => 302, 848 => 301, 845 => 288, 843 => 287, 840 => 286, 837 => 285, 835 => 279, 833 => 276, 830 => 275, 828 => 274, 825 => 273, 812 => 272, 799 => 268, 797 => 256, 795 => 255, 793 => 238, 787 => 234, 774 => 233, 762 => 206, 760 => 205, 757 => 204, 744 => 203, 733 => 208, 730 => 203, 728 => 201, 727 => 200, 726 => 199, 724 => 198, 711 => 197, 697 => 118, 684 => 117, 668 => 114, 665 => 113, 652 => 112, 641 => 110, 639 => 107, 637 => 105, 624 => 104, 611 => 433, 608 => 432, 606 => 427, 603 => 426, 600 => 425, 598 => 423, 597 => 422, 594 => 421, 592 => 420, 586 => 416, 584 => 413, 583 => 412, 582 => 411, 581 => 410, 577 => 408, 575 => 390, 572 => 389, 570 => 367, 567 => 366, 565 => 328, 562 => 327, 559 => 317, 557 => 308, 554 => 307, 552 => 305, 549 => 304, 546 => 272, 543 => 271, 540 => 233, 538 => 232, 533 => 229, 530 => 228, 528 => 221, 526 => 220, 523 => 219, 520 => 218, 518 => 211, 516 => 210, 513 => 209, 511 => 197, 508 => 196, 506 => 194, 505 => 193, 504 => 192, 498 => 188, 490 => 182, 479 => 179, 476 => 178, 472 => 177, 467 => 174, 465 => 173, 462 => 172, 458 => 170, 456 => 166, 455 => 165, 451 => 163, 449 => 162, 446 => 161, 444 => 159, 443 => 158, 442 => 157, 438 => 155, 436 => 154, 435 => 151, 434 => 145, 433 => 139, 432 => 134, 429 => 133, 426 => 132, 423 => 131, 420 => 130, 418 => 129, 414 => 127, 412 => 126, 406 => 122, 403 => 117, 401 => 112, 398 => 111, 396 => 104, 390 => 100, 377 => 99, 365 => 96, 362 => 91, 349 => 90, 337 => 88, 335 => 79, 334 => 78, 333 => 77, 332 => 76, 331 => 75, 330 => 70, 328 => 69, 315 => 68, 302 => 66, 296 => 64, 283 => 63, 260 => 61, 248 => 58, 246 => 56, 244 => 55, 242 => 54, 237 => 53, 224 => 52, 213 => 48, 211 => 47, 198 => 46, 187 => 42, 186 => 41, 184 => 40, 171 => 39, 153 => 31, 149 => 30, 145 => 29, 141 => 28, 137 => 27, 133 => 26, 124 => 19, 122 => 17, 121 => 16, 120 => 15, 119 => 14, 118 => 13, 117 => 12, 116 => 11, 114 => 10, 111 => 9, 98 => 8, 87 => 1, 84 => 6, 81 => 4, 79 => 3, 77 => 2, 64 => 1,);
  2643. }
  2644. public function getSourceContext(): Source
  2645. {
  2646. return new Source("{% extends 'pages/base.html.twig' %}
  2647. {% set page_type_tracking = 'cp products' %}
  2648. {% if variant.attributes.centAmountGross is defined %}
  2649. {% set currentPrice = variant.attributes|default({'centAmountGross': 0}) %}
  2650. {% else %}
  2651. {% set currentPrice = {'centAmountGross': 0} %}
  2652. {% endif%}
  2653. {% block gtmDataLayer %}
  2654. {% set objectId = product.id|default ~'.' ~ variant.id|default %}
  2655. {% include('components/atoms/gtm-data-layer/gtm-data-layer.html.twig') with {
  2656. 'product_id': variant.displaySku|default(''),
  2657. 'objectId':objectId,
  2658. 'product_name': variant.name|default(''),
  2659. 'category': product.categoryName|default(''),
  2660. 'product_price': currentPrice.centAmountGross|priceDefaultFormat|default(''),
  2661. 'brand': variant.structuredData.brand.name.value|default(''),
  2662. 'availability': variant.salesStatus == \"saleable\" ? \"yes\" : \"no\"
  2663. } %}
  2664. <script>
  2665. window.dataLayer.push({
  2666. 'event': 'eec.detail_view',
  2667. 'ecommerce': {
  2668. 'detail': {
  2669. 'actionField': {'list': 'cp products'},
  2670. 'products': [{
  2671. 'name': '{{ variant.name|default('') }}',
  2672. 'id': '{{ variant.displaySku|default('') }}',
  2673. 'objectId':'{{ objectId }}',
  2674. 'price': '{{ currentPrice.centAmountGross|priceDefaultFormat }}',
  2675. 'brand': '{{ variant.structuredData.brand.name.value|default('') }}',
  2676. 'category': '{{ product.categoryName|default('') }}',
  2677. }]
  2678. }
  2679. },
  2680. })
  2681. </script>
  2682. {% endblock %}
  2683. {% block meta %}
  2684. {% include 'components/organisms/meta/meta.html.twig' with {
  2685. 'metaInformation': variant.metaInformation|default(null),
  2686. 'fallback': variant.name ~ 'meta_description_default'|trans,
  2687. } %}
  2688. {% endblock %}
  2689. {% block openGraph %}
  2690. {% include 'components/organisms/open-graph/open-graph.html.twig' with {
  2691. 'openGraphInformation': variant.openGraphInformation|default(null)
  2692. } %}
  2693. {% endblock %}
  2694. {% block structuredData %}
  2695. {{ parent() }}
  2696. {% if variantStructuredData is defined %}
  2697. {% include('components/atoms/structured-data/structured-data.html.twig') with {
  2698. 'structuredData': variantStructuredData|default,
  2699. } %}
  2700. {% endif %}
  2701. {% endblock %}
  2702. {% block title %}{{ variant.name|default(product.name) }}{% endblock %}
  2703. {% block stylesheets %}
  2704. {{ parent() }}
  2705. {{ encore_entry_link_tags('product') }}
  2706. {% endblock %}
  2707. {% block econdaTracing %}
  2708. {% include('components/atoms/econda-tracking/econda-tracking.html.twig') with{
  2709. 'page_type_tracking': page_type_tracking,
  2710. 'econdaSend': {
  2711. ec_Event: [
  2712. {
  2713. type: 'view',
  2714. pid: variant.displaySku|default('') ,
  2715. sku: variant.displaySku|default('') ,
  2716. name: variant.name|default('') ,
  2717. price: currentPrice.centAmountGross|priceDefaultFormat ,
  2718. group: variant.categoryName,
  2719. count: 1,
  2720. var1: null,
  2721. var2: null,
  2722. var3: null
  2723. }
  2724. ]
  2725. },
  2726. } %}
  2727. {% endblock %}
  2728. {% block breadcrumb %}
  2729. {% include('components/molecules/breadcrumb/breadcrumb.html.twig') with {
  2730. 'page': 'detail',
  2731. 'backOffset': -1,
  2732. 'showBackAlways': true
  2733. } %}
  2734. {% endblock %}
  2735. {% block content %}
  2736. <div class=\"product-detail\">
  2737. <div class=\"product-detail__data\">
  2738. <div class=\"product-detail__header\">
  2739. <div class=\"product-detail__headline\">
  2740. {% block productHeadline %}
  2741. {% include('components/atoms/headline/headline.html.twig') with {
  2742. 'headlineTag': 'h1',
  2743. 'text': variant.name,
  2744. 'class': 'product-description__headline'
  2745. } %}
  2746. {% endblock %}
  2747. {% block productSku %}
  2748. <p class=\"product-description__sku\">
  2749. {{ 'product_sku'|trans }}: {{ variant.displaySku }}
  2750. </p>
  2751. {% endblock %}
  2752. {% block productFeedback %}
  2753. <div class=\"etrusted--product-stars\" >
  2754. <etrusted-product-review-list-widget-product-star-extension></etrusted-product-review-list-widget-product-star-extension>
  2755. </div>
  2756. {% endblock %}
  2757. </div>
  2758. <div class=\"product-detail__image\">
  2759. {% include('components/organisms/pdp-gallery/pdp-gallery.html.twig') %}
  2760. </div>
  2761. <div class=\"product-detail__description\">
  2762. {% set accessoriesSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY') ) %}
  2763. {% set sparepartSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ) %}
  2764. {% set mainSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::MAIN') ) %}
  2765. {% set serviceSkus = getCrossSellSkus(variant, constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SERVICE') ) %}
  2766. {% set productLinks = [
  2767. {slug: '#product_information', name: 'product_information'|trans, active: true, gtm: 'data-gtm-cp-pdp-go-to'},
  2768. {
  2769. slug: '#serviceProductsSlider',
  2770. name: 'product_service'|trans,
  2771. active: (serviceSkus|length > 0),
  2772. gtm: 'data-gtm-cp-pdp-go-to'
  2773. },
  2774. {
  2775. slug: '#product-compare',
  2776. name: 'compare_products'|trans,
  2777. active: (variant.attributes.comparable_articles is defined and variant.attributes.comparable_articles is not empty),
  2778. gtm: 'data-gtm-cp-pdp-go-to'
  2779. },
  2780. {
  2781. slug: '#accessoriesProductsSlider',
  2782. name: 'accessories_products_slider_headline'|trans,
  2783. active: (accessoriesSkus|length > 0) or (sparepartSkus|length > 0),
  2784. gtm: 'data-gtm-cp-pdp-go-to'
  2785. },
  2786. ]|filter(v => v.active) %}
  2787. {% include 'components/organisms/product-description/product-description.html.twig' with {
  2788. 'product': product,
  2789. 'variant': variant
  2790. } %}
  2791. {% if productLinks|length > 0 %}
  2792. <div class=\"product-detail__actions\">
  2793. {% include('components/molecules/link-list/link-list.html.twig') with {
  2794. 'entries': productLinks,
  2795. 'class': 'link-list--pdp',
  2796. 'classLink': 'text-link--arrow-left'
  2797. } %}
  2798. </div>
  2799. {% endif %}
  2800. {% if variant.ghsImages is defined and variant.ghsImages is not empty %}
  2801. <div class=\"product-detail__icons\">
  2802. <div class=\"js-icon-image-gallery product-detail__icons-slider icon-slider\">
  2803. <div class=\"swiper-wrapper\">
  2804. {% for icon in variant.ghsImages %}
  2805. <div class=\"swiper-slide\">
  2806. <img height=\"40\" src=\"{{ icon.uri| default}}\" alt=\"{{ icon.text| default }}\">
  2807. </div>
  2808. {% endfor %}
  2809. </div>
  2810. <div class=\"icon-slider__prev swiper-button-prev\" aria-hidden=\"true\"></div>
  2811. <div class=\"icon-slider__next swiper-button-next\" aria-hidden=\"true\"></div>
  2812. </div>
  2813. </div>
  2814. {% endif %}
  2815. </div>
  2816. </div>
  2817. <div class=\"product-detail__sidebar\">
  2818. <div class=\"product-detail__variant-anchor\" id=\"buy-box__variant-selection\"></div>
  2819. {% include 'components/organisms/variant-selection/variant-selection.html.twig' with {
  2820. 'product': product,
  2821. 'variant': variant,
  2822. } %}
  2823. <div class=\"product-detail__sticky-box\">
  2824. {% block buyBox %}
  2825. {% include 'components/organisms/buy-box/buy-box.html.twig' with {
  2826. 'product': product,
  2827. 'variant': variant,
  2828. 'structuredProducts': structuredProducts
  2829. } %}
  2830. {% block buyBoxActions %}
  2831. <div class=\"buy-box__actions\">
  2832. {% include 'components/molecules/icon-links-actions/icon-links-actions.html.twig' %}
  2833. </div>
  2834. {% endblock %}
  2835. {% endblock %}
  2836. {% if slot_pdp_sidebar_default is defined %}
  2837. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2838. 'componentData': slot_pdp_sidebar_default,
  2839. 'componentConfig': {
  2840. 'contact-box': {
  2841. modifier: 'detail js-cms-contact-box',
  2842. }
  2843. }
  2844. } %}
  2845. {% endif %}
  2846. {% if slot_pdp_sidebar is defined %}
  2847. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2848. 'componentData': slot_pdp_sidebar,
  2849. 'componentConfig': {
  2850. 'contact-box': {
  2851. modifier: 'detail js-cms-contact-box',
  2852. }
  2853. }
  2854. } %}
  2855. {% endif %}
  2856. </div>
  2857. </div>
  2858. <div class=\"product-detail__info\">
  2859. {% if not isPunchout %}
  2860. {% block econdaSlider %}
  2861. <div class=\"spacing spacing--30\"></div>
  2862. <div class=\"product-detail__econda-div\">
  2863. <div class=\"product-detail__econda-slider\" id=\"econdaProductsSlider\">
  2864. {% set econdaWidgets = [{
  2865. id:'econda_1',
  2866. widgetId: 'econda_product_widget_id'|trans,
  2867. headline: {
  2868. text:'similar_products_slider_headline'|trans,
  2869. },
  2870. component: ''
  2871. },
  2872. {
  2873. id:'econda_2',
  2874. widgetId: 'econda_product_buy_together_widget_id'|trans,
  2875. headline:{
  2876. text:'purchased_together_products_slider_headline'|trans,
  2877. },
  2878. component: ''
  2879. }
  2880. ] %}
  2881. {% embed 'components/organisms/tabs/tabs.html.twig' with {
  2882. 'entries': econdaWidgets
  2883. } %}
  2884. {% block entryContent %}
  2885. {% include ('components/organisms/econda-slider/econda-slider.html.twig') with {
  2886. 'econdaContentIdentifier': 'productEcondaSilder',
  2887. 'econdaProductId': variant.displaySku|default(''),
  2888. 'widgetId': entry['widgetId'],
  2889. 'headline': '',
  2890. 'class': 'econda-slider-pdp'
  2891. } %}
  2892. {% endblock %}
  2893. {% endembed %}
  2894. </div>
  2895. </div>
  2896. {% endblock %}
  2897. {% endif %}
  2898. {% block additionalInformation %}
  2899. <div class=\"spacing spacing--30\"></div>
  2900. {% include 'pages/product/data-tabs.html.twig' %}
  2901. {% if variant.links.epaper is defined and variant.links.epaper|default is not empty %}
  2902. {% include 'components/atoms/text-link/text-link.html.twig'
  2903. with {
  2904. 'class': 'text-link--arrow-right text-link--hide-in-print',
  2905. 'href': variant.links.epaper|default,
  2906. 'text': 'catalog_page'|trans,
  2907. 'attributes': {
  2908. target: '_blank'
  2909. }
  2910. } %}
  2911. {% endif %}
  2912. <div class=\"spacing spacing--10\"></div>
  2913. {% if cms_globals.slot_inquiry is defined %}
  2914. {% embed 'components/atoms/button/button.html.twig'
  2915. with {
  2916. 'class': 'text-link js-modal button--arrow-right text-link--arrow-right',
  2917. 'type': 'button',
  2918. 'attributes': {
  2919. 'data-modal-id': 'inquiry'
  2920. }
  2921. } %}
  2922. {% block content %}
  2923. {{ 'expert_advice_questions'|trans }}
  2924. <span class=\"text-link__arrow\"></span>
  2925. {% endblock %}
  2926. {% endembed %}
  2927. {% endif %}
  2928. {% endblock %}
  2929. {% block tenderText %}
  2930. {% endblock %}
  2931. {% block compare %}
  2932. {% if variant.attributes.comparable_articles is defined %}
  2933. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  2934. {% include ('components/organisms/product-compare/product-compare.html.twig') with {
  2935. \"productSku\": variant.sku,
  2936. \"compareSkus\":variant.attributes.comparable_articles
  2937. } %}
  2938. {% endif%}
  2939. {% endblock %}
  2940. {% block slot_center %}
  2941. {% if slot_pdp_center is defined %}
  2942. <div class=\"spacing spacing--50 spacing--hide-in-print\"></div>
  2943. <div class=\"product-detail__cms-center\">
  2944. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  2945. 'componentData': slot_pdp_center
  2946. } %}
  2947. </div>
  2948. {% endif%}
  2949. {% endblock %}
  2950. {% block extraProductListing %}
  2951. {% if serviceSkus is not empty%}
  2952. <div class=\"spacing spacing--50\"></div>
  2953. {% include('components/atoms/headline/headline.html.twig') with {
  2954. 'headlineTag': 'h2',
  2955. 'text': 'product_service'|trans,
  2956. 'class': 'headline--section',
  2957. 'attributes': {
  2958. 'id':'serviceProductsSlider'
  2959. }
  2960. } %}
  2961. <div class=\"product-detail__service-products\">
  2962. {% include 'components/organisms/related-products/related-products.html.twig' with {
  2963. 'class': '',
  2964. 'skus': serviceSkus,
  2965. 'api_url': path('app_get_products') ,
  2966. 'current_language': storeContext.localeInfo.currentLocale,
  2967. } %}
  2968. </div>
  2969. {%endif%}
  2970. {% if mainSkus is not empty%}
  2971. <div class=\"spacing spacing--50\"></div>
  2972. {% include('components/atoms/headline/headline.html.twig') with {
  2973. 'headlineTag': 'h2',
  2974. 'text': 'main_products'|trans,
  2975. 'class': 'headline--section'
  2976. } %}
  2977. <div class=\"product-detail__main-products\">
  2978. {% include 'components/organisms/related-products/related-products.html.twig' with {
  2979. 'class': '',
  2980. 'skus': mainSkus,
  2981. 'api_url': path('app_get_products') ,
  2982. 'current_language': storeContext.localeInfo.currentLocale,
  2983. } %}
  2984. </div>
  2985. {% endif %}
  2986. {% endblock %}
  2987. {% block accessoriesProductsSlider %}
  2988. {% if sparepartSkus is not empty or accessoriesSkus is not empty %}
  2989. <div class=\"spacing spacing--50\"></div>
  2990. {% include('components/atoms/headline/headline.html.twig') with {
  2991. 'headlineTag': 'h2',
  2992. 'text': 'accessories_products_slider_headline'|trans,
  2993. 'class': 'headline--section',
  2994. 'attributes': {
  2995. 'id':'accessoriesProductsSlider'
  2996. }
  2997. } %}
  2998. <related-products-tabs
  2999. tab-entries=\"{{ getCrossSellEntries(variant, [constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::ACCESSORY'),constant('App\\\\Twig\\\\Functions\\\\CrossSellExtension::SPAREPART') ])|json_encode }}\"
  3000. css-class=\"related-products-tabs\"
  3001. image-service=\"{{ imageservice }}\"
  3002. api-url=\"{{ path('app_get_products')}}\"
  3003. add-product-url=\"{{ path('checkout_cart_add_line_item') }}\"
  3004. id=\"pdp-related-products\"
  3005. current-language=\"{{ storeContext.localeInfo.currentLocale}}\"
  3006. product-component-class=\"product-component\"></related-products-tabs>
  3007. {% endif %}
  3008. {% endblock %}
  3009. {% block feedback %}
  3010. {% if 'product_feedback_widget_id'|transFallbackEmptyText is not empty and not isPunchout %}
  3011. <div id=\"feedback\" class=\"product-detail__feedback etrusted-js etrusted--invisible\">
  3012. <div class=\"spacing spacing--50\"></div>
  3013. {% include('components/atoms/headline/headline.html.twig') with {
  3014. 'headlineTag': 'h2',
  3015. 'text': 'customer_reviews'|trans,
  3016. 'class': 'headline--section'
  3017. } %}
  3018. {% include 'components/atoms/etrusted/etrusted.html.twig' with {
  3019. 'type':'product',
  3020. 'class': 'etrusted--product-feedback',
  3021. 'sku':variant.sku ,
  3022. 'widget_id':'product_feedback_widget_id'|trans
  3023. } %}
  3024. </div>
  3025. {% endif %}
  3026. {%endblock%}
  3027. </div>
  3028. <div class=\"product-detail__mobile-buy-box\">
  3029. {% include 'components/organisms/buy-box/small-mobile-buy-box.html.twig' with {
  3030. 'product': product,
  3031. 'variant': variant,
  3032. 'structuredProducts': structuredProducts,
  3033. 'class': 'buy-box--mobile'
  3034. } %}
  3035. </div>
  3036. </div>
  3037. <div class=\"product-detail__cms-bottom\">
  3038. {% if slot_pdp_bottom is defined %}
  3039. <div class=\"spacing spacing--50\"></div>
  3040. {% include 'components/organisms/storyblok/storyblok.html.twig' with {
  3041. 'componentData': slot_pdp_bottom
  3042. } %}
  3043. {% else %}
  3044. <div class=\"spacing spacing--50\"></div>
  3045. {% include ('components/organisms/last-seen-product-slider/last-seen-product-slider.html.twig') with {
  3046. 'headline': 'recently_viewed'|trans,
  3047. 'headlineTag': 'h2',
  3048. 'additionalClass': 'product-detail__last-seen'
  3049. } %}
  3050. {% endif %}
  3051. </div>
  3052. </div>
  3053. {% endblock %}
  3054. {% block offcanvasCart %}
  3055. {% include 'components/organisms/offcanvas-cart/offcanvas-cart.html.twig' %}
  3056. {% endblock %}
  3057. {% block modal %}
  3058. {% if cms_globals.slot_inquiry is defined %}
  3059. {% embed 'components/organisms/modal/modal.html.twig' with {
  3060. 'modalId': 'inquiry'
  3061. } %}
  3062. {% block modalContent %}
  3063. {% set extraData = extraData|default({}) %}
  3064. {% set extraData = extraData|merge({'inquiryType': 'product'}) %}
  3065. {% set extraData = extraData|merge({'productSku': variant.sku}) %}
  3066. {% set extraData = extraData|merge({'products': structuredProducts|json_encode}) %}
  3067. <dynamic-form
  3068. service-base-url=\"{{ formservice }}\"
  3069. form-id=\"{{ cms_globals.slot_inquiry }}\"
  3070. extra-data=\"{{ extraData|json_encode }}\"
  3071. locale=\"{{ storeContext.localeInfo.currentLocale }}\"
  3072. frc-site-key=\"{{ frc_sitekey }}\"
  3073. ></dynamic-form>
  3074. {% endblock %}
  3075. {% endembed %}
  3076. {% endif %}
  3077. {% endblock %}
  3078. {% block javascripts %}
  3079. <script>
  3080. window.dataStore = window.dataStore || [];
  3081. window.dataStore.sku = {{ variant.sku|default('') }};
  3082. </script>
  3083. {{ parent() }}
  3084. {{ encore_entry_script_tags('product') }}
  3085. {% endblock %}
  3086. ", "pages/product/get_detail.html.twig", "/var/www/html/templates/default/pages/product/get_detail.html.twig");
  3087. }
  3088. }