【问题标题】:Get K2 extra fields data in external script在外部脚本中获取 K2 额外字段数据
【发布时间】:2013-02-23 11:22:36
【问题描述】:

我正在尝试从外部 php 脚本中的 k2_items 表中的 extra_fields 字段加载数据(我们称之为locations.php),我想将其包含在网站的其他地方。

extra_field 字段中的数据是 json 编码的:

[{"id":"1","value":"somevalue"},{"id":"2","value":"somevalue"},{"id":"3","value":"somevalue"}.]

例如:我有 ID 为 1、6、10、15、22、44 和 66 的项目。 我想为每个额外的字段和每个项目设置变量,以便我可以在其他地方使用它们。 如果 id 为 1 的项目有 3 个额外字段,我想要变量 $item1ExtraField1、$item1ExtraField2 和 $item1ExtraField3。

所以我首先启动了 Joomla 框架:

// Get Joomla Framework
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' );
require_once (JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'factory.php' );

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

然后我尝试使用 2 个 id 进行 DB 查询,看看是否可以获取数据:

// Load the data from the database.
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select('extra_fields')
->from('#__k2_items')
->where('id = 15 or id= 289');
$db->setQuery($query);
$items = $db->loadObjectList();

// Check for a database error.
if ($db->getErrorNum())
{
    $this->_subject->setError($db->getErrorMsg());
    return false;
}

然后我慢慢迷路了。 如果我尝试,我不会得到任何结果:

foreach ($items as $item) {
    echo json_decode($item);
}

var_dump 给了我

array(2) { [0]=> object(stdClass)#1395 (1) { ["extra_fields"]=> string(1013) "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]

或使用 jdump 扩展:

[array] (unknown name) 
    [stdClass object] 0
    Properties
        [string] extra_fields = "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]"
[stdClass object] 1
    Properties
        [string] extra_fields = "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]"

所以 Joomla 框架初始化似乎没问题,数据库连接在那里,但我不确定如何继续。

任何帮助将不胜感激。

【问题讨论】:

  • foreach ($item as $item) { echo $item->id;
    echo $item->value; }

标签: joomla joomla-k2


【解决方案1】:

我发现问题在于解码 json 字符串。试试这样的:

$query = mysql_query($sql,$con);
while ($item = mysql_fetch_array($query))
{
$fields =(array)json_decode($item['extra_fields']);
$field1 = $fields[0]->value;
$field2 = $fields[1]->value;
}

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 2014-11-01
    • 2013-06-18
    • 2013-06-24
    • 2013-03-28
    • 2012-12-27
    • 2013-01-23
    • 2014-03-05
    • 2015-02-15
    相关资源
    最近更新 更多