В ходе работы над сайтами нередко приходится заниматься версткой форм, а также написанием JS-скриптов для форм. Естественно возникает потребность в подключении файлов стилей и скриптов для страниц с формами (включать стили и скрипты для форм, особенно если они довольно объемные, в общие CSS- и JS-файлы темы оформления сайта нецелесообразно, так как формы выводятся, как правило, только на определенных страницах сайта).
В Друпал 7 подключить стили CSS и скрипты JS к страницам с формой (форма может как в блоке, так и в основном содержимом страницы) можно с помощью хуков hook_form_alter() или hook_form_FORM_ID_alter() – для форм, созданных в других модулях, или непосредственно в функции-конструкторе формы. Здесь я приведу решение задачи с помощью имплементации хука hook_form_FORM_ID_alter():
* Implements hook_form_FORM_ID_alter().
*/
function MYMODULE_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
$form['#attached']['css'] = array(
drupal_get_path('module', 'MYMODULE') . '/MYMODULE.css',
);
$form['#attached']['js'] = array(
drupal_get_path('module', 'MYMODULE') . '/MYMODULE.js',
);
}
Вместо MYMODULE укажите название своего модуля, а вместо FORM_ID – значение параметра $form_id нужной формы (обычно его можно получить заменой дефисов на нижнее подчеркивание в значении атрибута id тега form, найдя этот атрибут в исходном коде страницы или через Firebug).