Git Product home page Git Product logo

flowpack.schemaorg.nodetypes's Introduction

TYPO3 Neos Utility to create NodeType based on schema.org

This plugin provides a service to create NodeType YAML configuration based on schema.org type. You can found the full schema.org types list here: http://schema.org/docs/full.html

Quick start

  • install this package with composer

  • use the command line tools to create the YAML configuration

  • you can import only a subset of the types available, type type attribute can contain a list separated by comma of valid Schema.org type. The following command will create a file named NodeTypes.SchemaOrg.APIReference.yaml in your Data/NodeTypes/Configuration directory.

# flow schema:extract --package-key Flowpack.SchemaOrg.NodeTypes --name APIReference --type APIReference
  • you can also import the complete list of types (around ~540 types currently). The following command will create a file named NodeTypes.SchemaOrg.All.yaml in your Data/NodeTypes/Configuration directory.
# flow schema:extract --package-key Flowpack.SchemaOrg.NodeTypes --name All
  • all create type are abstract, you need to use them is your own NodeType.

  • copy this file to your own package and use your newly created schemas

What's next ?

This package can be used for initial content modeling, based on common standard. The current implementation is flexible enought for the initial Node Type configuration. But now that you use standard schema configuration, it's maybe time to work on:

  • JSON-LD (JSON Linked Data)
  • RDFa
  • MicroData

You can check the Examples section in the schema.org website: http://schema.org/Person. Maybe some of those template, especialy for JSON-LD and RDFa, can also be kickstarted by this package. So if you found this package useful, just open issue if you see missing feature, or if you can help (code, documenation, ...) your are welcome.

  • TypoScript2 object to render JSON-LD / RDFa, based on the current document/structure content

How import work ?

  • get the specific schema.org type
  • import all supertypes
  • analysis of relation between schema, reference & references
  • build a dependency tree, and import all related types

So during a single import you can ask for a given type, but that system will import all dependecies required by the main type. This is a sample command output when trying to import UserComments:

# flow schema:extract --type UserComments
# Extracting schema.org ...
+ Flowpack.SchemaOrg.NodeTypes:AdministrativeArea
+ Flowpack.SchemaOrg.NodeTypes:AlignmentObject
+ Flowpack.SchemaOrg.NodeTypes:Article
+ Flowpack.SchemaOrg.NodeTypes:Audience
+ Flowpack.SchemaOrg.NodeTypes:AudioObject
+ Flowpack.SchemaOrg.NodeTypes:BroadcastService
+ Flowpack.SchemaOrg.NodeTypes:BusinessEntityType
+ Flowpack.SchemaOrg.NodeTypes:BusinessFunction
+ Flowpack.SchemaOrg.NodeTypes:ContactPoint
+ Flowpack.SchemaOrg.NodeTypes:ContactPointOption
+ Flowpack.SchemaOrg.NodeTypes:Country
+ Flowpack.SchemaOrg.NodeTypes:CreativeWork
+ Flowpack.SchemaOrg.NodeTypes:DayOfWeek
+ Flowpack.SchemaOrg.NodeTypes:DeliveryMethod
+ Flowpack.SchemaOrg.NodeTypes:Demand
+ Flowpack.SchemaOrg.NodeTypes:Distance
+ Flowpack.SchemaOrg.NodeTypes:Duration
+ Flowpack.SchemaOrg.NodeTypes:EducationalOrganization
+ Flowpack.SchemaOrg.NodeTypes:Enumeration
+ Flowpack.SchemaOrg.NodeTypes:Event
+ Flowpack.SchemaOrg.NodeTypes:EventStatusType
+ Flowpack.SchemaOrg.NodeTypes:GeoCoordinates
+ Flowpack.SchemaOrg.NodeTypes:Intangible
+ Flowpack.SchemaOrg.NodeTypes:ItemAvailability
+ Flowpack.SchemaOrg.NodeTypes:Language
+ Flowpack.SchemaOrg.NodeTypes:MediaObject
+ Flowpack.SchemaOrg.NodeTypes:NewsArticle
+ Flowpack.SchemaOrg.NodeTypes:Offer
+ Flowpack.SchemaOrg.NodeTypes:OfferItemCondition
+ Flowpack.SchemaOrg.NodeTypes:OpeningHoursSpecification
+ Flowpack.SchemaOrg.NodeTypes:Organization
+ Flowpack.SchemaOrg.NodeTypes:OwnershipInfo
+ Flowpack.SchemaOrg.NodeTypes:PaymentMethod
+ Flowpack.SchemaOrg.NodeTypes:Person
+ Flowpack.SchemaOrg.NodeTypes:Place
+ Flowpack.SchemaOrg.NodeTypes:PostalAddress
+ Flowpack.SchemaOrg.NodeTypes:PriceSpecification
+ Flowpack.SchemaOrg.NodeTypes:Product
+ Flowpack.SchemaOrg.NodeTypes:ProductModel
+ Flowpack.SchemaOrg.NodeTypes:PublicationEvent
+ Flowpack.SchemaOrg.NodeTypes:QuantitativeValue
+ Flowpack.SchemaOrg.NodeTypes:Quantity
+ Flowpack.SchemaOrg.NodeTypes:Rating
+ Flowpack.SchemaOrg.NodeTypes:Review
+ Flowpack.SchemaOrg.NodeTypes:StructuredValue
+ Flowpack.SchemaOrg.NodeTypes:Thing
+ Flowpack.SchemaOrg.NodeTypes:TypeAndQuantityNode
+ Flowpack.SchemaOrg.NodeTypes:UserComments
+ Flowpack.SchemaOrg.NodeTypes:UserInteraction
+ Flowpack.SchemaOrg.NodeTypes:VideoObject
+ Flowpack.SchemaOrg.NodeTypes:WarrantyPromise
+ Flowpack.SchemaOrg.NodeTypes:WarrantyScope
The following file contain your new NodeType:
Data/NodeTypes/Configuration/NodeTypes.SchemaOrg.Default.yaml

