2014-08-30 44 views
0

我有这一点我用来从数据库中的k2_items表中获取信息的代码,但我得到的extra_fields是一个JSON字符串,而不是人类可读的ID /我需要打印的值。如何从Joomla K2显示额外的字段

这里是我用来显示数据库信息的代码,以及试图提取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; 
    } 
} 

?> 

这是我得到的每个“foreach”循环输出结果。

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

回答

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

+0

谢谢你,我只是发现,选择选项不返回自己的价值,而只是位置他们在像1或2。或者其他的东西。我用一些if语句和开关函数解决了它。 – Vales 2014-09-01 17:01:57

相关问题