All Projects β†’ sitegeist β†’ Sitegeist.Taxonomy

sitegeist / Sitegeist.Taxonomy

Licence: GPL-3.0 license
Manage vocabularies and taxonomies as separate node-hierarchy.

Programming Languages

PHP
23972 projects - #3 most used programming language
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to Sitegeist.Taxonomy

ncbitax2lin
🐞 Convert NCBI taxonomy dump into lineages
Stars: ✭ 113 (+707.14%)
Mutual labels:  taxonomy
venue-taxonomy
The intention of this project is to standardize the list of venue types that represent Digital-Out-of-Home (DOOH) advertising screens within a programmatic OpenRTB 2.5 context. The systematization of DOOH venue types will allow for clearer targeting by media buying platforms across a spectrum of available supply-side platforms offering DOOH inve…
Stars: ✭ 26 (+85.71%)
Mutual labels:  taxonomy
pr2database
Protist Ribosomal Reference database (PR2) - SSU rRNA gene database
Stars: ✭ 54 (+285.71%)
Mutual labels:  taxonomy
Yeebase.Fusion.ContentCacheDebug
Helper package to debug fusions content cache
Stars: ✭ 13 (-7.14%)
Mutual labels:  neoscms
Flowpack.SearchPlugin
A simple search plugin for Neos
Stars: ✭ 23 (+64.29%)
Mutual labels:  neoscms
popoto-examples
Contains a list of Popoto.js examples
Stars: ✭ 121 (+764.29%)
Mutual labels:  taxonomy
varnish
Varnish integration for Neos CMS
Stars: ✭ 19 (+35.71%)
Mutual labels:  neoscms
flow-debugproxy
A Flow Framework Debug proxy for xDebug, written in Go
Stars: ✭ 24 (+71.43%)
Mutual labels:  neoscms
skos-play
SKOS-Play allows to print SKOS files in HTML or PDF. It also embeds xls2rdf to generate RDF from Excel.
Stars: ✭ 58 (+314.29%)
Mutual labels:  taxonomy
neos-debug
Adds a debug panel to your Neos CMS website
Stars: ✭ 31 (+121.43%)
Mutual labels:  neoscms
pytaxize
python port of taxize (taxonomy toolbelt) for R
Stars: ✭ 29 (+107.14%)
Mutual labels:  taxonomy
multitax
Python package to obtain, parse and explore biological taxonomies (GTDB, NCBI, Silva, Greengenes, OTT)
Stars: ✭ 22 (+57.14%)
Mutual labels:  taxonomy
laravel-tags
Rinvex Taggable is a polymorphic Laravel package, for tag management. You can tag any eloquent model with ease, and utilize the awesomeness of Sluggable, and Translatable models out of the box.
Stars: ✭ 23 (+64.29%)
Mutual labels:  taxonomy
flora-on-server
Work collaboratively in IUCN Red List assessments and manage online biodiversity databases, including a graph-based taxonomy system, species traits and habitats, and species occurrences.
Stars: ✭ 13 (-7.14%)
Mutual labels:  taxonomy
virion
The Global Virome in One Network
Stars: ✭ 27 (+92.86%)
Mutual labels:  taxonomy
bio
A lightweight and high-performance bioinformatics package in Golang
Stars: ✭ 80 (+471.43%)
Mutual labels:  taxonomy
Sitegeist.MagicWand
Tools that make the Flow/Neos development easier
Stars: ✭ 47 (+235.71%)
Mutual labels:  neoscms
arctos
Arctos is a museum collections management system
Stars: ✭ 39 (+178.57%)
Mutual labels:  taxonomy
naturtag
Tag your nature photos with iNat taxonomy and observation metadata
Stars: ✭ 20 (+42.86%)
Mutual labels:  taxonomy
Flowpack.SimpleSearch.ContentRepositoryAdaptor
Adaptor for the Neos CR, based on the SimpleSearch package
Stars: ✭ 23 (+64.29%)
Mutual labels:  neoscms

Sitegeist.Taxonomy

Manage vocabularies and taxonomies in Neos as node in a separate subtree /taxonomies distinct from /sites

Authors & Sponsors

The development and the public releases of this package is generously sponsored by our employer http://www.sitegeist.de.

About

If taxonomies are defined as documents in the /sites subtree of the Neos ContentRepository, things tend to get complicated:

  • If the meaning of an item is determined by its position in a hierarchy, it is complicated to add more than one relation or relations for different contexts.
  • Mixing Taxonomies (meaning) with content (presentation) leads to a complicated structure that often is hard to comprehend for editors.
  • It is hard to share taxonomies across multiple sites.
  • It is hard to ensure taxonomies exist in all needed dimensions since this also affects the site structure.
  • Limiting read and write access to taxonomies inside sites is possible but not trivial.

Sitegeist.Taxonomies store vocabularies and taxonomies as nodes outside of the /sites hierarchy in the content repository. This way, the meaning of the taxonomy relations can be expressed better, taxonomies can be used across multiple sites and the taxonomy documents can be defined without interfering with the taxonomy meaning.

It also provides a separate backend module for managing vocabularies and taxonomies.

Storing vocabularies and taxonomies in the ContentRepository

Sitegeist.Taxonomy defines three basic node types:

  • Sitegeist.Taxonomy:Root - The root node at the path /taxonomies, allows only vocabulary nodes as children
  • Sitegeist.Taxonomy:Vocabulary - The root of a hierarchy of meaning, allows only taxonomies nodes as children
  • Sitegeist.Taxonomy:Taxonomy - An item in the hierarchy that represents a specific meaning allows only taxonomy nodes as children

If you have to enforce the existence of a specific vocabulary or taxonomy, you can use a derived node type:

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

And configure the taxonomy package to use this root node type instead of the default:

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

Referencing taxonomies

Since taxonomies are nodes, they are simply referenced via reference or references properties:

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

If you want to limit the selectable taxons to a vocabulary or even a taxonomy, then you can configure a more specific startingPoint:

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

Content-Dimensions

Vocabularies and Taxonomies will always be created in all base dimensions. This way, it is ensured that they can always be referenced. The title and description of a taxons and vocabularies can be translated as is required for the project.

CLI Commands

The taxonomy package includes some CLI commands for managing the taxonomies.

  • taxonomy:list List all taxonomy vocabularies
  • taxonomy:import Import taxonomy content, expects filename + vocabulary-name (with globbing)
  • taxonomy:export Export taxonomy content, expects filename + vocabulary-name (with globbing)
  • taxonomy:prune Prune taxonomy content, expects vocabulary-name (with globbing)

Privileges

Sitegeist.Taxonomy brings the following privilege targets to allow you to restrict read access, management and editing of taxonomies:

  • Sitegeist.Taxonomy:Module.Show Show the backend Module and explore the existing taxonomies by default granted to Editors.
  • Sitegeist.Taxonomy:Module.ManageVocabularyActions Add, edit and delete vocabularies. By default granted to Administrators.
  • Sitegeist.Taxonomy:Module.ManageTaxonomyActions Add, edit and delete taxons. By default granted to Administrators.

Reading and referencing taxonomies from other nodes is currently not limited.

Installation

Sitegeist.Taxonomy is available via packagist. "sitegeist/taxonomy" : "^1.0" to the require section of the composer.json or run composer require sitegeist/taxonomy.

We use semantic-versioning, so every breaking change will increase the major version number.

Contribution

We will gladly accept contributions. Please send us pull requests.

License

See LICENSE

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].