我正在尝试访问BT内容滑块插件中的K2额外字段的内容。如果我做
print_r($row->extra_fields);
我得到了
[{"id":"16","value":"http:\/\/www.youblisher.com\/p\/611670-Test-Intro-to-R\/"}]
我需要访问该值,但我已经尝试了所有我能想到的没有运气的东西。
测试我已经完成了(为了以防万一,还尝试了print_r):
echo $row->extra_fields[0]
echo $row->extra_fields[0]->value
echo $row->extra_fields->value
echo $row->extra_fields["value"]
答案 0 :(得分:3)
在尝试访问值之前,首先将字符串解码为json对象。
<?php
$json = json_decode('[{"id":"16","value":"http:\/\/www.youblisher.com\/p\/611670-Test- Intro-to-R\/"}]');
print_r($json[0]->value);
?>
答案 1 :(得分:2)
好的,我按照我想要的方式工作。
我想用一个名为'Accroche'的字段替换intro / full text。此extrafield的ID为132(有助于了解将在下面的代码中使用的ID)。
我们将编辑2个文件:
/modules/mod_bt_contentslider/classes/content.php 和 /modules/mod_bt_contentslider/classes/k2.php
首先要做的是从数据库中获取extrafield信息:
在/modules/mod_bt_contentslider/classes/content.php(第77行)我添加了[b] a.extra_fields,[/ b]如下
$model->setState('list.select', 'a.urls, a.images, a.fulltext, a.id, a.title, a.alias, a.introtext, a.extra_fields, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' . ' a.modified, a.modified_by,a.publish_up, a.publish_down, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' . ' a.hits, a.featured,' . ' LENGTH(a.fulltext) AS readmore');
保存档案&amp;靠近
现在让我们到/modules/mod_bt_contentslider/classes/k2.php(第234行),
替换此原始代码
// cut introtext
if ($limitDescriptionBy == 'word') {
$item->description = self::substrword($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags);
$item->description = self::substring($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags);
}
$item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias))));
// get author name & link
使用这段代码我已经评论过让像我这样的新手可以理解;)
// REPLACE intro/full text With extra-field info
$extras = json_decode($item->extra_fields); // JSON Array we'll call extras (note final 's' : not to confuse with below variable)
foreach ($extras as $key=>$extraField): //Get values from array
if($extraField->value != ''): //If not empty
if($extraField->id == '132'): // This is ID value for extrafield I want to show --- Search your K2 extrafield's id in Joomla backoffice ->K2 ->extrafields ---
if($extraField->value != ''): // If there's content in the extrafield of that ID
$extra = $extraField->value; //Give $extra that value so we can hand it down below
endif;
endif;
endif;
endforeach;
// cut introtext
if ($limitDescriptionBy == 'word') {
// $item->description = self::substrword($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags);
$item->description = self::substrword($extra, $maxDesciption, $replacer, $isStrips, $stringtags);
} else {
// $item->description = self::substring($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags);
$item->description = self::substring($extra, $maxDesciption, $replacer, $isStrips, $stringtags) ;
}
$item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias))));
// get author name & link
正如您所看到的,我已经注释了介绍文本,因为我不想要它们。如果你想要两个introtext和extrafield,你可以修改它。
如果没有上面给出的JSON提示,我从未想过这一点。 Thanx to all:)
希望这有帮助。
干杯!