我有一个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脚本时无法显示插件内容。
答案 0 :(得分:1)
这可能不是你想要的,但我和另一个名为FlashChart Plugin的Joomla插件有同样的问题。
插件调用如下所示:
{flashchart data =“10,20,15,30 | 40,50,12,14”} Samplechart {/ flashchart}
所以我认为我可以使用PHP插件运行PHP脚本,计算数据并回显出上面的字符串。错误!大括号是由Joomla预处理的,当你运行PHP时,你绕过了预处理器。
我的解决方案是使用插件用于创建我想要的图表的相同代码。我基本上绕过了插件预处理器,并做了插件本应做的事情....这就是输出必要的代码来创建一个插件的flash图表。
我很幸运,因为FlashChart插件非常面向对象,创建图表并输出swfobject代码很容易。
简而言之,您可能需要查看插件代码,看看它在做什么,并在PHP代码中执行相同的操作。
祝你好运。答案 1 :(得分:0)
根据您的评论,我认为您的问题实际上是“如何在不使用Joomla模板HTML的情况下获得AJAX响应”。
在这种情况下,您可能需要阅读:
1.5
适用于1.6 +
答案 2 :(得分:0)
只需在您的网址末尾添加ajax调用:& format = raw
只有在没有其他内容的情况下才能加载内容!
答案 3 :(得分:0)
应以某种方式触发插件事件。通常在路由和调度应用程序期间触发它们。您可以使用以下代码手动触发任何插件方法:
include('../blog/wp-load.php'); // Blog path
// Get the last 4 posts
$recent_posts = wp_get_recent_posts(array(
'numberposts' => 4,
'category' => 0,
'orderby' => 'post_date',
'post_type' => 'post',
'post_status' => 'publish'
));
// Display them as list
echo '<ul>';
foreach($recent_posts as $post) {
echo '<li><a href="', get_permalink($post['ID']), '">', $post['post_title'], '</a></li>';
}
echo '</ul>'`
更多信息:https://docs.joomla.org/Supporting_plugins_in_your_component