Плагин Joomla внедряет фрагмент Javascript во все страницы - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь написать плагин 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"); в начало файла под определенным оператором или оператором die, который не выполняется, но затем Joomla сообщает о расширении как о активном, как вы можете видеть выше Joomlad PluginsPlugin Settings page in Joomla

1 Ответ

0 голосов
/ 03 июля 2018

переименуйте ваш index.php в bwai.php, а в xml напишите

<filename plugin="bwai">bwai.php</filename>

тогда имя вашего класса должно совпадать с именем плагина и должно быть PlgSystemBwai

...