SeoOption.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * SeoOption.php UTF-8
  4. * SEO配置处理
  5. *
  6. * @date : 2019/4/17 12:03
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.5
  11. */
  12. namespace huo\controller\option;
  13. use huo\logic\posts\PostsLogic;
  14. use huo\model\game\CategoryModel;
  15. use huo\model\game\GameModel;
  16. use huo\model\game\GiftModel;
  17. use huolib\constant\OptionConst;
  18. class SeoOption extends Option {
  19. /**
  20. * 获取网站seo优化内容
  21. *
  22. * @param $option_name
  23. * @param $game_id
  24. * @param $gift_id
  25. * @param $news_id
  26. *
  27. * @return array|bool|mixed|string
  28. */
  29. public function getSeoValue($option_name, $game_id = 0, $gift_id = 0, $news_id = 0) {
  30. $_data = $this->getValue($option_name);
  31. if (empty($_data)) {
  32. return array();
  33. }
  34. $_data['title'] = $this->replaceSeoValue($_data['title'], $game_id, $gift_id, $news_id);
  35. $_data['keyword'] = $this->replaceSeoValue($_data['keyword'], $game_id, $gift_id, $news_id);
  36. $_data['description'] = $this->replaceSeoValue($_data['description'], $game_id, $gift_id, $news_id);
  37. return $_data;
  38. }
  39. /**
  40. * 统一替换seo优化中的变量
  41. *
  42. * @param $value
  43. * @param $game_id
  44. * @param $gift_id
  45. * @param $news_id
  46. *
  47. * @return mixed
  48. */
  49. private function replaceSeoValue($value, $game_id = 0, $gift_id = 0, $news_id = 0) {
  50. if (strpos($value, OptionConst::SEO_REPLACE_WEBNAME) !== false) {
  51. $_wap_basic = $this->getValue(OptionConst::WAP_BASIC);
  52. if (!empty($_wap_basic)) {
  53. $_site_title = $_wap_basic[OptionConst::WAP_BASIC_SITE_NAME];
  54. if (!empty($_site_title)) {
  55. $value = str_replace(OptionConst::SEO_REPLACE_WEBNAME, $_site_title, $value);
  56. }
  57. }
  58. }
  59. if (!empty($game_id)) {
  60. $_game_model = new GameModel();
  61. $_game_name = (new GameModel())->getNameById($game_id);
  62. if (false !== strpos($value, OptionConst::SEO_REPLACE_GAMENAME)) {
  63. $value = str_replace(OptionConst::SEO_REPLACE_GAMENAME, $_game_name, $value);
  64. }
  65. $_game_type = $_game_model->getCategoryById($game_id);
  66. $_cate_model = new CategoryModel();
  67. $_category_name = $_cate_model->getNameByIds($_game_type);
  68. if (false !== strpos($value, OptionConst::SEO_REPLACE_GAMETYPE)) {
  69. $value = str_replace(OptionConst::SEO_REPLACE_GAMETYPE, $_category_name, $value);
  70. }
  71. }
  72. if (strpos($value, OptionConst::SEO_REPLACE_GIFTNAME) !== false) {
  73. if (!empty($gift_id)) {
  74. $_gift_name = (new GiftModel())->getNameById($gift_id);
  75. $value = str_replace(OptionConst::SEO_REPLACE_GIFTNAME, $_gift_name, $value);
  76. }
  77. }
  78. if (strpos($value, OptionConst::SEO_REPLACE_NEWSNAME) !== false) {
  79. if (!empty($news_id)) {
  80. $_news_data = (new PostsLogic())->getDetail($news_id);
  81. if (!empty($_news_data)) {
  82. $value = str_replace(OptionConst::SEO_REPLACE_NEWSNAME, $_news_data['title'], $value);
  83. }
  84. }
  85. }
  86. return $value;
  87. }
  88. }