【发布时间】:2012-02-22 07:39:06
【问题描述】:
我有一个 PHP 脚本,通过直接访问它来执行(这是用于 AJAX 输出)。
我正在以这种方式在该脚本中初始化 Joomla 框架变量:
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 Plugins:
JPluginHelper::importPlugin('content');
$dispatcher = &JDispatcher::getInstance();
$dispatcher->trigger('onBeforeDisplayContent', array ( & $category, &$params, $limitstart));
但无论如何,直接调用 PHP 脚本时不会显示插件内容。
【问题讨论】:
-
你为什么将它作为外部(Joomla)脚本运行?
-
它用于 ajax 响应,如果不作为外部脚本运行 - 我将在 ajax 响应中包含模板垃圾。
-
您是否正在创建自定义组件?我不确定您使用的是哪个版本的 Joomla,但 1.6+ 有多种支持 ajax 的方式,包括将控制器用于完全不使用模板的“原始”或“json”格式。
-
我正在使用 jumi 将自定义 php 脚本嵌入到 joomla 文章中。当我使用文章链接调用 ajax 到该脚本时 - 我得到 ajax 响应,其中包括不需要的模板,但不是干净的 ajax 文本或 html。所以我的问题是如何将 Joomla 插件包含到外部 php 脚本中。谢谢。