Некоторые особенности JS и jQuery в Drupal 7

Полезная статья на хабре, оформлю её в виде заметок.

1) Т.к. переменная $ по умолчанию не объявлена, поэтому скрипт заворачиваем в обертку:

  1. (function ($) {
  2.  
  3. //наш скрипт
  4.  
  5. }) (jQuery);

2) Drupal.behaviors. Что это такое можно почитать в основной статье, приведу только примеры кода:

  1. (function ($) {
  2. Drupal.behaviors.yourName = {
  3. attach : function(context, settings) {
  4. // Your code here.
  5. }
  6. };
  7. })(jQuery);

Все бихевиоры можно вызвать вручную так:
Drupal.attachBehaviors(document, {});

При использовании контекста, бихевиоры будут вызываться только для вновь полученного контента (например после сработки ajax скриптов)
$('a...', context).someTooltipPlugin();

3) jQuery.once используется, чтобы обработчики не навешивались на одни и те же элементы больше одного раза:

Без плагина:
$('a.tooltip:not(.processed)', context).addClass('processed').someTooltipPlugin();

С использованием плагина jQuery.once (встроен в ядро):

  1. $(context).once('myIdentifier', function () {
  2. // Your code here.
  3. });

или

  1. $(context).once(function () {
  2. // Your code here.
  3. });

(где myIdentifier - уникальный навешиваемый нами processed класс)

4) Стандартные друпаловские функции:

  1. //переменная, содержащая basepath
  2. Drupal.settings.basePath
  3. // Вывод переведенной строки.
  4. Drupal.t('text');
  5. // Вывод "безопасного" значения строки.
  6. Drupal.checkPlain(name);
  7. // Склонение окончаний фразы, в зависимости от множественного/единственного числа переменной.
  8. Drupal.formatPlural(count, singular, plural, args, options);