Как использовать плагин Joomla внутри PHP-скрипта вне Joomla Framework - PullRequest
2 голосов
/ 30 января 2012

У меня есть PHP-скрипт, который выполняется путем прямого доступа к нему (это для вывода AJAX).

Я инициализирую переменные Joomla Framework внутри этого скрипта следующим образом:

if ($JEXEC_defined==TRUE) {
    defined('_JEXEC') OR defined('_VALID_MOS') OR die( 'Restricted access' ); //security reason
    $direct_script_access=FALSE;
}

if ($JEXEC_defined==FALSE) {
    define( '_JEXEC', 1 );
    define( 'DS', DIRECTORY_SEPARATOR );
    define('JPATH_BASE', dirname(__FILE__) );
    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    $direct_script_access=TRUE;

    // initialize the application 
    $mainframe =& JFactory::getApplication('site');
    $mainframe->initialise();
}


if ($user->username!="") if ($direct_script_access==TRUE) {
    //PHP code when script is accessed directly
}

В качестве выходных данных сценария при прямом доступе мне нужно отобразить плагин Joomla, например:

{valsimplecalendar SRQCMPDT1 }

Но вместо отображения содержимого плагина я получаю плоский текст "{valsimplecalendar SRQCMPDT1}".

Мой вопрос: как инициализировать систему плагинов при прямом вызове PHP?

Редактировать

Я искал в Интернете и обнаружил, что мне нужно импортировать плагины Joomla:

JPluginHelper::importPlugin('content');
$dispatcher = &JDispatcher::getInstance();
$dispatcher->trigger('onBeforeDisplayContent', array ( & $category, &$params, $limitstart));

Но в любом случае это не позволяет отображать содержимое плагина при прямом вызове скрипта PHP.

Ответы [ 4 ]

1 голос
/ 11 июля 2013

Возможно, это не то, что вы ищете, но у меня была такая же проблема с другим плагином Joomla под названием FlashChart Plugin.

Вызов плагина выглядит следующим образом:

{flashchart data = "10,20,15,30 | 40,50,12,14"} Samplechart {/ flashchart}

Поэтому я подумал, что мог бы запустить скрипт PHP с помощью плагина PHP, вычислить данные и просто повторить приведенную выше строку.Неправильно!Эта фигурная скобка предварительно обработана Joomla, и когда вы запускаете PHP, вы обходите препроцессор.

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

Мне повезло, потому что плагин FlashChartОн очень объектно-ориентирован, и создание диаграмм и вывод кода swfobject было простым.

Короче говоря, вам, возможно, придется заглянуть в код плагина, посмотреть, что он делает, и сделать то же самое в коде PHP.

Удачи.

0 голосов
/ 27 января 2016

События плагинов должны запускаться как-то.Обычно они запускаются во время маршрутизации и отправки приложения.Вы можете активировать любые методы плагина вручную, используя этот код:

JPluginHelper::importPlugin('system'); // Load your plug-in group
$dispatcher = JDispatcher::getInstance(); // USe JEventDispatcher for 3.x
$results = $dispatcher->trigger('onAfterInitialise'); // Trigger your custom event

Дополнительная информация: https://docs.joomla.org/Supporting_plugins_in_your_component

0 голосов
/ 03 февраля 2012

Просто добавьте в конце вашего URL в вашем вызове ajax: & format = raw

Контент будет загружаться только без остатка!

0 голосов
/ 31 января 2012

Исходя из вашего комментария, я думаю, что ваш вопрос действительно "Как получить ответ AJAX без окружения шаблона Joomla HTML".

В этом случае вы можете прочитать:

Для 1,5

Для 1,6 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...