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:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
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 WebSite to schema. It will consist of the property name as well as description. The name property will be filled from the seo_title 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:

Property

type

Data type

string / stdWrap

Description

Defines the schema type to use, see: List of available types.

Example:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.10 = SCHEMA
page.10.type = WebSite

Property

id

Data type

string / stdWrap

Description

The ID added as @id to the type, if defined.

Example:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.10 = SCHEMA
page.10.type = WebSite
page.10.id {
    typolink {
        parameter = t3://page?uid={site : rootPageId}
        parameter.insertData = 1
        forceAbsoluteUrl = 1
        returnLast = url
    }
}

Property

properties

Data type

array

Description

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.typoscript
page.10 = SCHEMA
page.10.type = WebSite
page.10.properties {
    name.field = seo_title // title
    description.field = description
}

A property can be a SCHEMA again, which will result in nested structures.

Example:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.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
            }
        }
    }
}

Multiple values can also be assigned to one property using numeric keys.

Example:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.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
            }
        }
    }
}

Property

if

Data type

if

Description

Prevents processing of the whole cObject if it evaluates to false.

Example:

EXT:my_extension/Configuration/TypoScript/setup.typoscript
page.10 = SCHEMA
page.10 {
    if {
        equals.data = site : rootPageId
        value.field = uid
    }
    type = WebSite
}