是否有一种简单的方法可以将jQuery插件实现为Drupal内容节点的一部分?

时间:2011-01-07 20:15:19

标签: jquery drupal jquery-plugins ckeditor wysiwyg

我有一个我创作的jQuery插件,我只希望它在我的Drupal 6网站的一个节点上。我有FTP和Linux shell我可以用来上传文件到网站,但问题实际上是将它们附加到节点。将JavaScript放在节点的Body中可能会非常难看,特别是当Body在WYSIWYG编辑器中出现时(haywire缩进,WYSIWYG尝试用< p>标记包装所有< script>标记等)

是否有任何类型的Drupal插件或任何类型的解决方法可以使这种集成更容易?

编辑:

我尝试了Code Per Node,这非常适合将JavaScript与Body分开,但我真的需要选择链接到单独的JavaScript文件(此插件需要多个支持文件)。

3 个答案:

答案 0 :(得分:2)

我在项目中执行此操作的方法是将CCK文本字段添加到名为“Additional Resources”的内容类型中,该类型接受多个值。然后在节点中我在这个字段中添加了多个值 - 我希望在该节点上加载的CSS和JS文件的路径。然后,在我的主题中,我在themename_node_process_fields中添加了我自己的名为template.php的函数。该功能是node-content_type_name.tpl.php中执行的第一件事。除此之外,它做到了这一点:

  // Loop through the additional resources and add them to the <head>.
  if (isset($node->field_additional_resources) && count($node->field_additional_resources) > 0) {
    foreach ($node->field_additional_resources as $resource) {
      if (strpos($resource['safe'], '.css') !== FALSE)
        drupal_add_css($resource['safe'], 'theme', 'all', FALSE);
      else if (strpos($resource['safe'], '.js') !== FALSE)
        drupal_add_js($resource['safe'], 'theme', 'header', FALSE, TRUE, FALSE);
    }
  }

请注意,我没有考虑过是否存在任何安全注意事项。我是唯一可以访问该字段的人,但如果恶意用户能够输入任意文本,我不确定可以做什么。

答案 1 :(得分:1)

如果您不是在寻找管理工具,可以使用drupal_add_js功能。它将在渲染时将JavaScript文件插入页面。但是,这需要激活PHP input filter

...content...
<?php
  drupal_add_js('external_file.js', 'external');
?>
...more content...

从链接:

  

<强>外部   添加外部JavaScript('外部'):允许包含未托管在本地服务器上的外部JavaScript文件。请注意,启用预处理时,不会聚合这些外部JavaScript引用。

答案 2 :(得分:0)

最好的方法是制作使用插件的自己的模块。这就是“Drupal”的方式。您还可以使用drupal_add_js将脚本附加到模块。如果它只是一个特定的节点你需要附加这个插件我会在模板中创建一个if语句来寻找那个节点,但有点难以做到这一点。