30 июля 2013

Как подключить JavaScript в Drupal

Вариант 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, что увеличивает гибкость.

Комментариев нет:

Отправить комментарий