Temat - zależności 
 

global-styling:
 version: VERSION
 css:
   component:      
     css/style.css: { weight: 100 }
 js:
   js/global.js: {}      
 dependencies:
   - core/drupal
   - core/jquery    
   - core/once

 

Kiedy stosować

 

1. core/drupal

Kiedy stosować: Zawsze, gdy Twój plik JavaScript korzysta z obiektu Drupal lub mechanizmu Drupal.behaviors.

  • Dlaczego: Zapewnia dostęp do kluczowych funkcji API Drupala w JS, takich jak Drupal.t() (tłumaczenia) czy Drupal.checkPlain(). Bez tego Twój skrypt może wywalić błąd w konsoli, jeśli spróbuje odpalić behavior przed załadowaniem rdzenia.
2. core/jquery

Kiedy stosować: Gdy w swoim kodzie JS używasz składni jQuery (np. $('selector') lub jQuery.ajax()).

  • Dlaczego: Drupal 10+ dąży do "Vanilla JS" (czystego JavaScriptu). jQuery nie jest już ładowane domyślnie na każdej stronie. Jeśli go używasz, musisz to jawnie zadeklarować, inaczej znak $ nie będzie rozpoznawany.
3. core/once

Kiedy stosować: Gdy używasz biblioteki @drupal/once do zapobiegania wielokrotnemu wykonywaniu tego samego skryptu na tych samych elementach (np. przy ładowaniu treści przez AJAX).

  • Dlaczego: W starszych wersjach Drupala używało się jquery.once. W nowoczesnym Drupalu (9.2+) standardem jest biblioteka once, która nie wymaga jQuery. Jest niezbędna, aby Twój kod nie "odpalał się" kilka razy na tym samym przycisku czy menu po przeładowaniu fragmentu strony.

Pliki js

podstawa minimalna:

(function (Drupal, once) {
  Drupal.behaviors.mojeZachowanie = {
    attach: function (context, settings) {
      // Używamy 'once', aby dodać klasę tylko raz
      const elementy = once('moj-unikalny-klucz', '.jakas-klasa', context);
      
      elementy.forEach(function (el) {
        // Tutaj kod działający na el
        console.log(Drupal.t('Zainicjalizowano element!'));
      });
    }
  };
})(Drupal, once);

Spis treści: