LanguageMarkupWidget.php
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
* Created by PhpStorm.
* User: timur
* Date: 04.12.17
* Time: 14:52
*/
namespace frontend\widgets;
use artbox\core\models\Language;
use yii\base\InvalidConfigException;
use yii\base\Widget;
use yii\helpers\VarDumper;
class LanguageMarkupWidget extends Widget
{
/**
* @var $model \artbox\core\models\Page
*/
public $model;
/**
* @var $aliases \artbox\core\models\Alias[]
*/
public $aliases;
public $languages = ['en', 'ru', 'ua']; // use in all languages that we have
private $renderLinks = [];
public function init()
{
if (!isset($this->model)){
if ( !isset($this->aliases) ){
throw new InvalidConfigException("need model with lang or array of aliases to same page with different langs");
}
else{
$languages = Language::find()->indexBy('id')->all();
//VarDumper::dump($languages[1]->url,10,1);die();
foreach ($this->aliases as $alias){
if ( in_array($languages[$alias->language_id]->url, $this->languages) ){
$this->languageMarkup($alias);
}
}
}
}
else{
foreach ($this->model->langs as $pageLang){
if (in_array($pageLang->language->url, $this->languages)){
$this->languageMarkup($pageLang->alias);
}
}
}
}
/**
* @param $alias \artbox\core\models\Alias
*/
private function languageMarkup($alias){
$route = json_decode($alias->route)->{'0'};
$url = \yii\helpers\Url::toRoute(
[
$route,
'alias' => $alias,
'language_id' => $alias->language_id
]
);
$locale = '';
if ( $alias->language_id === 2 ){
$locale = 'ru-UA';
}
elseif ($alias->language_id === 3){
$locale = 'uk-UA';
}
elseif ($alias->language_id === 1){
$locale = 'en-UA';
}
$this->renderLinks[] = "<link rel=\"alternate\" hreflang=\"$locale\" href=\"$url\" />";
}
public function run()
{
foreach ($this->renderLinks as $renderLink){
echo $renderLink;
}
}
}