Реалізація підписки на RSS/Atom стрічку сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація підписки на RSS/Atom стрічку сайту
Проста
~1 робочий день
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація RSS та Atom підписки на контент

RSS та Atom-фіди дозволяють читачам підписатися на оновлення через агрегатори (Feedly, Inoreader, Reeder). Фіди також використовуються агрегаторами новин та SEO-інструментами для індексації свіжого контенту.

Laravel: RSS фід

use Illuminate\Http\Response;
use Illuminate\Support\Facades\Cache;

class FeedController extends Controller
{
    public function rss(): Response
    {
        $feed = Cache::remember('rss_feed', 900, fn() => $this->buildRss());  // 15 хвилин

        return response($feed, 200)->header('Content-Type', 'application/rss+xml; charset=utf-8');
    }

    private function buildRss(): string
    {
        $articles = Article::published()
            ->latest('published_at')
            ->limit(50)
            ->get();

        $lastBuild = $articles->first()?->published_at ?? now();

        return view('feeds.rss', compact('articles', 'lastBuild'))->render();
    }

    public function atom(): Response
    {
        $feed = Cache::remember('atom_feed', 900, fn() => $this->buildAtom());

        return response($feed, 200)->header('Content-Type', 'application/atom+xml; charset=utf-8');
    }
}
<!-- resources/views/feeds/rss.blade.php -->
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>{{ config('app.name') }}</title>
    <link>{{ url('/') }}</link>
    <description>{{ config('app.description') }}</description>
    <language>uk</language>
    <lastBuildDate>{{ $lastBuild->toRssString() }}</lastBuildDate>
    <atom:link href="{{ route('feed.rss') }}" rel="self" type="application/rss+xml"/>
    <image>
      <url>{{ url('/logo.png') }}</url>
      <title>{{ config('app.name') }}</title>
      <link>{{ url('/') }}</link>
    </image>

    @foreach($articles as $article)
    <item>
      <title><![CDATA[{{ $article->title }}]]></title>
      <link>{{ route('articles.show', $article->slug) }}</link>
      <guid isPermaLink="true">{{ route('articles.show', $article->slug) }}</guid>
      <pubDate>{{ $article->published_at->toRssString() }}</pubDate>
      <author>{{ $article->author->email }} ({{ $article->author->name }})</author>
      <description><![CDATA[{{ $article->excerpt }}]]></description>
      @if($article->cover_image)
      <media:content url="{{ $article->cover_url }}" medium="image"/>
      @endif
      @foreach($article->tags as $tag)
      <category>{{ $tag->name }}</category>
      @endforeach
    </item>
    @endforeach
  </channel>
</rss>

Маршрути та автообнаруження

// routes/web.php
Route::get('/feed', [FeedController::class, 'rss'])->name('feed.rss');
Route::get('/feed/atom', [FeedController::class, 'atom'])->name('feed.atom');
Route::get('/feed/{category}', [FeedController::class, 'category'])->name('feed.category');
<!-- У <head> для автообнаруження браузером та агрегаторами -->
<link rel="alternate" type="application/rss+xml" title="{{ config('app.name') }} RSS" href="{{ route('feed.rss') }}">
<link rel="alternate" type="application/atom+xml" title="{{ config('app.name') }} Atom" href="{{ route('feed.atom') }}">

Термін реалізації

RSS + Atom фід з кешуванням та autodiscovery для Laravel: 0.5–1 день. З фідами по категоріям/тегам та категоризацією: 1–2 дні.