Joomla 插件将 Javascript 片段注入所有页面
Joomla Plugin inject Javascript snippet into all pages
我正在尝试编写一个 Joomla 插件,将一小段 javascript 代码注入所有页面以分发给其他人。但是我读过的所有内容都说我应该使用 $doc = JFactory::getDocument();
来完成它,但我无法让它工作。
这是我正在尝试使用的代码,Joomla 说它一切正常,但是一旦激活,如果我转到我网站的主页,我的 javascript 片段不会添加到源代码中页面的。
当前代码:
bwai.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="plugin" group="system" method="upgrade">
<name>Beacon Web Analytics Intergration for Joomla</name>
<creationDate>June 2018</creationDate>
<author>Beaconsoft Limited</author>
<authorEmail>contact@thisisbeaon.com</authorEmail>
<authorUrl>https://www.thisisbeacon.com</authorUrl>
<copyright>Beaconsoft Limited 2018</copyright>
<license>BSD new</license>
<version>1.0.0</version>
<description>This plugin enables the Beacon Web Analytics Intelligence to run on your site, this information will not be saved unless you have an account for Beacon.</description>
<files folder="site">
<filename plugin="bwai">index.php</filename>
<filename>index.html</filename>
</files>
<administration>
</administration>
</extension>
index.php
<?php
defined('_JEXEC') or die('No direct access');
die("hello");
jimport('joomla.plugin.plugin');
class plgSystemCustomhead extends JPlugin{
function onBeforeCompileHead() {
die("hello hello");
/*if (JFactory::getApplication()->isAdmin()){
return true;
}*/
$doc = JFactory::getDocument();
$doc->addScriptDeclaration('
(function(a, d, w){
var h= d.getElementsByTagName(a[0])[0]; var s= d.createElement(a[1]);
s.setAttribute("type", a[2]); s.setAttribute("src", a[3]); s.setAttribute(a[4], true); s.setAttribute(a[5], a[6]); h.appendChild(s);
})(["head", "script", "text/javascript", "//tracker.thisisbeacon.com/tracker/", "async", "rel", "preload"], document, window);
', 'text/javascript');
}
}
?>
我只想拥有一个人们可以安装的小插件,将我们的跟踪 javascript 片段代码添加到 Joomla 网站前端的所有页面。
将 exit('hello hello');
添加到函数的顶部 我还尝试将 die("hello");
添加到文件的顶部,在它不执行的已定义或死语句下,但随后 Joomla 将扩展名报告为活跃的,正如你在上面看到的
将您的 index.php 重命名为 bwai.php,并在 xml 中写入
<filename plugin="bwai">bwai.php</filename>
那么你的 class 名称应该与插件名称匹配,并且是 PlgSystemBwai
我正在尝试编写一个 Joomla 插件,将一小段 javascript 代码注入所有页面以分发给其他人。但是我读过的所有内容都说我应该使用 $doc = JFactory::getDocument();
来完成它,但我无法让它工作。
这是我正在尝试使用的代码,Joomla 说它一切正常,但是一旦激活,如果我转到我网站的主页,我的 javascript 片段不会添加到源代码中页面的。
当前代码:
bwai.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="plugin" group="system" method="upgrade">
<name>Beacon Web Analytics Intergration for Joomla</name>
<creationDate>June 2018</creationDate>
<author>Beaconsoft Limited</author>
<authorEmail>contact@thisisbeaon.com</authorEmail>
<authorUrl>https://www.thisisbeacon.com</authorUrl>
<copyright>Beaconsoft Limited 2018</copyright>
<license>BSD new</license>
<version>1.0.0</version>
<description>This plugin enables the Beacon Web Analytics Intelligence to run on your site, this information will not be saved unless you have an account for Beacon.</description>
<files folder="site">
<filename plugin="bwai">index.php</filename>
<filename>index.html</filename>
</files>
<administration>
</administration>
</extension>
index.php
<?php
defined('_JEXEC') or die('No direct access');
die("hello");
jimport('joomla.plugin.plugin');
class plgSystemCustomhead extends JPlugin{
function onBeforeCompileHead() {
die("hello hello");
/*if (JFactory::getApplication()->isAdmin()){
return true;
}*/
$doc = JFactory::getDocument();
$doc->addScriptDeclaration('
(function(a, d, w){
var h= d.getElementsByTagName(a[0])[0]; var s= d.createElement(a[1]);
s.setAttribute("type", a[2]); s.setAttribute("src", a[3]); s.setAttribute(a[4], true); s.setAttribute(a[5], a[6]); h.appendChild(s);
})(["head", "script", "text/javascript", "//tracker.thisisbeacon.com/tracker/", "async", "rel", "preload"], document, window);
', 'text/javascript');
}
}
?>
我只想拥有一个人们可以安装的小插件,将我们的跟踪 javascript 片段代码添加到 Joomla 网站前端的所有页面。
将 exit('hello hello');
添加到函数的顶部 我还尝试将 die("hello");
添加到文件的顶部,在它不执行的已定义或死语句下,但随后 Joomla 将扩展名报告为活跃的,正如你在上面看到的
将您的 index.php 重命名为 bwai.php,并在 xml 中写入
<filename plugin="bwai">bwai.php</filename>
那么你的 class 名称应该与插件名称匹配,并且是 PlgSystemBwai