custom/plugins/SchilderSysteme/src/Resources/views/storefront/element/cms-element-categories.html.twig line 1

Open in your IDE?
  1. {% block block_categories %}
  2.     {% set element = block.slots.elements|first %}
  3. <div data-cms-element-id="{{ element.id }}" class="flip-book col-12">
  4.     {% set categories= element.data.all %}
  5.     <div class="flip-book-slider-container">
  6.         {% set sortingArray = ["ALU", "NIRO", "FORMO", "GLAS/PROFIL", "TAKTIL", "AUSSEN", "iNOX"] %}
  7.         {% set sortedItems = [] %}
  8.         {% for name in sortingArray %}
  9.             {% for item in categories %}
  10.                 {% if item.name == name %}
  11.                     {% set sortedItems = sortedItems|merge([item]) %}
  12.                 {% endif %}
  13.             {% endfor %}
  14.         {% endfor %}
  15.         {{ dump(sortedItems) }}
  16.         {% for item in sortedItems %}
  17.             {% if item.customFields.custom_category_info_flip_book_2 %}
  18.                 <div class="flip-book-slider-item d-none" data-id="{{ item.id }}">
  19.                     {{ item.customFields.custom_category_info_flip_book_2|raw }}
  20.                 </div>
  21.             {% endif %}
  22.         {% endfor %}
  23.         <script>
  24.             document.addEventListener("DOMContentLoaded", () => {
  25.                 let elems = document.querySelectorAll(".flip-book-slider-item div.container");
  26.                 // Check if the element exists
  27.                 if (elems) {
  28.                     for (let item of elems) {
  29.                         console.log(item); // Log the element to the console
  30.                         console.log(item.dataset.html); // Log the value of dataset.html property
  31.                         // Add a click event listener to the element
  32.                         item.addEventListener("click", () => {
  33.                             setInnerHTML(item, item.dataset.html)
  34.                         });
  35.                     }
  36.                 }
  37.             });
  38.             function setInnerHTML(elm, html) {
  39.                 elm.innerHTML = html;
  40.                 Array.from(elm.querySelectorAll("script"))
  41.                     .forEach( oldScriptEl => {
  42.                         const newScriptEl = document.createElement("script");
  43.                         Array.from(oldScriptEl.attributes).forEach( attr => {
  44.                             newScriptEl.setAttribute(attr.name, attr.value)
  45.                         });
  46.                         const scriptText = document.createTextNode(oldScriptEl.innerHTML);
  47.                         newScriptEl.appendChild(scriptText);
  48.                         oldScriptEl.parentNode.replaceChild(newScriptEl, oldScriptEl);
  49.                     });
  50.             }
  51.         </script>
  52.     </div>
  53.     <div class="flip-book--categories cms-element-categories-slider">
  54.         {% for item in sortedItems %}
  55.             {% if item.customFields.custom_category_info_flip_book_2 %}
  56.                 {% set categoryColor = item.customFields.custom_category_info_color %}
  57.                 <div class="cms-element-categories-item" alt="{{ item.translated.name }}" data-id="{{ item.id }}">
  58.                     <span class="cms-element-categories-item-text">{{ item.translated.name }}</span>
  59.                     <div class="background-container" style="background-color: {% if categoryColor %}{{ categoryColor }} {% else %} black {% endif %}"></div>
  60.                 </div>
  61.             {% endif %}
  62.         {% endfor %}
  63.     </div>
  64. </div>
  65. {% endblock %}