Page.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace addons\cms\controller;
  3. use addons\cms\library\Service;
  4. use addons\cms\model\Fields;
  5. use addons\cms\model\Page as PageModel;
  6. use addons\cms\model\SpiderLog;
  7. use think\Config;
  8. /**
  9. * CMS单页控制器
  10. * Class Page
  11. * @package addons\cms\controller
  12. */
  13. class Page extends Base
  14. {
  15. public function index()
  16. {
  17. $diyname = $this->request->param('diyname');
  18. if ($diyname && !is_numeric($diyname)) {
  19. $page = PageModel::getByDiyname($diyname);
  20. } else {
  21. $id = $diyname ? $diyname : $this->request->param('id', '');
  22. $page = PageModel::get($id);
  23. }
  24. if (!$page || $page['status'] != 'normal') {
  25. $this->error(__('No specified page found'));
  26. }
  27. $page->setInc('views');
  28. Service::appendTextAndList('page', 0, $page);
  29. $this->view->assign("__PAGE__", $page);
  30. $channel = \addons\cms\model\Channel::getChannelByLinktype('page', $page['id']);
  31. $this->view->assign("__CHANNEL__", $channel);
  32. SpiderLog::record('page', $page['id']);
  33. //设置TKD
  34. Config::set('cms.title', isset($page['seotitle']) && $page['seotitle'] ? $page['seotitle'] : $page['title']);
  35. Config::set('cms.keywords', $page['keywords']);
  36. Config::set('cms.description', $page['description']);
  37. Config::set('cms.image', isset($page['image']) && $page['image'] ? cdnurl($page['image'], true) : '');
  38. $template = preg_replace("/\.html$/i", "", $page['showtpl'] ? $page['showtpl'] : 'page');
  39. return $this->view->fetch('/' . $template);
  40. }
  41. /**
  42. * 赞与踩
  43. */
  44. public function vote()
  45. {
  46. $id = (int)$this->request->post("id");
  47. $type = trim($this->request->post("type", ""));
  48. if (!$id || !$type) {
  49. $this->error(__('Operation failed'));
  50. }
  51. $page = \addons\cms\model\Page::get($id);
  52. if (!$page) {
  53. $this->error(__('No specified page found'));
  54. }
  55. $page->where('id', $id)->setInc($type === 'like' ? 'likes' : 'dislikes', 1);
  56. $page = \addons\cms\model\Page::get($id);
  57. $this->success(__('Operation completed'), null, ['likes' => $page->likes, 'dislikes' => $page->dislikes, 'likeratio' => $page->likeratio]);
  58. }
  59. }