Итак, подключение JavaScript к Drupal 7 только на страницах определённого типа материала можно осуществить, выставив препроцесс на ноду. Просто пропишите в файле «template.php» (тот, что в папке вашей активной темы) нижеследующий код, к примеру:
<?php function ИмяТемы_preprocess_node(&$variables) { $my_node_type = $variables['node']->type; // получим тип ноды
if ($my_node_type == 'машинное_имя_типа_материала') { // В виде файла в папке темы drupal_add_js(drupal_get_path('theme', 'имя_темы') .'/js/jquery-1.4.3.min.js', 'file'); } ?>
Теперь добавим JavaScript только для ноды с идентификатором (ID) равным двойке (но не проще ли блоком в нужном регионе?):
<?php function ИмяТемы_preprocess_node(&$variables) { if (arg(1) == '2') { // В виде файла в папке темы drupal_add_js(drupal_get_path('theme', 'имя_темы') .'/js/jquery-1.4.3.min.js', 'file'); } ?>
Функция drupal_get_path(‘theme’, ‘имя_темы’) с такими параметрами вызова вернет путь до вашего «друпаловского» шаблона.
Помимо вышеописанного возможны ещё несколько параметров вызова drupal_add_js.
Второй вариант использования: я буду загружать с удаленного сервера, «внешний» скрипт:
<?php // с серверов Google drupal_add_js('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', 'file'); ?>
Третий вариант: код будет прямо на странице. Но я этот метод не использую, — не нравится мне, потому что путаница может получиться.
<?php drupal_add_js('jQuery(document).ready(function () { alert("Так не стоит делать!"); });', 'inline'); ?>
Четвертый вариант, с передачей параметров глобального хранения я ещё ни разу не применял — так, что не могу пока написать об этом ничего определённого кроме как цитаты с Drupal APi:
<?php drupal_add_js(array('мой_модуль' => array('ключ' => 'значение')), 'setting'); ?>
В конце этой статьи добавлю лишь 1 маленькое замечание. Более «глобально» (для всей темы сразу) подключить JavaScript к Drupal 6-7 можно, пользуясь правкой
Источник: sooource.net