2012-01-30 2 views
2

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

Я инициализацией 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? Спасибо.

EDIT: Я гугл и нашел, что мне нужно импортировать Joomla плагин:

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

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

Поблагодарили бы за любые предложения! Благодаря!

+0

Почему вы используете его в качестве внешнего (для Joomla) скрипт? – Craig

+0

это для ответа ajax, если не работает как внешний скрипт - у меня будет шаблонный мусор внутри ajax-ответа. – ihtus

+1

Вы создаете пользовательский компонент? Я не уверен, какая версия Joomla вы используете, но у 1.6+ есть несколько способов поддержки ajax, включая использование контроллера для форматов «raw» или «json», которые вообще не используют шаблон. – Craig

ответ

1

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

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

{flashchart данных = "10,20,15,30 | 40,50,12,14"} Samplechart {/ flashchart}

Так я думал, может запускать PHP-скрипт с использованием плагина PHP, вычислять данные и просто выводить из строя вышеприведенную строку. Неправильно! Объектив фигурного скобки предварительно обрабатывается Joomla, и когда вы запускаете PHP, вы обходите препроцессор.

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

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

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

Удачи.

+0

, поэтому вы НЕ используете плагиновую систему joomla, но вместо этого вы использовали отдельный php-код, который имеет тот же результат, что и требуемый плагин. Я прав? – ihtus

+0

Да, вы правы. Я использую модуль Flexi Custom Code для встраивания своего PHP. Затем в PHP я получаю доступ к кишкам кода плагина FlashChart, чтобы создать ту же строку кода javascript и swfobject (Flash), который создал плагин. – PaulG

+0

yep .. Я придумал один и тот же обходной путь, я отказался от плагина joomla и получил тот же эффект с чистым php (плагин non joomla, который имеет тот же результат, что и плагин joomla) – ihtus

0

Основываясь на вашем комментарии, я думаю, что ваш вопрос действительно «Как получить ответ AJAX без окружающего HTML-шаблона Joomla».

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

Для 1,5

Для 1.6+

+0

Спасибо. Но проблема с получением ясного ответа ajax теперь не в моем вопросе, она уже решена с использованием приведенного выше кода. Мой вопрос заключается в том, как включить плагины joomla во внешний php-скрипт. – ihtus

0

Просто добавьте в конце вашего URL в вашем АЯКСЕ вызова: & формата = сырец

Содержимое будет загружено только без остатка!

0

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

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

Смежные вопросы