Невозможно добавить Javascript в плагин

Я пробовал последний час или около того, чтобы получить один javascript, добавленный в голову, через мой системный плагин, и я как бы вытягиваю свои волосы о том, почему он не появляется.

Вот что я уже делал в своем php-файле плагина:

    <?php
//no direct access
defined('_JEXEC') or die;

class PlgJoomlaKey extends JPlugin
{
    public function onAfterRender ()
    {
        //only going to run these in the backend for now
        if ($app->isSite()) {
            return;
        }
        $document = JFactory::getDocument();
        $document->addScript(JUri::root().'plugins/system/joomlakey/joomlakey.js' );
    }
}

Я, очевидно, что-то делаю неправильно, но я понятия не имею. Я пробовал столько разных функций, кроме onAfterRender, как я вижу, может работать, но ни один из них, похоже, ничего не изменит. Я каждый раз изменял путь к файлу, но это не похоже на проблему (кроме того, он должен добавить его, я бы хотя бы увидел (неправильный) путь к файлу в голове).

Я знаю, что плагин загружается, потому что я могу напечатать, скажем, break прямо над комментарием //only going to run ..., который затем разбивает мой сайт при перезагрузке - так что плагин выполняется, но по какой-то причине этот скрипт не помещается в голову, как это должно быть.

2 голоса | спросил Jon 10 AM00000060000000031 2015, 06:01:00

1 ответ


3

Как название события onAfterRender говорит:

  

Это событие запускается после того, как инфраструктура предоставила приложение.

Итак, приложение уже выполнено, вы больше не можете его редактировать. Вы можете использовать onBeforeRender , но поскольку вы добавляете JS в <head>, наиболее логичным было бы использовать onBeforeCompileHead .

  

Это событие запускается до того, как среда создает раздел главы документа.

И у вас, вероятно, есть сообщение об ошибке. Вы не определили $app.

Конечный код

public function onBeforeCompileHead()
{
    //only going to run these in the backend for now
    $app = JFactory::getApplication();
    if ($app->isSite()) {
        return;
    }

    $document = JFactory::getDocument();
    $document->addScript(JUri::root().'plugins/system/joomlakey/joomlakey.js' );
}
ответил Rene Korss 10 AM00000080000003931 2015, 08:57:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132