SiteMapController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sdf_sky
  5. * Date: 2017/3/8
  6. * Time: 下午1:23
  7. */
  8. namespace App\Http\Controllers;
  9. use App\Models\Article;
  10. use App\Models\Question;
  11. use App\Models\Tag;
  12. use App\Models\User;
  13. use Carbon\Carbon;
  14. use Illuminate\Support\Facades\App;
  15. use Illuminate\Support\Facades\URL;
  16. class SiteMapController extends Controller
  17. {
  18. public function index(){
  19. $sitemap = App::make('sitemap');
  20. $sitemap->setCache('tipask.sitemap', 30);
  21. if (!$sitemap->isCached()) {
  22. /*静态链接*/
  23. $sitemap->add(URL::to(route('website.index')), null, '1.0', 'daily');
  24. $sitemap->add(URL::to(route('website.ask')), null, '1.0', 'daily');
  25. $sitemap->add(URL::to(route('website.topic')), null, '1.0', 'daily');
  26. $sitemap->add(URL::to(route('website.blog')), null, '1.0', 'daily');
  27. $sitemap->add(URL::to(route('website.user')), null, '0.9', 'daily');
  28. $sitemap->add(URL::to(route('website.shop')), null, '0.7', 'weekly');
  29. $sitemap->add(URL::to(route('website.experts')), null, '0.8', 'weekly');
  30. $sitemap->add(URL::to(route('auth.top.coins')), null, '0.7', 'weekly');
  31. $sitemap->add(URL::to(route('auth.top.answers')), null, '0.7', 'weekly');
  32. $sitemap->add(URL::to(route('auth.top.articles')), null, '0.7', 'weekly');
  33. $startTime = Carbon::now()->subMonth(12);
  34. /*问题*/
  35. $questions = Question::where("status", ">", 0)->where('created_at', '>', $startTime)->orderBy('created_at', 'desc')->take(2000)->get();
  36. foreach ($questions as $question) {
  37. $sitemap->add(URL::to(route('ask.question.detail', ['id' => $question->id])), $question->created_at, '0.9', 'daily');
  38. }
  39. /*文章*/
  40. $articles = Article::where("status", ">", 0)->where('created_at', '>', $startTime)->orderBy('created_at', 'desc')->take(1200)->get();
  41. foreach ($articles as $article) {
  42. $sitemap->add(URL::to(route('blog.article.detail', ['id' => $article->id])), $article->created_at, '0.9', 'daily');
  43. }
  44. /*话题*/
  45. $topics = Tag::where('created_at', '>', $startTime)->orderBy('created_at', 'desc')->take(500)->get();
  46. foreach ($topics as $topic) {
  47. $sitemap->add(URL::to(route('ask.tag.index', ['id' => $topic->id])), $topic->created_at, '0.8', 'daily');
  48. }
  49. /*用户*/
  50. $users = User::where("status", ">", 0)->where('created_at', '>', $startTime)->orderBy('created_at', 'desc')->take(500)->get();
  51. foreach ($users as $user) {
  52. $sitemap->add(URL::to(route('auth.space.index', ['id' => $user->id])), $user->created_at, '0.8', 'daily');
  53. }
  54. }
  55. return $sitemap->render('xml');
  56. }
  57. }