Search.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace addons\cms\controller\api;
  3. use addons\cms\library\FulltextSearch;
  4. use addons\cms\library\Service;
  5. use addons\cms\model\Archives;
  6. use addons\cms\model\SearchLog;
  7. use think\Config;
  8. use think\Session;
  9. /**
  10. * 搜索控制器
  11. * Class Search
  12. * @package addons\cms\controller
  13. */
  14. class Search extends Base
  15. {
  16. protected $noNeedLogin = ['index'];
  17. public function index()
  18. {
  19. $config = get_addon_config('cms');
  20. $search = $this->request->request("search", $this->request->request("q", ""));
  21. $search = mb_substr($search, 0, 100);
  22. $filterList = [];
  23. $orderList = [];
  24. $orderby = $this->request->get('orderby', '');
  25. $orderway = $this->request->get('orderway', '', 'strtolower');
  26. $params = ['q' => $search];
  27. if ($orderby) {
  28. $params['orderby'] = $orderby;
  29. }
  30. if ($orderway) {
  31. $params['orderway'] = $orderway;
  32. }
  33. //默认排序字段
  34. $orders = [
  35. ['name' => 'default', 'field' => 'weigh', 'title' => __('Default')],
  36. ['name' => 'views', 'field' => 'views', 'title' => __('Views')],
  37. ['name' => 'id', 'field' => 'id', 'title' => __('Post date')],
  38. ];
  39. //获取排序列表
  40. list($orderList, $orderby, $orderway) = Service::getOrderList($orderby, $orderway, $orders, $params);
  41. $pageList = Archives
  42. ::where('status', 'normal')
  43. ->whereNull('deletetime')
  44. ->where('title', 'like', "%{$search}%")
  45. ->order($orderby, $orderway)
  46. ->paginate(10, $config['pagemode'] == 'simple', ['type' => '\\addons\\cms\\library\\Bootstrap']);
  47. foreach($pageList as $item){
  48. $item->append(['images_list']);
  49. }
  50. $pageList->appends(array_filter($params));
  51. Config::set('cms.title', __("Search for %s", $search));
  52. $this->success('',[
  53. 'filterList'=>$filterList,
  54. 'orderList'=>$orderList,
  55. 'pageList'=>$pageList
  56. ]);
  57. }
  58. }