我在这个问题上花了几天时间,所以我举手了。我正在自己的组件中实现标签,并严格遵循 Joomla 网站上 Elin 的说明(2013 年 7 月 27 日)。我可以将新标签正确保存在 TAGS 表中,但不能像所有标准组件那样保存在 UCM 或 TAG MAP 表中。 我一直跟踪代码,并与 com_contacts 进行比较,但我一生都看不出我的组件有任何差异。 我应该在哪里寻找代码更新其他两个表的位置?我知道这会以一个令人尴尬的答案结束,但我很高兴看起来很愚蠢。 我的表没有元字段,但我手动伪造了 $data 数组中的元数据数组。如有任何帮助,我们将不胜感激。
最佳答案
经过许多天的额外挫折,我发现对于我的组件,我必须将存档信息包含到我的表类中,这不再是必需的。
添加属性
/**
* Indicator that the tags have been changed
*
* @var JHelperTags
* @since 3.1
*/
protected $tagsHelper = null;
此属性有助于管理标签中的更改。 修改你的构造函数
按照此示例修改您的构造函数,从而大大减少重复代码。
$this->tagsHelper = new JHelperTags();
$this->tagsHelper->typeAlias = 'com_contact.contact';
修改你的 store() 方法
标记和关联数据的管理主要通过 store() 方法处理。这为跨多个扩展处理标签提供了最大的灵活性。
如果您没有 store() 方法,则需要添加一个。假设表将从 JTable 继承。
该处理涉及 preStoreProcess()、对父 store() 方法的调用,然后是 postStoreProcess()。
$this->tagsHelper->preStoreProcess($this);
$result = parent::store($updateNulls);
return $result && $this->tagsHelper->postStoreProcess($this);
关于tags - Joomla 3.1.5 将标签保存到ucm_content和contentitem_tag_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18029161/