获取当前文章ID Joomla! 2.5

时间:2013-08-13 13:19:10

标签: php joomla2.5 joomla-extensions joomla3.0

我正在尝试从Joomla的外部脚本中检索“当前”文章ID! 2.5 首先,我包含了Joomla核心文件:

define( '_JEXEC', 1 );
defined('_JEXEC') or die('Restricted access');
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' ));
define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

然后,初始化会话:

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

现在,我知道对于Joomla 2.5,我必须使用Jinput而不是JRequest(不推荐使用),所以:

$jAp = JFactory::getApplication();
$jInput = $jAp->input;

正如已经说过的,我正在尝试检索文章ID。 我尝试过很多例子,但似乎没什么用。

$id = $jInput->get('id', 0); // doesn't work
$idInt = $jInput->getInt('id',0); //doesn't work

同样使用JRequest ...我无法获得当前的文章ID。

仅当我要为登录用户请求数据时才有效,例如:

$user = JFactory::getUser();
echo $user->username; // this works...

我缺少什么? 我的错在哪里?

非常感谢所有人!

1 个答案:

答案 0 :(得分:0)

调试AJAX可能很复杂。我经常发现在我的处理程序中添加一些日志记录有很大的帮助,例如在代码的开头添加以下内容......

# logging of all hits
$log_file = realpath(dirname(__FILE__)) . '/ajax_debug.log';
$fh = fopen($log_file, 'a') or die();
$log_string = "Backend Hit \n" . date("Y-m-d H:i:s") . "\n";
$log_string .= "POST: " . print_r($_POST, true) . "\n";
$log_string .= "GET: " . print_r($_GET, true) . "\n";
$log_string .= "Hit by: " . $_SERVER['REMOTE_ADDR'] . "\n";
$log_string .= "\n\n\n";
fwrite($fh, $log_string);
fclose($fh);  

您没有提到您的AJAX代码的实现方式/位置。听起来它可能是Joomla的一个实现。虽然模块或组件AJAX处理程序在Joomla中运行良好,但我倾向于将它放在一个插件中。 https://docs.joomla.org/Using_Joomla_Ajax_Interface

有一些很好的文档和代码