在Drupal上的某个页面上添加JS文件

时间:2010-06-18 00:21:56

标签: drupal drupal-6 javascript

我有一个JS文件要添加到Admin>添加内容>某些内容类型
看完template.php并查看函数theme_preprocess_node
我试图通过drupal_add_js(...)添加JS,但没有去。
现在,我知道有一个类似的问题,但我的情况是关于添加
一个JS文件到某个页面,没有别的(更好的分离JS文件)。

感谢。
(Drupal 6)

3 个答案:

答案 0 :(得分:12)

查看drupal_add_js() in page template not working

它的要点是在预处理函数期间调用drupal_add_js()(或drupal_add_css())基本上是迟到的,因为js / css包含的标记已经被渲染为变量。要解决此问题,您需要在添加后调用drupal_get_js()再次覆盖变量:

function yourThemeName_preprocess_page(&$variables) {
  // Is this a node addition page for the specific content type?
  // TODO: Adjust the content type to your needs
  // NOTE: Will only work for the node add form - if you want your js to be
  // included for edit forms as well, you need to enhance the check accordingly
  if ('node' == arg(0) && 'add' == arg(1) && 'yourContentType' == arg(2)) {
    // Add your js file as usual
    drupal_add_js('path/to/your/file.js', 'theme');
    // Ensure that the addition has any effect by repopulating the scripts variable
    $variables['scripts'] = drupal_get_js();
  }
}

注意:使用preprocess_page而不是preprocess_node,因为javascript包含应该在页面模板中发生。此外,Kevins暗示重建主题注册表的需要仍然适用(+1)。

答案 1 :(得分:3)

在你的模块中你可以做一个:

function your_module_name_init() {
    if(arg(0) == "some_name") {
        drupal_add_js(drupal_get_path('module', 'your_module_name') . '/your_js_file_name.js');
    }
}

那样的东西?

答案 2 :(得分:2)

添加drupal_add_js之后,你清除了主题/网站缓存吗?这应该有用。