RssController.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Article;
  4. use App\Models\System;
  5. use Rss;
  6. class RssController extends Controller
  7. {
  8. public function index()
  9. {
  10. $channel = [
  11. 'title' => System::keyValue('title'),
  12. 'link' => route('rss'),
  13. 'description' => $this->stringFormat(System::keyValue('seo_desc')),
  14. ];
  15. $rss = Rss::channel($channel);
  16. $articles = Article::query()->orderBy('id', 'desc')->simplePaginate(20);
  17. if ($articles) {
  18. foreach ($articles as $article) {
  19. $item = [
  20. 'title' => $article->title,
  21. 'description' => $this->stringFormat($article->desc),
  22. 'link' => route('article', ['id' => $article->id]),
  23. 'pubDate' => date('Y-m-d', strtotime($article->created_at))
  24. ];
  25. $rss->item($item);
  26. }
  27. }
  28. return response($rss, 200, ['Content-Type' => 'text/xml']);
  29. }
  30. private function stringFormat($string)
  31. {
  32. return sprintf("<![CDATA[%s]]>", $string);
  33. }
  34. }