解析joomla k2额外字段数据

时间:2011-03-19 07:08:16

标签: php joomla-k2

我正在使用joomla k2组件,我正在构建基于它的另一个组件。 这里我在访问(解析)k2额外字段时遇到问题。将不胜感激。

数据库中的k2额外字段内容是这样的,

[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]

我搜索了k2网站和其他人并给出了答案,

$this->item->extra_fields[0]->value; //needs to return 500

我尝试过不同的方式,但它无法正常工作。

4 个答案:

答案 0 :(得分:3)

您可以使用json_decode()函数将其从JSON字符串格式解码为PHP对象。

示例:

$JSON = '[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]';

$obj = json_decode($JSON); 

echo $obj[0]->value;

答案 1 :(得分:2)

根据您所处的位置,您使用额外字段的方式可能会发生变化。

在项目视图中 - $this->item->extra_fields[id]->value;

在K2内容模块中 - $item->extra_fields[id]->value;

在这两种情况下,您都将id替换为您尝试使用的额外字段的相应数量。编号从0开始。这些被视为典型的PHP变量。您可能希望发布一些代码,以便我们可以看到您要执行的操作。

答案 2 :(得分:2)

如果你的extra_fields值作为一个字符串(未解析)返回而不是一个对象数组,那么它可能是由于配置而产生的,因为extra_fields会根据它进行解析(或不解析)。

//Extra fields
if (($view == 'item' && $item->params->get('itemExtraFields'))
   || ($view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemExtraFields'))
   || ($view == 'itemlist' && $task == 'tag' && $item->params->get('tagItemExtraFields')) 
   || ($view == 'itemlist' && ($task == 'search' || $task == 'date') && $item->params->get('genericItemExtraFields')))
{
    $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields);
}

在类别列表中显示项目时,您可以通过编辑类别并在类别列表中项目视图选项下启用extra_fields(catItemExtraFields)点击显示用于额外字段项目。

在项目视图中,您可以通过修改类别启用extra_fields(itemExtraFields),然后在项目视图选项下单击显示以获取额外字段项目。

这应该在类别项列表和项目视图中启用extra_fields解析。

答案 3 :(得分:2)

试试这个,

$str='[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]';
$vals=json_decode($str);
print_r($vals);

如果要打印500,

echo $vals[0]->value; //prints 500

或想要循环播放,

foreach($val as $v){
  echo $v->value;
}