Blame view

frontend/microdata/ArticleMicrodata.php 1.65 KB
cfb947e6   alex   Микроданные для у...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <?php
  
  namespace frontend\microdata;
  
  use yii\base\BaseObject;
  use frontend\microdata\Microdata;
  
  
  class ArticleMicrodata extends Microdata
  {
  
  
      # массив, который составляет из себя реально существующие пары свойство/значение
      # !!! так же тут нету пар с пустым значением
      public $constructArray=[];
2d393ae5   alex   добавил микроразм...
16
17
18
19
20
21
22
23
24
  	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;
cfb947e6   alex   Микроданные для у...
25
26
27
28
29
30
      public function __construct(array $config = [])
      {
  
          # обрезаю входящие свойства, работаем только с реально существующими
          foreach ($config as $key=>$value){
              if(!property_exists(self::class,$key))
cfb947e6   alex   Микроданные для у...
31
                  unset($config[$key]);
cfb947e6   alex   Микроданные для у...
32
              elseif($value==null || $value===false || $value=='')
cfb947e6   alex   Микроданные для у...
33
                  unset($config[$key]);
cfb947e6   alex   Микроданные для у...
34
35
36
37
38
39
40
41
  
          }
  
          $this->constructArray=$config;
  
          parent::__construct($config);
      }
  
cfb947e6   alex   Микроданные для у...
42
43
44
45
46
47
48
      public function toJson(): string
      {
          $resultJson=" <script type=\"application/ld+json\">";
  
          $test=[];
          foreach ($this->constructArray as $key=>$value)
          {
2d393ae5   alex   добавил микроразм...
49
  	        if ($key == 'type' || $key == 'context') $key = '@' . $key;
cfb947e6   alex   Микроданные для у...
50
51
52
53
54
55
56
57
58
59
              $test[$key]=$value;
          }
          $resultJson1=json_encode($test);
          $resultJson1=str_replace('\/','/',$resultJson1);
          $resultJson.=$resultJson1;
          $resultJson.='</script>';
          return $resultJson;
      }
  
  
cfb947e6   alex   Микроданные для у...
60
61
  
  }