Yii2 페이지에 Schema.org 마크업을 추가하는 방법.

13669 단어 yii2schemamarkupseo
https://schema.org은 검색 엔진 및 기타 애플리케이션에서 사용하기 위해 웹 페이지에 구조화된 데이터를 포함할 수 있는 마크업 시스템입니다. JSON-LD를 사용하여 Yii2 기반 웹사이트의 페이지에 Schema.org를 추가하는 방법을 살펴보겠습니다.

기본적으로 필요한 것은 페이지에 다음과 같은 것을 포함하는 것입니다.

<script type="application/ld+json">
{ 
  "@context": "http://schema.org/",
  "@type": "Movie",
  "name": "Avatar",
  "director": 
    { 
       "@type": "Person",
       "name": "James Cameron",
       "birthDate": "1954-08-16"
    },
  "genre": "Science fiction",
  "trailer": "../movies/avatar-theatrical-trailer.html" 
}
</script>


그러나 우리는 Yii2에서 이와 같은 스크립트를 작성하는 것을 좋아하지 않으므로 다른 PHP 방식으로 작성해 보겠습니다.

레이아웃에서 웹사이트에 대한 몇 가지 일반적인 마크업을 정의할 수 있으므로 @app/views/layouts/main.php 파일의 시작 부분에 다음 스니펫을 추가합니다.

<?= \yii\helpers\Html::script(isset($this->params['schema'])
    ? $this->params['schema']
    : \yii\helpers\Json::encode([
        '@context' => 'https://schema.org',
        '@type' => 'WebSite',
        'name' => Yii::$app->name,
        'image' => $this->image,
        'url' => Yi::$app->homeUrl,
        'descriptions' => $this->description,
        'author' => [
            '@type' => 'Organization',
            'name' => Yii::$app->name,
            'url' => 'https://www.hogarencuba.com',
            'telephone' => '+5352381595',
        ]
    ]), [
    'type' => 'application/ld+json',
]) ?>


여기서 우리는 Html::script($content, $options)을 사용하여 필요한 type 옵션과 함께 스크립트를 포함하고 Json::encode($value, $options) JSON을 생성합니다. 또한 schema라는 페이지 매개변수를 사용하여 다른 페이지의 마크업을 재정의할 수 있습니다. 예를 들어, @app/views/real-estate/view.php에서 우리는 다음을 사용하고 있습니다:

$this->params['schema'] = \yii\helpers\Json::encode([
    '@context' => 'https://schema.org',
    '@type' => 'Product',
    'name' => $model->title,
    'description' => $model->description,
    'image' => array_map(function ($item) {
        return $item->url;
    }, $model->images),
    'category' => $model->type->description_es,
    'productID' => $model->code,
    'identifier' => $model->code,
    'sku' => $model->code,
    'url' => \yii\helpers\Url::current(),
    'brand' => [
        '@type' => 'Organization',
        'name' => Yii::$app->name,
        'url' => 'https://www.hogarencuba.com',
        'telephone' => '+5352381595',
    ],
    'offers' => [
        '@type' => 'Offer',
        'availability' => 'InStock',
        'url' => \yii\helpers\Url::current(),
        'priceCurrency' => 'CUC',
        'price' => $model->price,
        'priceValidUntil' => date('Y-m-d', strtotime(date("Y-m-d", time()) . " + 365 day")),
        'itemCondition' => 'https://schema.org/UsedCondition',
        'sku' => $model->code,
        'identifier' => $model->code,
        'image' => $model->images[0],
        'category' => $model->type->description_es,
        'offeredBy' => [
            '@type' => 'Organization',
            'name' => Yii::$app->name,
            'url' => 'https://www.hogarencuba.com',
            'telephone' => '+5352381595',
        ]
    ]
]);


여기서 우리는 보다 복잡한 마크업으로 이 페이지의 스키마를 재정의합니다: 제안이 있는 제품.

이렇게 하면 웹사이트의 모든 페이지에 schema.org 마크업이 정의됩니다. 레이아웃에는 기본값이 있고 다른 페이지에서는 $this->params['schema'] 값을 다시 정의할 수 있습니다.

좋은 웹페이지 즐겨찾기