我在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:编辑我对艾琳评论的回答。
答案 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'];
......