【问题标题】:Get current article id Joomla! 2.5获取当前文章 id Joomla! 2.5
【发布时间】: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


【解决方案1】:

调试 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 有一些很好的文档和代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2014-04-13
    • 2013-12-11
    • 2011-08-28
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多