sitegeist/taxonomy

将词汇表和分类作为独立的节点层次进行管理。

v1.4.0 2023-01-16 16:42 UTC

README

在Neos中将词汇表和分类作为独立的子树 /taxonomies 进行管理,与 /sites 区分开来

作者和赞助商

本包的开发和公共发布得到了我们的雇主 http://www.sitegeist.de 的慷慨赞助。

关于

如果将分类定义为Neos内容存储库中 /sites 子树的文档,事情往往会变得复杂。

  • 如果一个项目的意义由其在层次结构中的位置决定,添加多个关系或不同上下文的关系会很复杂。
  • 将分类(意义)与内容(展示)混合会导致复杂的结构,这对编辑来说往往难以理解。
  • 很难在多个网站间共享分类。
  • 由于这也影响网站结构,很难确保分类存在于所有需要的维度中。
  • 限制对站点内分类的读写访问是可能的,但并不简单。

Sitegeist.Taxonomies将词汇表和分类作为内容存储库中 /sites 层次结构之外的节点存储。这样,可以更好地表达分类关系的意义,可以在多个网站中使用分类,并且可以在不干扰分类意义的情况下定义分类文档。

它还提供了一个单独的后端模块来管理词汇表和分类。

安装

Sitegeist.Taxonomy可以通过packagist获取 composer require sitegeist/taxonomy。我们使用语义版本控制,所以每次重大更改都会增加主版本号。

在内容存储库中存储词汇表和分类

Sitegeist.Taxonomy定义了三种基本节点类型

  • Sitegeist.Taxonomy:Root - 路径为 /taxonomies 的根节点,仅允许词汇节点作为子节点
  • Sitegeist.Taxonomy:Vocabulary - 意义层次结构的根,仅允许分类节点作为子节点
  • Sitegeist.Taxonomy:Taxonomy - 代表特定意义的层次结构中的项,仅允许分类节点作为子节点

如果您必须强制存在特定的词汇或分类,您可以使用派生节点类型

    Vendor.Site:Taxonomy.Root:
      superTypes:
        Sitegeist.Taxonomy:Root: TRUE
      childNodes:
        animals:
          type: 'Sitegeist.Taxonomy:Vocabulary'

并配置分类包使用此根节点类型而不是默认类型

    Sitegeist:
      Taxonomy:
        contentRepository:
          rootNodeType: 'Vendor.Site:Taxonomy.Root'
          vocabularyNodeType: 'Sitegeist.Taxonomy:Vocabulary'
          taxonomyNodeType: 'Sitegeist.Taxonomy:Taxonomy'

引用分类

由于分类是节点,因此可以通过 referencereferences 属性简单地引用

    taxonomyReferences:
      type: references
      ui:
        label: 'Taxonomy References'
        inspector:
          group: taxonomy
          editorOptions:
            nodeTypes: ['Sitegeist.Taxonomy:Taxonomy']
            startingPoint: '/taxonomies'
            placeholder: 'assign Taxonomies'

如果您想将可选择的分类限制为词汇或甚至分类,那么您可以配置更具体的起始点

    taxonomyReferences:
      ui:
        inspector:
          editorOptions:
            startingPoint: '/taxonomies/animals/mammals'

内容维度

词汇表和分类将始终在所有基本维度中创建。这样,可以确保它们始终可以被引用。分类和词汇的标题和描述可以像项目所需的那样进行翻译。

CLI命令

分类包包括一些CLI命令用于管理分类。

  • taxonomy:list 列出所有分类词汇
  • taxonomy:import 导入分类内容,需要文件名 + 词汇名称(支持通配符)
  • taxonomy:export 导出分类内容,需要文件名 + 词汇名称(支持通配符)
  • taxonomy:prune 修剪分类内容,需要词汇名称(支持通配符)

权限

Sitegeist.Taxonomy提供了以下权限目标,以允许您限制对分类的读取访问、管理和编辑

  • Sitegeist.Taxonomy:Module.Show 显示后端模块并默认允许编辑器探索现有的分类法。
  • Sitegeist.Taxonomy:Module.ManageVocabularyActions 添加、编辑和删除词汇表。默认允许管理员操作。
  • Sitegeist.Taxonomy:Module.ManageTaxonomyActions 添加、编辑和删除分类。默认允许管理员操作。

目前从其他节点读取和引用分类法没有限制。

可扩展性

软件包可以为分类法和词汇表表单添加额外字段。为此,需要执行以下步骤。

  1. 在您的软件包中扩展节点类型 Sitegeist.Taxonomy:TaxonomySitegeist.Taxonomy:Vocabulary
  2. 将您的额外 Root.fusion 路径添加到设置路径 Sitegeist.Taxonomy.backendModule.additionalFusionIncludePathes 中。
  3. 在融合代码中,将每个字段定义为原型,该原型接受 name 以及 taxon & defaultTaxonvocabulary & defaultVocabulary 属性。
  4. 通过将它们添加到设置 Sitegeist.Taxonomy.backendModule.additionalVocabularyFieldPrototypesSitegeist.Taxonomy.backendModule.additionalTaxonomyFieldPrototypes,注册额外的原型名称。

贡献

我们乐意接受贡献。请发送给我们 pull requests。

许可证

请参阅 LICENSE