Zum Hauptinhalt springen

Überblick über Feedable Core

feedable-core ist ein Composer-Paket, das die Core-Helfer und die eingebauten Treiber von Feedable separat bereitstellt.
Wenn Sie es in ein neues Laravel-Projekt einbinden, können Sie dieselbe Grundlage wie beim Starter-Kit wiederverwenden.

Response-Klassen

Mit Rss2Response und JsonFeedResponse können Sie das Ausgabeformat festlegen.
Wenn Nutzer das Format wählen können sollen, verwenden Sie ResponseFactory.
use Revolution\Feedable\Core\Response\Rss2Response;

return new Rss2Response(
    title: $title,
    items: $items,
);
use Revolution\Feedable\Core\Enums\Format;
use Revolution\Feedable\Core\Response\ResponseFactory;

Route::get('feed.{format?}', function (Format $format = Format::RSS) use ($title, $items) {
    return ResponseFactory::format($format)->make(
        title: $title,
        items: $items,
    );
});

FeedItem / Author

FeedItem ist ein für RSS und JSON Feed vereinheitlichtes Item-Objekt.
Author ist ein Objekt für das Feld authors und wird mit Author::make() erzeugt.
use Revolution\Feedable\Core\Elements\Author;
use Revolution\Feedable\Core\Elements\FeedItem;

$item = new FeedItem(
    id: $url,
    url: $url,
    title: $title,
    summary: $summary,
    authors: [Author::make(name: $authorName)->toArray()],
);

Support-Helfer

AbsoluteUri::resolve()

Wandelt einen relativen Pfad in einen absoluten Pfad um.
use Revolution\Feedable\Core\Support\AbsoluteUri;

$absolute = AbsoluteUri::resolve('https://example.com/', '/images/sample.jpg');
use Revolution\Feedable\Core\Support\RSS;

$xml = RSS::filterLinks($rss, $links);

RSS::each()

use DOMElement;
use Revolution\Feedable\Core\Support\RSS;

$xml = RSS::each($rss, function (DOMElement $item) {
    $title = $item->getElementsByTagName('title')->item(0);

    if ($title && str_contains($title->textContent, 'NGワード')) {
        $item->parentNode?->removeChild($item);
    }
});

Eigene Treiber erstellen

1) Direkt zum Starter-Kit hinzufügen

Da das Starter-Kit eine gewöhnliche Laravel-Anwendung ist, können Sie in routes/web.php eine Route ergänzen und die Umsetzung in einem Controller (oder einer invokable-Klasse) vornehmen.
use App\Http\Controllers\CustomFeedController;
use Revolution\Feedable\Core\Enums\Format;

Route::get('/custom/site.{format?}', CustomFeedController::class)
    ->whereIn('format', array_column(Format::cases(), 'value'));

2) Als Composer-Paket hinzufügen

Wenn Sie den Treiber in mehreren Projekten wiederverwenden möchten, empfiehlt sich ein Aufbau, bei dem die Routen in einem ServiceProvider registriert werden.
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Route;

class CustomDriverServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Route::middleware('web')->group(__DIR__.'/../routes/web.php');
    }
}

3) Informationen mit Driver::about() registrieren (optional)

Die Registrierung über Driver::about() liefert Metadaten für die Liste der unterstützten Sites.
Der Treiber selbst funktioniert auch ohne Registrierung.

Referenz: Laravel-Blog-Treiber

Als Implementierungsbeispiel sehen Sie sich den Treiber für den offiziellen Laravel-Blog an.
Zuletzt geändert am 13. Juli 2026