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).