* @version : HUOSDK 8.5 */ namespace huo\controller\option; use huo\logic\posts\PostsLogic; use huo\model\game\CategoryModel; use huo\model\game\GameModel; use huo\model\game\GiftModel; use huolib\constant\OptionConst; class SeoOption extends Option { /** * 获取网站seo优化内容 * * @param $option_name * @param $game_id * @param $gift_id * @param $news_id * * @return array|bool|mixed|string */ public function getSeoValue($option_name, $game_id = 0, $gift_id = 0, $news_id = 0) { $_data = $this->getValue($option_name); if (empty($_data)) { return array(); } $_data['title'] = $this->replaceSeoValue($_data['title'], $game_id, $gift_id, $news_id); $_data['keyword'] = $this->replaceSeoValue($_data['keyword'], $game_id, $gift_id, $news_id); $_data['description'] = $this->replaceSeoValue($_data['description'], $game_id, $gift_id, $news_id); return $_data; } /** * 统一替换seo优化中的变量 * * @param $value * @param $game_id * @param $gift_id * @param $news_id * * @return mixed */ private function replaceSeoValue($value, $game_id = 0, $gift_id = 0, $news_id = 0) { if (strpos($value, OptionConst::SEO_REPLACE_WEBNAME) !== false) { $_wap_basic = $this->getValue(OptionConst::WAP_BASIC); if (!empty($_wap_basic)) { $_site_title = $_wap_basic[OptionConst::WAP_BASIC_SITE_NAME]; if (!empty($_site_title)) { $value = str_replace(OptionConst::SEO_REPLACE_WEBNAME, $_site_title, $value); } } } if (!empty($game_id)) { $_game_model = new GameModel(); $_game_name = (new GameModel())->getNameById($game_id); if (false !== strpos($value, OptionConst::SEO_REPLACE_GAMENAME)) { $value = str_replace(OptionConst::SEO_REPLACE_GAMENAME, $_game_name, $value); } $_game_type = $_game_model->getCategoryById($game_id); $_cate_model = new CategoryModel(); $_category_name = $_cate_model->getNameByIds($_game_type); if (false !== strpos($value, OptionConst::SEO_REPLACE_GAMETYPE)) { $value = str_replace(OptionConst::SEO_REPLACE_GAMETYPE, $_category_name, $value); } } if (strpos($value, OptionConst::SEO_REPLACE_GIFTNAME) !== false) { if (!empty($gift_id)) { $_gift_name = (new GiftModel())->getNameById($gift_id); $value = str_replace(OptionConst::SEO_REPLACE_GIFTNAME, $_gift_name, $value); } } if (strpos($value, OptionConst::SEO_REPLACE_NEWSNAME) !== false) { if (!empty($news_id)) { $_news_data = (new PostsLogic())->getDetail($news_id); if (!empty($_news_data)) { $value = str_replace(OptionConst::SEO_REPLACE_NEWSNAME, $_news_data['title'], $value); } } } return $value; } }