在Drupal7中,如何在不丢失节点引用的情况下将术语从一个词汇表移动到另一个词汇



我继承了一个具有很大层次分类法的站点:

Vocabulary name: categories
--term: company name
---- many child terms
-- term: country
---- many child terms
-- term: issue
---- many child terms

我意识到,如果我将这些父术语中的每一个设置为自己的词汇表,那么创建具有适当内容的搜索方面和视图会更容易:

company
country
issue

因此,我创建了新的词汇表,并使用Taxonomy Manager将所有子术语转移到它们的新词汇表中。然后,我更新了Article节点内容类型,使其与这3个词汇表相关联。

不幸的是,我还注意到文章节点(全部4000个)和术语之间的术语关系现在在显示中丢失了。我原以为这种关系会由Taxonomy Manager模块来维护。

我一直在寻找一种方法来更新文章节点的词汇表引用,但我仍然不确定词汇表是如何与节点关联的。我看到为每个新词汇表创建了新的field_data_field_localary-machine-name表,这就是术语ID和节点/实体ID的关联处。然而,当我将一个术语从一个词汇表移动到另一个词汇时,我不知道如何自动更新节点的词汇表。

我最近把这个网站从Drupal 6移到了7,所以D6中有很多死表扰乱了数据库,这也于事无补。

--

我现在已经设置了一个新的标准D7安装,并且正在查看数据库默认表,试图找出词汇/节点关系的定义位置。在我的旧数据库中,TermID似乎仍然与Node表中的Node正确关联。。。但我看不出VocabularyID/TermID/NodeID存储/更新在哪里。

请尝试此模块:http://drupal.org/project/taxonomy_manager

该模块为管理分类法提供了一个强大的界面。词汇表显示在动态树视图中,父术语可以展开以列出其嵌套的子术语,也可以折叠。

Taxonomy Manager具有以下操作和关键功能:

动态树视图批量删除大量添加新术语术语在层次结构中的移动术语合并(使用7.x中的术语合并模块)使用上下箭头快速更改重量(以及AJAX保存)AJAX支持的术语编辑表单简单搜索界面CSV条款导出i18n支持多语言词汇(按语言术语)用于在层次结构中移动术语、添加新翻译以及在不同词汇表之间切换术语的双树接口要使用Taxonomy Manager,您应该在浏览器中启用JavaScript并自动加载图像。

->但我仍然不确定词汇表是如何与节点关联的

在Drupal7中,分类法引用的方式与Drupal6中的非常不同。如果你想将一个词汇表与Drupal7中的一个节点相关联,你必须将该术语添加为内容类型上的一个字段:

  1. 转到admin/structure/types/manage/article/field,在那里您可以添加/删除/修改文章内容类型的字段
  2. 添加一个新字段,随意命名,并确保从下拉列表中选择"术语引用"类型
  3. 确保你选择了正确的词汇
  4. 对剩下的两个词汇重复此步骤(再添加两个字段)
  5. 转到admin/structure/types/manage/article/didisplay,然后修改是希望这些新字段显示在节点上还是隐藏

================添加=============

在Drupal7中,由于术语与任何其他字段一样,您将在一个新创建的表中看到DB中的关系(当然,只有当您将适当的术语引用字段添加到内容类型中时),该表存储了有关该字段的信息。例如,对于默认情况下Drupal 7附带的标准"标签"词汇表,它可能被称为field_data_field_tags。在该表中,您将看到列entity_id(这是节点的id)和field_tags_id

这有帮助吗?

我认为你应该:

  1. 创建新词汇
  2. 向新词汇表添加带有术语引用的字段
  3. 将内容类型与新词汇表连接后应将术语移动到新位置

我进行了测试,它对我的订单有效。

最新更新