yii2-schema-org
Schema.org yii2 representation and helpers for json-ld generation., (*1)
, (*2)
Resources
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
$ php composer.phar require --prefer-dist simialbi/yii2-schema-org
or add, (*5)
"simialbi/yii2-schema-org": "^2.0.0"
to the require
section of your composer.json
, (*6)
Usage
In order to use this module, you will need to:, (*7)
-
Configure your application so that the module is available.
-
Generate the Schemas you intend to use.
Setup Module
Configure the module named schema
in the modules section of your Yii configuration file., (*8)
Remember to do this for console and for web application configuration file., (*9)
'modules' => [
'schema' => [
'class' => 'simialbi\yii2\schemaorg\Module',
//'autoCreate' => false,
//'autoRender' => false
]
]
Also add the module schema
to the bootstrap section of your configuration file:, (*10)
'bootstrap' => ['log', 'schema']
Parameter |
Description |
autoCreate |
Automatically create breadcrumbs json+ld data. |
autoRender |
Automatically render json+ld data at the end of body section. |
mergeModels |
Merge models into one script tag instead of rendering one for each of them. |
If you don't use autoRender
, be sure to manually call JsonLDHelper::render()
in your layout file, like so:, (*11)
beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php JsonLDHelper::render(); ?>
<?php $this->head() ?>
</head>
Model generation
Minimal (standard) configuration
Without passing any parameters all schemas will be generated in the folder @vendor/simialbi/yii2-schema-org/src/models
.
The namespace of the models will be simialbi\yii2\schemaorg\models
., (*12)
$ php yii schema/models/generate
Customized
If you want to customize the namespace and path you can do it via --namespace
and --folder
parameters. E.g. to generate
schemas Car
and AutoDealer
in common/schemas
with common\schemas
namespace:
```bash
$ php yii schema/models/generate 'latest' --schemas=Car,AutoDealer --namespace='common\schemas' --folder='@common/schemas/', (*13)
| Parameter | Description |
|----------------|----------------------------------------------------------------------------------------------------------|
| `version` | The [schemas.org version](https://schema.org/docs/releases.html) to use. Defaults to `latest` |
| `--schemas` | A comma separated list of schemas you intend to use. Empty means all. Defaults to `[]` |
| `--namespace` | The namespace to use for the generated classes and traits. Defaults to `simialbi\yii2\schemaorg\models` |
| `--folder` | The folder where to put the generated files. Defaults to `@simialbi/yii2/schemaorg/src/models` |
| `--remove-old` | Whether to remove old files before generating. Defaults to `false` |
The console command will take care of computing schemas dependencies and will generate the classes based on your needs.
### Automatic model update on composer update
If you'd like to always update your schema when you run `composer update` you can configure your composer.json like this:
```json
{
// [...]
"require": {
"yiisoft/yii2": "^2.0.13",
"simialbi/yii2-schema-org": "^2.0.0"
},
"scripts": {
"post-update-cmd": [
"simialbi\\yii2\\schemaorg\\composer\\Installer::postInstallUpdate"
]
},
"extra": {
"simialbi\\yii2\\schemaorg\\composer\\Installer::postInstallUpdate": {
"generateModels": {
"schemas": ["Car", "AutoDealer"], // optional
"namespace": "common\\schemas", // optional
"folder": "common/schema" // optional
}
}
}
// [...]
}
Example Usage
To e.g. add a person to json+ld, you can do the following:, (*14)
use simialbi\yii2\schemaorg\helpers\JsonLDHelper;
use simialbi\yii2\schemaorg\models\Person;
$child = new Person();
$child->name = 'George W. Bush';
$child->disambiguatingDescription = '43rd President of the United States';
$person = new Person();
$person->name = 'George Bush';
$person->disambiguatingDescription = '41st President of the United States';
$person->children = [$child];
JsonLDHelper::add($person);
License
yii2-schema-org is released under MIT license. See bundled LICENSE for details., (*15)