Commit 2d393ae540d067f6fb20e087e59a6e4830c687ec

Authored by alex
1 parent 1a64d964

добавил микроразметку JsonLD для новости

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">