的Joomla!从文章中添加文档头部的脚本

时间:2012-01-24 07:06:14

标签: php joomla joomla1.7

我们有几页需要特别小心,jquery-ui将从外部脚本调用,这些脚本将“以某种方式”添加到文章的head部分。

我尝试过jumi,但它不是最好的选择(包括一个js而不是php会在html体内呈现它),我可以添加一个javascript文件的唯一方法就是包含一个php文件会回应一下,但正如人们所想象的那样,这在性能方面并不优雅也没有效率。

另一种尝试是,我尝试使用:

,而不是回应脚本
<?php
  $document = &JFactory::getDocument();
  $document->addScript( "path/to/jsfile.js" );
?>

但它没有按照我的预期工作,似乎joomla在这个php脚本有可能被执行之前创建了head部分。

我也给了轻松的标题,但是,似乎它将包含所有文章中的文件,我不希望这样,因为它会对带宽和可能的javascript问题产生很大的影响。路。

我对joomla很新,所以提供一些灵活性的任何东西都可以作为答案。

如果有什么不清楚的地方,请问,我会尽力回答。

请注意我使用的是joomla 1.7和php5。

2 个答案:

答案 0 :(得分:4)

Jumi使用 onAfterRender 事件(查看2.0.6插件) - 此时我认为&lt; head&gt;标签已经被写出,实际上整个文档已经被渲染出来了。

您可以尝试获取文档正文,然后搜索结束标记&lt; / head&gt;并在它之前插入脚本链接。像这样:

$myJS    = "<script type='text/javascript' src='http://mysever.com/my.js'>"
$content = JResponse::getBody(); // gets the html in it's ready to send to browser form
$hdPos   = strpos($content, '</head>');
$hdPos  += 7;  //move position to include the <head> tag
$bodyLen = strlen($content);
$content = substr($content, 0, $hdPos) . $myJS . substr($content, $hdPos, $bodyLen);
JResponse::setBody($content);

NB: 这是未经测试的,我现在不使用Jumi,但它应该关闭。

答案 1 :(得分:1)

你没必要经历这一切! 转到:扩展程序 - &gt;模板管理器 - &gt;模板选项卡(默认情况下为“样式”) - &gt;转到您的模板,然后单击“编辑HTML”。您将能够直接在标题中添加代码,并将其加载到所有页面中。

更优雅的方法是定义一个在标题中执行您想要的功能 - 并从您想要的特定文章的正文中调用它。