If one of the required type exist on your system, it will be skipped during the import process. Updating Node Type configuration is not supported by this package and it will be not supported in futur release.

Mixins

This package provide some basic mixins, check NodeTypes.Mixins.yaml.

Default NodeType Configuration

Feel free to change the default NodeType configuration:

Flowpack:
  SchemaOrg:
    NodeTypes:
      typeDefaultConfiguration:
        '*':
          abstract: TRUE
          nodeLabelGenerator: 'Flowpack\SchemaOrg\NodeTypes\Domain\Model\DefaultNodeLabelGenerator'
          ui:
            icon: 'icon-gear'

You can also change the default configuration for a specific NodeType:

Flowpack:
  SchemaOrg:
    NodeTypes:
      typeDefaultConfiguration:
        'Review':
          abstract: FALSE
          superTypes:
            - 'TYPO3.Neos.NodeTypes:Page'
        'PostalAddress':
          ui:
            icon: 'icon-building'

Configuration: NodeType Mapping

If you have existing NodeType that can replace some schema.org types, check the configuration:

Flowpack:
  SchemaOrg:
    NodeTypes:
      nodeTypeMapping:
	  	ImageObject: 'TYPO3.Neos.NodeTypes:Image'

Configuration: Property Blacklist

If you have existing NodeType that can replace some schema.org types, check the configuration:

Flowpack:
  SchemaOrg:
    NodeTypes:
      propertyBlackList:
        'url': TRUE

Configuration: Replace a property by a mixin

Sometimes it's useful to replace a property by a existing mixins, per example to use a property as a child nodes:

Flowpack:
  SchemaOrg:
    NodeTypes:
      propertyMixinsMapping:
	    'image':
		  - 'TYPO3.Neos.NodeTypes:ImageMixin'
		  - 'TYPO3.Neos.NodeTypes:ImageCaptionMixin'

Configuration: Override property configuration

Sometimes it's useful to override the default property configuration. This package try to be smart, but you are smarter so feel free to change configuration for a give property.

Flowpack:
  SchemaOrg:
    NodeTypes:
      propertyDefaultConfiguration:
	    'email':
		  type: 'string'
		  validation:
		    validation:
		      'TYPO3.Neos/Validation/EmailAddressValidator': []

flowpack.schemaorg.nodetypes's People

Contributors

dfeyer avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.