Introduction for developers
Target group: Developers, Integrators
Table of Contents
Introduction
The structured markup can be generated in two ways:
- using the API
- with view helpers in Fluid templates
Each type in the schema.org vocabulary corresponds to a PHP model that provides the available properties. There is also a view helper for each type that makes it easy to integrate the data into your website via a Fluid template.
Attention should be paid to the following points:
- A web page can be characterised by different schema.org types as outlined in
this chapter. The
Web
type is set automatically if the corresponding configuration option is set. But it can always overridden manually with the desired type and properties. The chapter The WebPage type is dedicated to this topic.Page - A breadcrumb does not only help the user to recognise the location of a particular page on the website. It is also helpful for search engines to understand the structure of your website. Google honors the website operator for using the breadcrumb schema markup on a page: It will be shown in the search result snippet.
- The main entity of a web page indicates the
primary entity. It can be set separately from a
Web
.Page
Quick dive-in
The schema.org vocabulary consists of many types, like Person
,
Organization
, Product
, and so on. They are written with an upper letter
at the beginning of the term.
Each type has several properties which characterise the specific type, like
given
or last
for a Person
. The properties start with a
lower letter at the beginning in the vocabulary.
The most generic type is Thing
. Each other type inherits the properties
from one or more other types, e.g: Corporation
is a specific type for
Organization
and defines a new property. Organization
itself is a
specific type of Thing
and inherits the properties of Thing
and defines
many more properties characterising this type.
You can retrieve the information about a type or property from the URL https://schema.org/ followed by the term name. (for example, https://schema.org/Person) or the name of the property (for example, https://schema.org/givenName).
Models
This extension provides model classes for each type under the PHP namespace
\Brotkrueml\
. For example, the type Thing
is mapped
to the model \Brotkrueml\
, which knows about the
according schema.org properties. A property value can be set with an according
method:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Controller;
use Brotkrueml\Schema\Type\TypeFactory;
final class MyController
{
public function __construct(
private readonly TypeFactory $typeFactory,
) {}
public function doSomething(): void
{
// ...
$thing = $this->typeFactory->create('Thing');
$thing->setProperty('name', 'A thing');
// ...
}
}
The schema manager connects the type models to the page:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Controller;
use Brotkrueml\Schema\Manager\SchemaManager;
use Brotkrueml\Schema\Type\TypeFactory;
final class MyController
{
public function __construct(
private readonly SchemaManager $schemaManager,
private readonly TypeFactory $typeFactory,
) {}
public function doSomething(): void
{
// ...
$thing = $this->typeFactory->create('Thing');
$thing->setProperty('name', 'A thing');
$this->schemaManager->addType($thing);
// ...
}
}
The chapter Using The API describes in-depth how to use the models and the schema manager.
Note
The models were generated from the schema.org definition and will be updated as the standard evolves.
View helpers
For usage in Fluid templates, each type is mapped to a view helper in the
schema:
namespace. You assign the type properties as view helper
arguments, for example:
<schema:type.thing name="A thing"/>
The view helpers can be nested into each other.
The chapter View helpers explains the usage of the view helpers in detail.
Note
The view helpers were generated from the schema.org definition and will be updated as the standard evolves.