Asa*_*saf 3 javascript drupal drupal-6
我有一个JS文件,我想添加到管理>添加内容>某些内容类型
在查看template.php并检查函数theme_preprocess_node后,
我试图通过drupal_add_js(...)添加JS,但没有去.
现在,我知道有一个类似的问题,但我的情况是将
JS文件添加到某个页面而不是其他任何东西(更好地分离JS文件).
谢谢.
(Drupal 6)
Hen*_*pel 12
它的要点是在预处理函数期间调用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();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:使用preprocess_page,而不是preprocess_node为此,因为javascript包含应该在页面模板中发生.此外,Kevins暗示重建主题注册表的需要仍然适用(+1).