最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Add JS file on a certain page on Drupal - Stack Overflow

programmeradmin5浏览0评论

I've got a JS file that I want to add to Admin>Add Content>Certain Content type
After looking at template.php and checking out the function theme_preprocess_node
I tried to add the JS through drupal_add_js(...) but no go.
Now, I know that there's a similar question however my case is about adding
a JS file to a certain page and nothing else (better seperation of JS files).

Thanks.
(Drupal 6)

I've got a JS file that I want to add to Admin>Add Content>Certain Content type
After looking at template.php and checking out the function theme_preprocess_node
I tried to add the JS through drupal_add_js(...) but no go.
Now, I know that there's a similar question however my case is about adding
a JS file to a certain page and nothing else (better seperation of JS files).

Thanks.
(Drupal 6)

Share Improve this question asked Jun 18, 2010 at 0:21 AsafAsaf 8,21619 gold badges67 silver badges117 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 12

Check out drupal_add_js() in page template not working.

The gist of it is that calling drupal_add_js() (or drupal_add_css()) during preprocess functions is basically to late, as the markup for the js/css inclusion has already been rendered into a variable. To work around this, you need to overwrite the variable again by calling drupal_get_js() after your addition:

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();
  }
}

NOTE: Use preprocess_page, not preprocess_node for this, as javascript inclusion should happen in the page template. Also, Kevins hint on the need to rebuild the theme registry still applies (+1).

Inside your module could you just do a:

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');
    }
}

Something like that?

After adding the drupal_add_js, did you clear the theme/site cache? That should work.

发布评论

评论列表(0)

  1. 暂无评论