Доступні ціни > Покупка в кредит > Швидка доставка по Україні'; /** * @var \common\models\catalog\Categor0y */ public $category; /** * @var array */ public $options; /** * @var integer */ public $languageId; /** * @var string */ protected $mode; /** * @var string */ protected $title = ''; /** * @var string */ protected $description = ''; /** * @var string */ protected $h1 = ''; /** * @var string */ protected $robots = ''; /** * @var string */ protected $text = ''; /** * @var Alias */ public $categoryAlias; /** * @var array */ protected $templates = []; protected function countOptions() { return count($this->options); } /** * @inheritdoc */ public function init() { $this->selectMode(); $this->generateData(); $this->generateRobots(); } protected function selectMode() { if (empty($this->options)) { $this->mode = self::SINGLE_CATEGORY; } elseif ($this->countOptions() === 1) { $this->mode = self::ONE_OPTION; } elseif ($this->countOptions() === 2) { $this->mode = self::TWO_OPTIONS; } else { $this->mode = self::MANY; } } private function selectH1() { // if (!empty($this->categoryAlias->h1)) { // $this->h1 = $this->categoryAlias->h1; // } else { $this->h1 = $this->category->lang->title; // } } protected function generateData() { $this->selectH1(); $this->selectTitle(); $this->selectDescription(); } protected function selectTitle() { switch ($this->mode) { case self::SINGLE_CATEGORY: $this->title = $this->h1 . self::TITLE_TEMPLATE; break; case self::ONE_OPTION: $this->title = $this->h1 . ' ' . $this->options[0]->title . self::TITLE_TEMPLATE; break; case self::TWO_OPTIONS: $this->title = $this->h1 . ' ' . $this->options[0]->title . ' ' . $this->options[1]->title . self::TITLE_TEMPLATE; break; default: $this->title = $this->h1 . self::TITLE_TEMPLATE; } } protected function selectDescription() { switch ($this->mode) { case self::SINGLE_CATEGORY: $this->description = str_replace('{inner text}',$this->h1,self::DESC_TEMPLATE); break; case self::ONE_OPTION: $this->description = str_replace( '{inner text}', $this->h1 . ' ' . $this->options[0]->title, self::DESC_TEMPLATE ); break; case self::TWO_OPTIONS: $this->description = str_replace( '{inner text}', $this->h1 . ' ' . $this->options[0]->title . ' ' . $this->options[1]->title, self::DESC_TEMPLATE ); break; default: $this->description = str_replace('{inner text}',$this->h1,self::DESC_TEMPLATE); } } protected function generateRobots() { switch ($this->mode) { case self::SINGLE_CATEGORY: $this->robots = 'index, follow'; case self::ONE_OPTION : if (!empty($this->template) && !$this->template->isBasic) { $this->robots = $this->template->robots; } else { $this->robots = 'index, follow'; } break; case self::TWO_OPTIONS: if (!empty($this->template) && !$this->template->isBasic) { $this->robots = $this->template->robots; } else { $this->robots = 'index, follow'; } break; case self::MANY: $this->robots = 'noindex, nofollow'; break; } } public function getFields(): string { return ''; } public function getSeoText(): string { return $this->text ?? ''; } public function getId() { return 0; } public function getTitle(): string { return $this->title ?? ''; } public function getDesc(): string { return $this->description ?? ''; } public function getH1(): string { return mb_strtoupper(mb_substr($this->h1, 0, 1)).mb_strtolower(mb_substr($this->h1, 1)) ?? ''; } public function getText(): string { return $this->text ?? ''; } public function getRobots(): string { return $this->robots ?? ''; } }