logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Zamenite jQuery.once() sa JavaScript once() u Drupalu 10

25/05/2025, by Ivan

Drupal 10 je stigao! A Drupal 10 više ne sadrži biblioteku drupal/jquery.once:

https://www.drupal.org/node/3158256

jQuery once je uklonjen iz Drupal core-a, ali je još uvek prisutan u mnogim dodatnim (contrib) modulima:

jquery.once library
jQuery.once biblioteka u contrib modulima

Održavaoci modula su dobijali automatske tikete sa zakrpama pod nazivom "Automated Drupal 10 compatibility fixes":

https://www.drupal.org/project/media_library_edit/issues/3288511

Ali ove nadogradnje ne sadrže ispravke za jquery.once. Tako su mnogi održavaoci mislili da su moduli spremni za Drupal 10 i nisu ih još testirali.

Zato, ako dobijete grešku "Uncaught TypeError: $(...).once is not a function", ne brinite, lako se rešava.

1. Potrebno je da zamenite core/jquery.once biblioteku sa core/once u *.libraries.yml fajlu (vidi screenshot iznad)

dependencies:
  - core/jquery
  - core/once

2. Ažurirajte javascript kod i zamenite $.once() sa javascript once(), na primer kod sa jQuery.once():

  Drupal.behaviors.fileBrowserClickProxy = {
    attach: function (context, settings) {
      $('.grid-item', context).once('bind-click-event').click(function () {
        // javascript/jQuery kod ovde.
      });
    }
  };

Kod sa javascript once() (Drupal 10 ispravan kod):

  Drupal.behaviors.fileBrowserClickProxy = {
    attach: function (context, settings) {
      $(once('bind-click-event', '.grid-item', context)).each(function () {
        $(this).on('click', function() {
          // javascript/jQuery kod ovde.
        });
      });
    }
  };

Drupal 10 i dalje koristi jQuery, tako da možemo da obavijemo once() funkciju u jQuery simbol $, i time dobijamo jQuery objekat iz once() funkcije, pa možemo koristiti .each() metodu.

Takođe, možete potpuno izbaciti jQuery u svom javascriptu:

https://youmightnotneedjquery.com/

  Drupal.behaviors.fileBrowserClickProxy = {
    attach: function (context, settings) {
      once('bind-click-event', '.grid-item', context).forEach(el => {
        el.addEventListener('click', () => {
          // Samo čist JavaScript ovde.
        });
        el.classList.add(className);
      });
    }
  };

Ali tada ćete morati da prepišete sav jQuery kod unutar 'click' callback funkcije.

Tags