Commit 2d393ae540d067f6fb20e087e59a6e4830c687ec
1 parent
1a64d964
добавил микроразметку JsonLD для новости
Showing
4 changed files
with
66 additions
and
7 deletions
Show diff stats
frontend/controllers/BlogController.php
| @@ -10,7 +10,8 @@ | @@ -10,7 +10,8 @@ | ||
| 10 | use yii\helpers\ArrayHelper; | 10 | use yii\helpers\ArrayHelper; |
| 11 | use yii\web\Controller; | 11 | use yii\web\Controller; |
| 12 | use yii\web\NotFoundHttpException; | 12 | use yii\web\NotFoundHttpException; |
| 13 | - | 13 | + use frontend\microdata\MicrodataFabric; |
| 14 | + use Yii; | ||
| 14 | 15 | ||
| 15 | /** | 16 | /** |
| 16 | * Class BlogController | 17 | * Class BlogController |
| @@ -70,7 +71,57 @@ | @@ -70,7 +71,57 @@ | ||
| 70 | 71 | ||
| 71 | public function actionView($id) | 72 | public function actionView($id) |
| 72 | { | 73 | { |
| 74 | + | ||
| 75 | + /** | ||
| 76 | + * | ||
| 77 | + | ||
| 78 | + | ||
| 79 | + | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + */ | ||
| 84 | + | ||
| 85 | + | ||
| 86 | + | ||
| 87 | + | ||
| 88 | + | ||
| 89 | + | ||
| 73 | $model = $this->findModel($id); | 90 | $model = $this->findModel($id); |
| 91 | + | ||
| 92 | + $jsonLdMicrodata = [ | ||
| 93 | + 'context' => 'http://schema.org', | ||
| 94 | + "type" => "Article", | ||
| 95 | + "mainEntityOfPage" => [ | ||
| 96 | + "@type" => "WebPage", | ||
| 97 | + "@id" => "https://google.com/article" | ||
| 98 | + ], | ||
| 99 | + "headline" => "Article headline", | ||
| 100 | + "datePublished" => $model->created_at, | ||
| 101 | + "dateModified" => $model->updated_at, | ||
| 102 | + | ||
| 103 | + # оставьте пока что этот участок | ||
| 104 | + # author_id уже есть, если что, можно будет быстро его подключить | ||
| 105 | +// "author"=> [ | ||
| 106 | +// "@type"=> "Person", | ||
| 107 | +// "name"=> "John Doe" | ||
| 108 | +// ], | ||
| 109 | + | ||
| 110 | + "publisher" => [ | ||
| 111 | + "@type" => "Organization", | ||
| 112 | + "name" => Yii::t('app', 'ABC short'), | ||
| 113 | + "description" => ($model->language->body_preview) ? $model->language->body_preview : $model->language->title, | ||
| 114 | + | ||
| 115 | + ]]; | ||
| 116 | + | ||
| 117 | + if ($model->image) $resultMicrodata['image'] = $model->image->getPath(); | ||
| 118 | + | ||
| 119 | + | ||
| 120 | + $resultMicrodata = new MicrodataFabric(); | ||
| 121 | + $resultMicrodata = $resultMicrodata::createJsonFromArticle($jsonLdMicrodata)->toJson(); | ||
| 122 | + #die(var_dump(htmlspecialchars($resultMicrodata))); | ||
| 123 | + | ||
| 124 | + | ||
| 74 | $model->views +=1; | 125 | $model->views +=1; |
| 75 | $model->save(); | 126 | $model->save(); |
| 76 | 127 | ||
| @@ -84,6 +135,7 @@ | @@ -84,6 +135,7 @@ | ||
| 84 | [ | 135 | [ |
| 85 | 'tags' => $tags, | 136 | 'tags' => $tags, |
| 86 | 'model' => $model, | 137 | 'model' => $model, |
| 138 | + 'jsMicrodata' => $resultMicrodata | ||
| 87 | ] | 139 | ] |
| 88 | ); | 140 | ); |
| 89 | } | 141 | } |
frontend/microdata/ArticleMicrodata.php
| @@ -13,7 +13,15 @@ class ArticleMicrodata extends Microdata | @@ -13,7 +13,15 @@ class ArticleMicrodata extends Microdata | ||
| 13 | # массив, который составляет из себя реально существующие пары свойство/значение | 13 | # массив, который составляет из себя реально существующие пары свойство/значение |
| 14 | # !!! так же тут нету пар с пустым значением | 14 | # !!! так же тут нету пар с пустым значением |
| 15 | public $constructArray=[]; | 15 | public $constructArray=[]; |
| 16 | - | 16 | + public $mainEntityOfPage = null; |
| 17 | + public $headLine = null; | ||
| 18 | + public $image = null; | ||
| 19 | + public $datePublished = null; | ||
| 20 | + public $dateModified = null; | ||
| 21 | + public $author = null; | ||
| 22 | + public $publisher = null; | ||
| 23 | + public $description = null; | ||
| 24 | + public $headline = null; | ||
| 17 | public function __construct(array $config = []) | 25 | public function __construct(array $config = []) |
| 18 | { | 26 | { |
| 19 | 27 | ||
| @@ -38,7 +46,7 @@ class ArticleMicrodata extends Microdata | @@ -38,7 +46,7 @@ class ArticleMicrodata extends Microdata | ||
| 38 | $test=[]; | 46 | $test=[]; |
| 39 | foreach ($this->constructArray as $key=>$value) | 47 | foreach ($this->constructArray as $key=>$value) |
| 40 | { | 48 | { |
| 41 | - if($key=='type')$key='@'.$key; | 49 | + if ($key == 'type' || $key == 'context') $key = '@' . $key; |
| 42 | $test[$key]=$value; | 50 | $test[$key]=$value; |
| 43 | } | 51 | } |
| 44 | $resultJson1=json_encode($test); | 52 | $resultJson1=json_encode($test); |
frontend/views/blog/_article.php
| @@ -47,7 +47,7 @@ $imageHeight = 240; | @@ -47,7 +47,7 @@ $imageHeight = 240; | ||
| 47 | <div class="blog-views-ico"><?= $model->views ?></div> | 47 | <div class="blog-views-ico"><?= $model->views ?></div> |
| 48 | </div> | 48 | </div> |
| 49 | </div> | 49 | </div> |
| 50 | - <div class="blog-list-link" itemprop="author" itemscope itemtype="https://schema.org/Person"> | 50 | + <div class="blog-list-link"> |
| 51 | <a href="<?= Url::to(['alias' => $model->language->alias]) ?>" itemprop="description"> | 51 | <a href="<?= Url::to(['alias' => $model->language->alias]) ?>" itemprop="description"> |
| 52 | <span><?= $model->body_preview ?></span></a> | 52 | <span><?= $model->body_preview ?></span></a> |
| 53 | <meta itemprop="name" content="<?= Url::home(true); ?>"/> | 53 | <meta itemprop="name" content="<?= Url::home(true); ?>"/> |
| @@ -57,8 +57,6 @@ $imageHeight = 240; | @@ -57,8 +57,6 @@ $imageHeight = 240; | ||
| 57 | <?php foreach ($model->tags as $tag) { ?> | 57 | <?php foreach ($model->tags as $tag) { ?> |
| 58 | <a itemprop="mainEntityOfPage" href="<?= Url::to(['alias' => $tag->language->alias]) ?>" | 58 | <a itemprop="mainEntityOfPage" href="<?= Url::to(['alias' => $tag->language->alias]) ?>" |
| 59 | itemprop="name"><?= $tag->title ?></a> | 59 | itemprop="name"><?= $tag->title ?></a> |
| 60 | - | ||
| 61 | - | ||
| 62 | <?php } ?> | 60 | <?php } ?> |
| 63 | </div> | 61 | </div> |
| 64 | <?php } ?> | 62 | <?php } ?> |
frontend/views/blog/view.php
| @@ -11,6 +11,7 @@ | @@ -11,6 +11,7 @@ | ||
| 11 | * @var Article $model | 11 | * @var Article $model |
| 12 | * @var Tag[] $tags | 12 | * @var Tag[] $tags |
| 13 | * @var \artbox\core\forms\Module $moduleComment | 13 | * @var \artbox\core\forms\Module $moduleComment |
| 14 | + * @var $jsMicrodata ==> JsonLD article microdata | ||
| 14 | */ | 15 | */ |
| 15 | 16 | ||
| 16 | $this->params[ 'breadcrumbs' ][] = [ | 17 | $this->params[ 'breadcrumbs' ][] = [ |
| @@ -43,7 +44,7 @@ | @@ -43,7 +44,7 @@ | ||
| 43 | ?> | 44 | ?> |
| 44 | 45 | ||
| 45 | 46 | ||
| 46 | - | 47 | +<?= $jsMicrodata; ?> |
| 47 | <section class="section-service-page section-package-page"> | 48 | <section class="section-service-page section-package-page"> |
| 48 | <div class="container"> | 49 | <div class="container"> |
| 49 | <div class="row"> | 50 | <div class="row"> |