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