[英]How to use Joomla plugin inside PHP script outside Joomla Framework
我有一个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脚本时都无法显示插件内容。
这可能不是您要找的东西,但是另一个名为FlashChart Plugin的Joomla插件也有同样的问题。
插件调用如下所示:
{flashchart data =“ 10,20,15,30 | 40,50,12,14”} Samplechart {/ flashchart}
所以我想我可以使用PHP插件运行PHP脚本,计算数据,然后回显上述字符串。 错误! 大括号是Joomla预处理的,运行PHP时会绕过预处理器。
我的解决方案是使用与用于创建所需图表的插件相同的代码。 我基本上绕过了插件预处理器,做了与插件一样的事情。
不过我很幸运,因为FlashChart插件非常面向对象,创建图表和输出swfobject代码很容易。
简而言之,您可能必须查看插件代码,查看其作用,然后在PHP代码中执行相同的操作。
祝好运。
插件事件应该以某种方式触发。 通常,它们是在应用程序的路由和分派期间触发的。 您可以使用以下代码手动触发任何插件方法:
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
根据您的评论,我认为您的问题确实是“如何在不包含Joomla模板HTML的情况下获得AJAX响应”。
在这种情况下,您可能需要阅读:
对于1.5
对于1.6+
只需在ajax调用中的URL末尾添加: &format = raw
内容将仅加载,其余部分将不加载!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.