在Drupal站点的一个页面上插入javascript小部件

时间:2011-07-24 17:47:41

标签: javascript drupal widget

我有一个javascript小部件,可以插入一个普通的html页面,如下所示:

<html>
    <head>
        <script type='text/javascript' src="http://example.com/widget.js"></script>
    </head>
    <body>
        <script type='text/javascript'>
            //<![CDATA[            
            try{ widget_constructor('key',500,400); }
            catch(e){ alert(e.message); }
            //]]>
        </script>
    </body>
</html>

我想在Drupal 6网站的一个页面上插入这个javascript(不是每个页面)。

到目前为止,我已经尝试过在HEAD中获取脚本标记:

  • 我设置了完整的HTML输入格式以允许php。
  • 对于Drupal页面,我将输入格式设置为Full HTML

然后我将其添加到Drupal页面的正文顶部:

<?php 
  drupal_set_html_head('<script type="text/javascript" src="http://example.com/widget.js"> </script>'); 
?>

但是Drupal没有解析php,而是将其打印在页面顶部:

<?php drupal_set_html_head(''); ?> 

关于我如何做到这一点的任何建议?

3 个答案:

答案 0 :(得分:3)

@Jeff:你不应该重新考虑这一点。使用PHP过滤器通常是一个坏主意,因为它可能会打开安全漏洞。 (如果有人可以访问您的用户帐户,或者您的设置中存在配置错误,这是危及整个服务器的直接途径)

我宁愿建议通过你主题的template.php添加js。另外正确的方法是drupal_add_js,内联选项: http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6

以下是有关如何使用它的更多内容:

http://drupal.org/node/304178#comment-1000798 http://drupal.org/node/482542

答案 1 :(得分:2)

我对Drupal不太熟悉,所以这个答案只是绕过你的小部件而不加载而没有实际回答为什么PHP块没有被解析为PHP的问题。

您无需在<script>内拨打<head>标记。您可以将该行放在调用窗口小部件构造函数的<script>标记的正上方。

<html>
    <head>

    </head>
    <body>
        <script type='text/javascript' src="http://example.com/widget.js"></script>
        <script type='text/javascript'>
            //<![CDATA[            
            try{ widget_constructor('key',500,400); }
            catch(e){ alert(e.message); }
            //]]>
        </script>
    </body>
</html>

答案 2 :(得分:0)

写完全部后,我想出了问题......

完整的html输入格式默认启用了HTML修正过滤器,该过滤器似乎导致PHP代码出现问题。重新排序过滤器以使PHP评估程序首先解决问题。