Add JS file on a certain page on Drupal
I've got a JS file that I want to add to Admin>Add Conten开发者_运维知识库t>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)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.
精彩评论