TypoScript
Target group: Integrators
Content Object (cObject) 
        SCHEMA
            
    The extension provides the cObject 
        SCHEMA. The cObject itself will not
display anything. Instead it will add configured types to the global schema
output.
A small example:
page = PAGE
page.10 = SCHEMA
page.10 {
   type = WebSite
   properties {
      name.field = seo_title // title
      description.field = description
   }
}That will add an element of type Web to schema. It will consist of the
property name as well as description.
The name property will be filled from the seo_ field, falling back to
the title field.
Note
Using the 
        SCHEMA cObject in an array-like structure is not possible
by now, like the following example:
{
   "@context": "https://schema.org/",
   "@type": "Event",
   "offers": [{
      "@type": "Offer",
      "name": "Ticket 1",
      "price": "80",
      "priceCurrency": "EUR"
   }, {
      "@type": "Offer",
      "name": "Ticket 2",
      "price": "120",
      "priceCurrency": "EUR"
   }]
}For example, a USER cObject and the PHP API can be used instead.
Top-level properties
The cObject 
        SCHEMA provides the following top-level properties:
type
- 
                            - Data type
- string / stdWrap
 Defines the schema type to use, see: List of available types. Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10.type = WebSiteCopied!
id
- 
                            - Data type
- string / stdWrap
 The ID added as @idto the type, if defined.Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10.type = WebSite page.10.id { typolink { parameter = t3://page?uid={site : rootPageId} parameter.insertData = 1 forceAbsoluteUrl = 1 returnLast = url } }Copied!
properties
- 
                            - Data type
- array
 The key will be used as property name. The value can be a static text, an array, a content object, a stdWrap property or an if condition. Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10.type = WebSite page.10.properties { name.field = seo_title // title description.field = description }Copied!A property can be a SCHEMAagain, which will result in nested structures.Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10.type = WebSite page.10.properties { publisher = SCHEMA publisher { id { typolink { parameter = t3://page?uid={site : rootPageId}#organization parameter.insertData = 1 forceAbsoluteUrl = 1 returnLast = url } } } }Copied!Multiple values can also be assigned to one property using numeric keys. Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10 { type = Organization properties { name = My Company sameAs { 10 = https://example.org/ 20.typolink { parameter = t3://page?uid=42 forceAbsoluteUrl = 1 returnLast = url } } } }Copied!
if
- 
                            - Data type
- if
 Prevents processing of the whole cObject if it evaluates to false.Example: EXT:my_extension/Configuration/TypoScript/setup.typoscriptpage.10 = SCHEMA page.10 { if { equals.data = site : rootPageId value.field = uid } type = WebSite }Copied!