Blame view

frontend/microdata/ProductMicrodata.php 1.75 KB
cfb947e6   alex   Микроданные для у...
1
2
3
4
5
6
7
8
9
  <?php
  namespace frontend\microdata;
  
  use yii\base\BaseObject;
  
  
  class ProductMicrodata extends  Microdata
  {
  
3fafe556   alex   Микроразметка для...
10
  
cfb947e6   alex   Микроданные для у...
11
12
13
14
15
      public $brand=null;
      public $aggregateRating=null;
      public $offers=null;
      public $description=null;
      public $npm=null;
d38bb7e7   alex   пагинация в блоге
16
  	public $type = null;
cfb947e6   alex   Микроданные для у...
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  
  
  
      # массив, который составляет из себя реально существующие пары свойство/значение
      # !!! так же тут нету пар с пустым значением
      public $constructArray=[];
  
      public function __construct(array $config = [])
      {
  
          # обрезаю входящие свойства, работаем только с реально существующими
          foreach ($config as $key=>$value){
              if(!property_exists(self::class,$key))
              {
                  unset($config[$key]);
              }
              elseif($value==null || $value===false || $value=='')
              {
                  unset($config[$key]);
              }
  
  
  
          }
  
          $this->constructArray=$config;
  
          parent::__construct($config);
      }
  
cfb947e6   alex   Микроданные для у...
47
48
49
50
      public function toJson(): string
      {
          $resultJson=" <script type=\"application/ld+json\">";
  
3fafe556   alex   Микроразметка для...
51
          $finalArray=[];
cfb947e6   alex   Микроданные для у...
52
53
          foreach ($this->constructArray as $key=>$value)
          {
3fafe556   alex   Микроразметка для...
54
55
              if($key=='type' || $key=='context')$key='@'.$key;
              $finalArray[$key]=$value;
cfb947e6   alex   Микроданные для у...
56
57
          }
  
3fafe556   alex   Микроразметка для...
58
          $resultJson1=json_encode($finalArray,JSON_UNESCAPED_UNICODE);
cfb947e6   alex   Микроданные для у...
59
60
61
          $resultJson1=str_replace('\/','/',$resultJson1);
          $resultJson.=$resultJson1;
          $resultJson.='</script>';
3fafe556   alex   Микроразметка для...
62
  
cfb947e6   alex   Микроданные для у...
63
64
65
66
          return $resultJson;
      }
  
  
3fafe556   alex   Микроразметка для...
67
  
cfb947e6   alex   Микроданные для у...
68
69
70
71
72
73
74
75
      function add($key,$value)
      {
          if ($value!==null)
              $this->constructArray[$key]=$value;
  
      }
  
  
cfb947e6   alex   Микроданные для у...
76
77
78
79
80
81
82
83
  
  
  
  
  
  
  
  }