Plugins Joomla 3.3:从“content”表中的“attribs”列获取数据

Plugins Joomla 3.3:从“content”表中的“attribs”列获取数据,plugins,joomla,Plugins,Joomla,我在我的Joomla 3.3网站上使用Aixeena Easy CCK插件。这是一个插件,允许我在我的文章编辑页面中添加自定义字段。我在那里填写的内容应该显示在我的网站上。插件将他的信息存储在attribs列的_content表中 在他们的网站上,Aixeena说我必须使用以下代码使填写的文本在我的网站上可见: $attrb = json_decode($this->item->attribs); echo $attrb->fieldname; 此代码将删除以下错误: 注意

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

在他们的网站上,Aixeena说我必须使用以下代码使填写的文本在我的网站上可见:

$attrb = json_decode($this->item->attribs); 
echo $attrb->fieldname;
此代码将删除以下错误:

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

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

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

我认为它是为Joomla的旧版本而写的。然后我四处搜索,找到了以下代码:

$params  = $this->item->params;
echo $params->get('fieldname');
当我在我的网站上使用此代码时,会出现以下错误:

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

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

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

这没有致命的错误。我不知道为什么没有

有人能帮我找到正确的代码,把我的变量从表中去掉吗?提前谢谢

编辑1:链接到插件:


编辑2:编辑了我在回复Elin评论时提出的问题。

正如通知所说,问题是$this->item不存在。您需要找出对象的实际名称,并使用该名称,而不是$this->item。您可能会通过查看您试图显示的任何位置的布局来实现这一点。请检查您的模板,看看它是否具有文章视图的布局覆盖(假设您正试图从中访问表单)?

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

$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'];
但我相信这可以做得更简单

$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'];
        ......

当你说不起作用时,你需要更加具体。这是一个错误吗?您在开发方面有错误报告,对吗?它只是一片空白吗?我调试的方法是首先转储$attrb并查看fieldname是否真的作为属性存在。您找到解决方案了吗?不幸的是,没有…没有,它没有模板覆盖。我自己用一个空白模板制作了这个模板。我试图在模板的index.php文件中显示数据。变量$params声明为JFactory::getApplication->getParams$这不是在我的index.php-file中声明的。不,你永远不会在我们模板的index.php文件中声明它!这属于视图的布局文件。你必须考虑事情发生的顺序。模板索引是在视图之前处理的,因此您还没有可用的$this->item,而且通常根本没有$this->item。