将JS / CSS附加到Drupal 6中的表单

时间:2011-11-09 22:55:47

标签: drupal drupal-6 drupal-theming

我熟悉使用#attached属性将JavaScript和CSS附加到Drupal 7中的特定表单和表单项的过程。

我遇到了一个可以解决的问题,但不幸的是我正在进行D6安装。

基本上,drupal_get_form()是从主题图层(在自定义模板文件中)调用的。它打印的表单有执行drupal_add_js()(和css)的form_alter挂钩,但由于在主题层中调用了drupal_get_form,因此这些JS文件添加得太晚,因此没有被包含。

这个问题的最佳Drupal 6解决方案是什么?

1 个答案:

答案 0 :(得分:2)

正如问题中所述,在drupal_get_form()drupal_add_js()调用的页面构建过程中调用drupal_add_js()为时已晚。在主题图层中调用drupal_get_form()通常不是问题,但在这种情况下,我假设在这种情况下,它在page-<something>.tpl.php中调用。在执行构建$scriptcss$styles变量的template_preprocess_page()后,发生了CSS和JS的添加。

一个简单的解决方案是从主题的页面模板预处理器中调用drupal_get_form(),然后重新构建$scriptcss$styles变量。

function THEME_preprocess_page(&$variables) {
  $form = drupal_get_form('the_form_name');
  $variables['my_form'] = $form;
  $variables['styles']            = drupal_get_css();
  $variables['css']               = drupal_add_css();
  $variables['scripts']           = drupal_get_js();
}

更好的解决方案是提前从较低级别的模板(例如drupal_get_form() ou node.tpl.php)调用user.tpl.php。但最好的方法是在页面,块等回调函数中检索主题图层之外的表单。