Невероятно часто народ подключает JavaScript файлы кто как может. А ведь в Drupal'e для этого есть спец функция, которая достаточно гибкая и полезная. Поэтому рассмотрим как можно добавить JS на сайт.
Вариант 1: Через кастом-модуль
Для таких изяществ есть спец функция drupal_add_js(). Она, как несложно догадаться, добавляет JS файл на сайт. Все просто и банально, вот вам парочка примеров:
// Добавляет JS
drupal_add_js('js/script.js');
// Добавляет JS по урл
drupal_add_js('https://www.google.com/jsapi');
// Добавляет конкретный JS скрипт.
drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });');
// И даже! Можно передать в JS нужные данные.
// Этот код добавит значение в DOM drupal.settings.wtf текст tratata. Разумеется он будет доступен из Javascript.
drupal_add_js(array('wtf' => 'tratata'), 'setting');
Также полезной окажется следующая функция:
drupal_get_path('module', 'wtf');
Данная функция вернет путь до места нахождения модуля. Например, если вы храните свой скрипт в модуле wtf, а там в папке js, то добавить скрипт можно двумя способами:
// Самый первый что придет в голову
// Но если переместить модуль, все слетит.
drupal_add_js('sites/all/modules/wtf/js/script.js');
// А вот более «железное» решение
drupal_add_js(drupal_get_path('module', 'wtf') . '/js/script.js');
Вариант 2: Через тему сайта
Также можно подключать JS при помощи своей темы оформления. Напишу на примере zen-subtheme.
Создаем в папке темы новую папку и назовем js, а в неё кладем наш script.js. Затем нам достаточно открыть .info файл темы и добавить в соответствующий раздел, если нету то добавьте где сами считаете нужным, следующий код:
scripts[] = js/script.js
Вариант 3: В файле темизации
Допустим вы хотите чтобы файл подключился на определенной ноде и вы создали для неё шаблон node—NID.tpl.php. В этом случае проще всего подцепить JS непосредственно в этом файле, просто вверху напишите то что мы рассмотрели в варианте 1.
Тут будет полезна еще одна функция для опредления путей: path_to_theme() - она
возвращает путь до текущей темы, как в случае с модулем.
Допустим хотим добавить файл из варианта 2 но через php:
drupal_add_js(path_to_theme() . 'js/script.js');
Просто, не так ли? А главное правильно и надежно. При этом можно просто передавать параметры в из PHP в JS, что увеличивает гибкость.
P.s.
Вы можете посмотреть как, например, я сделал в своем небольшом модуле, который сделан весь на JS, но обернут в модуль Drupal'a.
UPD. 21.09.2013
Данный метод акутален для Drupal 7. В Drupal 8 будет другой подход, читаем комментарии.
Можно, но не очень хороший способ. Через drupal_add_js() можно контролировать "вес" js. Что позволит выстраивать их в нужном порядке.
В html.tpl.php не просто же так стоит переменная <?php print $scripts; ?>.
Тогда уж правильнее это реализовать в hook_page_alter() tamplate.php шаблона.