Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取当前文章id Joomla!2.5_Php_Joomla2.5_Joomla Extensions_Joomla3.0 - Fatal编程技术网

Php 获取当前文章id Joomla!2.5

Php 获取当前文章id Joomla!2.5,php,joomla2.5,joomla-extensions,joomla3.0,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.'

我正试图从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(已弃用),因此:

如前所述,我正在尝试检索文章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...
我错过了什么? 我的错在哪里


谢谢大家

调试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中也能很好地工作。在

上有一些很好的文档和代码,您是否尝试过通过
$jInput->get->get(“id”)
从超级全局获取这些文档和代码?你好,兰斯。是的,我试过了,但不起作用。我还尝试了$jInput->get->get('id',null,null)。没有什么。感谢您的回复。您尝试获取当前文章id是什么意思。如果显示文章,您已经使用了框架,所以您也可以使用常用的框架功能。所以像这样的代码:
JRequest::getInt('id')
(它已被弃用,但仍然有效)应该返回当前的文章id。与
$\u REQUEST['id']
相同。那篇文章是怎么展示的?你好,亚瑟。您看到的(原始问题)是外部AJAX文件(AJAX_request.php)的一部分。JRequest::getInt('id')和$_REQUEST['id']在这个ajax文件中不起作用(由一个函数调用:jQuery(document).ready(函数($){$('#divid')).load('/plug/ajax_REQUEST.php');)在ajax请求中,还需要传递文章id。jQuery代码可能有权访问joomla文章ID。如果启用了SEF,则可能无法从URL获取ID。您可能需要使用php编写一些javascript来定义具有文章ID的变量。
# 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);