From 2d393ae540d067f6fb20e087e59a6e4830c687ec Mon Sep 17 00:00:00 2001 From: dozer111 Date: Sat, 23 Jun 2018 13:23:46 +0300 Subject: [PATCH] добавил микроразметку JsonLD для новости --- frontend/controllers/BlogController.php | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- frontend/microdata/ArticleMicrodata.php | 12 ++++++++++-- frontend/views/blog/_article.php | 4 +--- frontend/views/blog/view.php | 3 ++- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/frontend/controllers/BlogController.php b/frontend/controllers/BlogController.php index b18ce43..ec21ee4 100755 --- a/frontend/controllers/BlogController.php +++ b/frontend/controllers/BlogController.php @@ -10,7 +10,8 @@ use yii\helpers\ArrayHelper; use yii\web\Controller; use yii\web\NotFoundHttpException; - + use frontend\microdata\MicrodataFabric; + use Yii; /** * Class BlogController @@ -70,7 +71,57 @@ public function actionView($id) { + + /** + * + + + + + + + */ + + + + + + $model = $this->findModel($id); + + $jsonLdMicrodata = [ + 'context' => 'http://schema.org', + "type" => "Article", + "mainEntityOfPage" => [ + "@type" => "WebPage", + "@id" => "https://google.com/article" + ], + "headline" => "Article headline", + "datePublished" => $model->created_at, + "dateModified" => $model->updated_at, + + # оставьте пока что этот участок + # author_id уже есть, если что, можно будет быстро его подключить +// "author"=> [ +// "@type"=> "Person", +// "name"=> "John Doe" +// ], + + "publisher" => [ + "@type" => "Organization", + "name" => Yii::t('app', 'ABC short'), + "description" => ($model->language->body_preview) ? $model->language->body_preview : $model->language->title, + + ]]; + + if ($model->image) $resultMicrodata['image'] = $model->image->getPath(); + + + $resultMicrodata = new MicrodataFabric(); + $resultMicrodata = $resultMicrodata::createJsonFromArticle($jsonLdMicrodata)->toJson(); + #die(var_dump(htmlspecialchars($resultMicrodata))); + + $model->views +=1; $model->save(); @@ -84,6 +135,7 @@ [ 'tags' => $tags, 'model' => $model, + 'jsMicrodata' => $resultMicrodata ] ); } diff --git a/frontend/microdata/ArticleMicrodata.php b/frontend/microdata/ArticleMicrodata.php index 05f7b11..d95e56e 100644 --- a/frontend/microdata/ArticleMicrodata.php +++ b/frontend/microdata/ArticleMicrodata.php @@ -13,7 +13,15 @@ class ArticleMicrodata extends Microdata # массив, который составляет из себя реально существующие пары свойство/значение # !!! так же тут нету пар с пустым значением public $constructArray=[]; - + public $mainEntityOfPage = null; + public $headLine = null; + public $image = null; + public $datePublished = null; + public $dateModified = null; + public $author = null; + public $publisher = null; + public $description = null; + public $headline = null; public function __construct(array $config = []) { @@ -38,7 +46,7 @@ class ArticleMicrodata extends Microdata $test=[]; foreach ($this->constructArray as $key=>$value) { - if($key=='type')$key='@'.$key; + if ($key == 'type' || $key == 'context') $key = '@' . $key; $test[$key]=$value; } $resultJson1=json_encode($test); diff --git a/frontend/views/blog/_article.php b/frontend/views/blog/_article.php index bd274fd..40b7ae6 100755 --- a/frontend/views/blog/_article.php +++ b/frontend/views/blog/_article.php @@ -47,7 +47,7 @@ $imageHeight = 240;
views ?>
-