Joomla 3.3:从表'content'中的'attribs'列中获取数据

时间:2014-06-07 15:10:03

标签: plugins joomla

我在Joomla 3.3网站上使用Aixeena Easy CCK插件。它是一个允许我在文章编辑页面中添加自定义字段的插件。我填写的内容(应该)显示在我的网站上。该插件将其信息存储在attribs列的#_content表中。

在他们的网站上,Aixeena说我必须使用以下代码才能在我的网站上显示填写的文字:

$attrb = json_decode($this->item->attribs); 
echo $attrb->fieldname;

此代码删除以下错误:

  

注意:未定义的属性:第123行的/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中的JDocumentHTML :: $ item

     

注意:尝试在第123行的/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中获取非对象的属性

     

致命错误:在第124行/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中的非对象上调用成员函数get()

我认为它是为旧版Joomla编写的。然后我四处搜索并找到了这段代码:

$params  = $this->item->params;
echo $params->get('fieldname');

当我在我的网站上使用此代码时,它会给我以下错误' s:

  

注意:未定义的属性:第123行的/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中的JDocumentHTML :: $ item

     

注意:尝试在第123行的/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中获取非对象的属性

     

注意:尝试在第124行的/Applications/MAMP/htdocs/buutpot/templates/buutpot.nl-standaardtemplate/index.php中获取非对象的属性

没有致命错误。我不确定为什么没有。

有人能帮我找到合适的代码让我的变量摆脱桌面吗?提前谢谢!

编辑1:链接到插件:http://www.aixeena.org/aixeena-lab/aixeena-easy-cck

编辑2:编辑我对艾琳评论的回答。

3 个答案:

答案 0 :(得分:0)

就像通知所说的那样,问题是$this->item不存在。您需要弄清楚对象的实际名称是什么,并使用它而不是$ this->项。您可能会通过查看您尝试显示的布局来实现此目的。您能否检查一下您的模板,看它是否有文章视图的布局覆盖(假设您正在尝试访问该表单的视图)?

答案 1 :(得分:0)

我使用此代码对数据库进行查询:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('attribs');
$query->from($db->quoteName('#__content'));
$query->where($db->quoteName('id')." = ".JRequest::getInt('id'));

$db->setQuery($query);
$attribs = $db->loadResult();
$attribs = json_decode($attribs, 'true');

$firstattr = $attribs['firstattr'];
$secondattr = $attribs['secondattr'];
$thirdattr = $attribs['thirdattr'];
$fourthattr = $attribs['fourthattr'];

但我确信这可以更简单。

答案 2 :(得分:0)

$attribs = new JRegistry($article->attribs);
echo $fieldname = $attribs['fieldname'];

例如,我在ContentPrepare上使用此代码就像这样

function onContentPrepare($context, &$article, &$params, $page) {

        $attribs = new JRegistry($article->attribs);
        //url is my custom field for the content
        $url = $attribs['url'];
        ......