在Drupal 6中为特定节点添加CSS或Javascript文件的最佳方法是什么?
我想在我的网站上创建一个有一点JavaScript应用程序运行的页面,所以CSS和javascript是特定于该页面的,不会被包含在其他页面加载中。
解决方法
我建议不要使用hook_nodeapi。添加CSS和Javascript与布局相关,所以hook_nodeapi不是它的地方:使用主题。这样,您可以在开发新主题时覆盖这些文件。使用nodeapi方法做到这一点会更困难(您必须搜索js / css列表中的文件,将其删除并替换为自己的)。
无论如何,您需要做的是添加一个节点预处理功能,为您添加这些文件。您可以在模块或自定义主题中执行此操作。对于一个模块,这将是:
function mymodule_preprocess_node(&$variables) { $node = $variables['node']; if (!empty($node) && $node->nid == $the_specific_node_id) { drupal_add_js(drupal_get_path('module','mymodule') . "/file.js","module"); drupal_add_css(drupal_get_path('module','mymodule') . "/file.css","module"); } }
或主题:
function mytheme_preprocess_node(&$variables) { $node = $variables['node']; if (!empty($node) && $node->nid == $the_specific_node_id) { drupal_add_js(path_to_theme() . "/file.js","theme"); drupal_add_css(path_to_theme(). "/file.css","theme"); } }
首先不要忘记清除缓存。
在节点为主题之前调用这些函数。指定js / css可以使用级联方法:您可以在模块中拥有通用/基本的内容,并在主题中提供增强或特定的功能。