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/onceKiedy 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) czyDrupal.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 bibliotekaonce, 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);