【发布时间】:2013-08-15 03:16:57
【问题描述】:
我正在尝试从 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...
我错过了什么? 我的错在哪里?
非常感谢大家!
【问题讨论】:
-
你试过通过
$jInput->get->get("id")从超级全局获取吗? -
你好兰斯。是的,我试过了,但它不起作用。我也尝试通过 $jInput->get->get('id',null,null)。没有。感谢您的回复。
-
你的意思是你试图获取当前的文章ID。如果显示文章,您已经使用框架,因此您也可以使用通常的框架功能。所以像这样的代码:
JRequest::getInt('id')(它已被弃用但仍然有效)应该返回当前的文章 ID。与$_REQUEST['id']相同。那篇文章是如何显示的? -
你好亚瑟。您看到的(原始问题)是外部 AJAX 文件(ajax_request.php)的一部分。 JRequest::getInt('id') 和 $_REQUEST['id'] 在这个 ajax 文件中不起作用(由函数调用:jQuery(document).ready(function($){ $('#divid') .load('/plug/ajax_request.php'); }); )
-
在您的 ajax 请求中,您还需要传递文章 ID。您的 jQuery 代码可能有权访问 joomla 文章 ID。如果您启用了 SEF,您可能无法从 URL 中获取 ID。您可能必须使用 php 编写一些 javascript 来定义具有文章 ID 的变量。
标签: php joomla2.5 joomla-extensions joomla3.0