在页脚和自定义样式中添加JavaScript文件


9

为了快速加载页面,我需要在组件和模块的页面末尾插入JS。

以下声明脚本的方法无法将其插入底部,因为没有参数可将其放在页脚中。

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

那么实现我的目标的简洁方法是什么?如果joomla不提供这样的功能,那么这将是页面加载速度的重大缺陷。

我还想从模块中添加自定义样式表,以便即使同一模块在该页面中多次添加页面,它们也只会注入到页面一次-

<style type="text/css"> .classname { color:red; }.....</style>

我该如何实现?


1
您应该将问题局限于一个主题。您在这里有两个问题。
2014年

1
有一个扩展可能会有所帮助:extensions.joomla.org/extension/scriptsdown
noiragneau 2015年

Answers:


6

JDocument-> addScript()具有延迟脚本加载和/或异步加载的选项。请参阅API文档:http : //api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

这将允许浏览器在此过程的稍后阶段加载脚本,这将有助于页面加载时间。

页面底部没有API可以加载脚本。如果需要,您必须使用第三方扩展或直接将其添加到模板中。


是的,我知道这一点。但是wordpress在脚本和自定义css的情况下都具有与我的问题有关的这类功能,因此Joomla应该添加它。
dev-m

进行了讨论以添加类似内容。就个人而言,我看不出将其添加到底部比延迟/异步的优势。
巴库

2

到目前为止,我认为页面底部没有加载脚本的选项。

对于第二个问题,您可以使用静态布尔值属性,并在首次呈现CSS时将其设置为true。对于以下模块实例,只需测试此属性即可确定是否需要添加CSS。

添加此静态属性的一个好地方是模块帮助程序类。

问候,


2

$ document-> addScript()总是在标头部分的头部分添加脚本。因此,如果您想在页面底部加载脚本文件,则只需使用以下命令即可将js包含在该文件中<script src="{pathtojacvascriptfile}"></script>

我希望这会有所帮助


2

现在没有方法可以将脚本添加到页脚中。但是,您可以制作一个插件来获取输出,搜索适当命名的标签(如页脚),并使用str_replace添加代码。

但是您可以使用这些扩展来实现:

  1. 脚本下载
  2. JCH优化

我也找到了一种方法。我不希望破解核心代码,但这是我目前能想到的最好的方法。

请检查此链接- 页脚中包含Javascript文件

我希望它可以帮助其他人:)


2

我们使用称为“空白模块”的模块,该模块允许放置任何脚本(PHP,Java,CSS,HTML等)并选择将其加载到的位置(头,主体,主体末端等)。

它是免费的,我发现它完全有用:http : //extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

要将脚本从移到正文下方,还需要做更多的工作。用这个:

包括在模板中:

<?php
$ head = $ doc-> getHeadData();
//删除脚本
unset($ doc-> _ scripts [JURI :: root(true)。'/media/system/js/mootools-more.js']);
?>

为您需要从头删除的每个脚本添加一个“未设置”行。然后将其添加到底部的空白模块加载中(调试位置?)。另外,如果制作不同的空白模块,则只能在需要的地方加载脚本(例如,仅用于motools的模块实例,仅在特定页面上加载它)。

对于样式,还可以使用“空白模块”。

我希望这有帮助。


0

我还没有自己尝试过。您可以构建一个不显示HTML的模块,仅打印脚本和样式,但是将其显示在其他模块所在页面的底部模块位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.