CommonController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers\Home\Blog;
  3. use App\Models\Blog\Article;
  4. use App\Models\Blog\ArticleTag;
  5. use App\Models\Blog\Category;
  6. use App\Models\Blog\Tag;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use Illuminate\Support\Facades\Auth;
  10. class CommonController extends Controller
  11. {
  12. /* sidebar */
  13. public function sidebar(&$data)
  14. {
  15. $data['sidebar_tags'] = $this->sidebarTags();
  16. $data['sidebar_categories'] = $this->sidebarCategories();
  17. $data['sidebar_hots'] = $this->hotArticles();
  18. $data['sidebar_latest'] = $this->latestArticles();
  19. $data['sidebar_populars'] = $this->popularArticles();
  20. }
  21. protected function sidebarTags()
  22. {
  23. $tags = Tag::select('tag_name')
  24. ->inRandomOrder()
  25. // ->orderBy('tag_name')
  26. ->limit(config('vienblog.sidebar.tag.count'))
  27. ->get();
  28. return $this->parseToArray($tags);
  29. }
  30. protected function sidebarCategories()
  31. {
  32. $categories = Category::select('cate_name')
  33. // ->orderBy('cate_name')
  34. ->inRandomOrder()
  35. ->limit(config('vienblog.sidebar.category.count'))
  36. ->get();
  37. return $this->parseToArray($categories);
  38. }
  39. protected function hotArticles()
  40. {
  41. $articles = Article::select('slug', 'title', 'read_count')
  42. ->orderBy('read_count', 'desc')
  43. ->limit(config('vienblog.sidebar.hot.count'))
  44. ->get();
  45. return $this->parseToArray($articles);
  46. }
  47. protected function latestArticles()
  48. {
  49. $articles = Article::select('slug', 'title', 'read_count')
  50. ->orderBy('created_at', 'desc')
  51. ->limit(config('vienblog.sidebar.latest.count'))
  52. ->get();
  53. return $this->parseToArray($articles);
  54. }
  55. protected function popularArticles()
  56. {
  57. $articles = Article::select('slug', 'title', 'read_count')
  58. ->orderBy('updated_at', 'desc')
  59. ->limit(config('vienblog.sidebar.popular.count'))
  60. ->get();
  61. return $this->parseToArray($articles);
  62. }
  63. }