Please note that this documentation is for the most recent version of this extension. It may not be relevant for older versions. Related documentation can be found in the documentation directory of the extension.
Schema.org for TYPO3
This extension is very easy to use. Simply install and include the delivered static template.
Configuration
You can configure the schema data by using Setup-TypoScript. So, the default configuration looks like:
plugin.tx_schemaorg {
    settings {
        page {
            # context is not required
            # Find other types on:
            # http://schema.org/LocalBusiness
            type = ProfessionalService
            name = Your company name
            url = {$themes.configuration.baseurl}
            telephone = +49 12 34 56 78 0
            image {
                type = ImageObject
                url = https://www.../logo.svg
                caption = Your company name
            }
            address {
                type = PostalAddress
                streetAddress = Musterstrasse 123
                addressLocality = Musterstadt
                postalCode = 54321
            }
            geo {
                type = GeoCoordinates
                latitude = 51° 54' 15.48'' N
                longitude = 7° 38' 51.65'' E
            }
            # Opening hours
            openingHoursSpecification {
                type = OpeningHoursSpecification
                dayOfWeek {
                    # Builds a JSON array into node dayOfWeek
                    ARRAY = Monday,Tuesday,Wednesday,Thursday,Friday
                }
                opens = 09:00
                closes = 21:00
            }
            # Contact
            contactPoint {
                type = ContactPoint
                telephone = +49 12 34 56 78 0
                # contact types for phone numbers:
                # https://developers.google.com/search/docs/data-types/corporate-contacts
                contactType = customer service
            }
        }
    }
}
																								For your own schema data, simply modify the structure in settings.page as you need. The parser will build an equal JSON structure and extends the type nodes with an @.
Your root template Setup-TypoScript could look like:
plugin.tx_schemaorg {
    settings {
        page >
        page {
            type = ProfessionalService
            name = company name
            url = {$themes.configuration.baseurl}
            telephone = +49 123 456 789
            image {
                type = ImageObject
                url = https://www.../logo.svg
                caption = coding.ms
            }
        }
    }
}
																								Different opening hours on different days
If you have different opening hours on different days, for example on saturday, you can configure it like that:
plugin.tx_schemaorg {
    settings {
        page {
            #
            #...
            #
            # Opening hours
            openingHoursSpecification {
                0 {
                    type = OpeningHoursSpecification
                    dayOfWeek {
                        # Builds a JSON array into node dayOfWeek
                        ARRAY = Monday,Tuesday,Wednesday,Thursday,Friday
                    }
                    opens = 09:00
                    closes = 21:00
                }
                1 {
                    type = OpeningHoursSpecification
                    dayOfWeek {
                        # Builds a JSON array into node dayOfWeek
                        ARRAY = Saturday
                    }
                    opens = 09:00
                    closes = 12:00
                }
            }
            #
            #...
            #
        }
    }
}
																								How to add social media profiles
Links for some social media profiles or pages can be added like this:
plugin.tx_schemaorg {
    settings {
        page {
            #
            #...
            #
            sameAs {
                # Simply add multiple pages divided by comma
                ARRAY = https://twitter.com/codingms,https://www.instagram.com/codingms/
            }
            #
            #...
            #
        }
    }
}
																								Insert video schema data for YouTube, Vimeo, or other
Usage by ViewHelper:
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:schemaOrg="http://typo3.org/ns/CodingMs/SchemaOrg/ViewHelpers"
      data-namespace-typo3-fluid="true">
    <f:for each="{product.otherImages}" as="videoItem" iteration="videoItemsIteration">
        <f:if condition="{videoItem.originalResource.originalFile.properties.mime_type} === 'video/youtube'">
            <schemaOrg:video file="{videoItem}" />
        </f:if>
    </f:for>
</html>
																								Result:
<script type="application/ld+json">{
    "@context": "https:\/\/schema.org",
    "@type": "VideoObject",
    "contentURL": "https:\/\/www.youtube.com\/watch?v=1ZuZlPbomGg",
    "description": "EIBACH | PRO-KIT | Performance Fahrwerksfedern (Deutsch)",
    "name": "EIBACH | PRO-KIT | Performance Fahrwerksfedern (Deutsch)",
    "thumbnailUrl": "https:\/\/i.ytimg.com\/vi\/1ZuZlPbomGg\/hqdefault.jpg",
    "uploadDate": "2019-02-28T08:05:48+00:00"
}
</script>
																								Links
- A full documentation for schema you'll find on: http://schema.org/
 - If you need to test your schema data, try this testing tools: https://search.google.com/structured-data/testing-tool or https://search.google.com/test/rich-results
 - More information about structured data: https://developers.google.com/search/docs/guides/intro-structured-data
 
