我有一些代码用于从数据库中的k2_items表中获取信息,但我获取的extra_fields只是一个JSON字符串,而不是我需要打印的人类可读id /值。
以下是我用于显示数据库信息的代码,以及用于提取extra_fields值的尝试代码。
<?php
define( '_JEXEC', 1 );
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();
$user = JFactory::getUser();
$session =& JFactory::getSession();
$user = JFactory::getUser();
//echo 'Username is ' . $user->username;
if($user->username === NULL)
//user is not logged in
{
exit('You are not authorized to view this page. <a href = "' . JURI::root() . '">Please return to the homepage and login using the proper username/password.</a>' . $user->username);
}
else
//user is logged in
{
echo "<p>Welcome $user->username</p>";
echo '<p><a href = "http://ac.tradewindus.com/index.php?option=com_content&view=featured&Itemid=143">Go here to log out</a></p>';
$db=JFactory::getDBO();
$sql="SELECT * FROM #__k2_items WHERE published='1'";
$db->setQuery($sql);
$list=$db->loadObjectList();
foreach($list as $item)
{
echo "<pre>";
echo print_r($item, true);
echo "</pre>";
//convertArray to use ids as key
$extrafields = array();
foreach($item->extra_fields as $item)
{
$extrafields[$item->id] = $item->value;
}
echo $extrafields[1];
echo $extrafields[2];
echo $extrafields[3];
echo $extrafields[4];
echo $extrafields[5];
//echo "<p>Title: $item->title</p>";
//echo $item->introtext;
}
}
?>
这是我每个人得到的结果&#34; foreach&#34;循环输出。
stdClass Object
(
[id] => 83
[title] => SPEC SHEET: PANORAMAH 38 SASH BI-RAIL
[alias] => spec-sheet-panoramah-38-sash-birail
[catid] => 4
[published] => 1
[introtext] =>
SPEC SHEET: PANORAMAH 38 SASH BI-RAIL
[fulltext] =>
[video] =>
[gallery] =>
[extra_fields] => [{"id":"1","value":""},{"id":"2","value":["1"]},{"id":"3","value":["4"]},{"id":"4","value":["1","2"]},{"id":"5","value":["7"]},{"id":"6","value":["4"]}]
[extra_fields_search] => PanoramAH Minimal Frame Door Window Sliding Spec Sheets
[created] => 2014-01-09 00:00:00
[created_by] => 550
[created_by_alias] =>
[checked_out] => 0
[checked_out_time] => 0000-00-00 00:00:00
[modified] => 2014-08-06 22:44:57
[modified_by] => 550
[publish_up] => 2014-01-09 00:00:00
[publish_down] => 0000-00-00 00:00:00
[trash] => 0
[access] => 1
[ordering] => 14
[featured] => 0
[featured_ordering] => 0
[image_caption] =>
[image_credits] =>
[video_caption] =>
[video_credits] =>
[hits] => 0
[params] => {"catItemTitle":"","catItemTitleLinked":"","catItemFeaturedNotice":"","catItemAuthor":"","catItemDateCreated":"","catItemRating":"","catItemImage":"","catItemIntroText":"","catItemExtraFields":"","catItemHits":"","catItemCategory":"","catItemTags":"","catItemAttachments":"","catItemAttachmentsCounter":"","catItemVideo":"","catItemVideoWidth":"","catItemVideoHeight":"","catItemAudioWidth":"","catItemAudioHeight":"","catItemVideoAutoPlay":"","catItemImageGallery":"","catItemDateModified":"","catItemReadMore":"","catItemCommentsAnchor":"","catItemK2Plugins":"","itemDateCreated":"","itemTitle":"","itemFeaturedNotice":"","itemAuthor":"","itemFontResizer":"","itemPrintButton":"","itemEmailButton":"","itemSocialButton":"","itemVideoAnchor":"","itemImageGalleryAnchor":"","itemCommentsAnchor":"","itemRating":"","itemImage":"","itemImgSize":"","itemImageMainCaption":"","itemImageMainCredits":"","itemIntroText":"","itemFullText":"","itemExtraFields":"","itemDateModified":"","itemHits":"","itemCategory":"","itemTags":"","itemAttachments":"","itemAttachmentsCounter":"","itemVideo":"","itemVideoWidth":"","itemVideoHeight":"","itemAudioWidth":"","itemAudioHeight":"","itemVideoAutoPlay":"","itemVideoCaption":"","itemVideoCredits":"","itemImageGallery":"","itemNavigation":"","itemComments":"","itemTwitterButton":"","itemFacebookButton":"","itemGooglePlusOneButton":"","itemAuthorBlock":"","itemAuthorImage":"","itemAuthorDescription":"","itemAuthorURL":"","itemAuthorEmail":"","itemAuthorLatest":"","itemAuthorLatestLimit":"","itemRelated":"","itemRelatedLimit":"","itemRelatedTitle":"","itemRelatedCategory":"","itemRelatedImageSize":"","itemRelatedIntrotext":"","itemRelatedFulltext":"","itemRelatedAuthor":"","itemRelatedMedia":"","itemRelatedImageGallery":"","itemK2Plugins":""}
[metadesc] =>
[metadata] => robots=
author=
[metakey] =>
[plugins] =>
[language] => *
)
额外字段应该显示在最底层,但我想没有返回任何内容。在db输出中打印extra_fields时,值为[1]之类的数字;但是当我看到K2后端时,它们是文本答案或下拉选项;人类可读。我不是真正的Joomla开发人员,所以我不知道是否存在某种JRegistry或我应该使用的东西,但我希望能指出正确的方向。 :d
答案 0 :(得分:2)
K2中的额外字段以JSON格式存储。您将需要使用json_decode。
$extra_fields = json_decode($item->extra_fields);
有关K2额外项目的更多信息,请参阅:http://www.itoctopus.com/on-leveraging-the-power-of-k2s-extra-items