Passer au contenu principal

Vue d’ensemble de Feedable Core

feedable-core est un package Composer qui isole les helpers du cœur de Feedable ainsi que ses pilotes intégrés.
En l’intégrant à un nouveau projet Laravel, vous pouvez réutiliser les mêmes bases que le starter kit.

Classes Response

Rss2Response et JsonFeedResponse permettent de fixer le format de sortie.
Pour une configuration où l’utilisateur choisit le format, utilisez 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 est un objet d’élément unifié partagé entre RSS et JSON Feed.
Author est un objet destiné au champ authors, créé avec Author::make().
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()],
);

Helpers Support

AbsoluteUri::resolve()

Convertit un chemin relatif en chemin absolu.
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);
    }
});

Création d’un pilote personnalisé

1) Ajouter directement au starter kit

Le starter kit étant une application Laravel classique, vous pouvez ajouter une route dans routes/web.php et l’implémenter dans un contrôleur (ou une classe invokable).
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) Ajouter en tant que package Composer

Pour une réutilisation dans plusieurs projets, il est plus pratique d’enregistrer les routes dans un ServiceProvider.
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) Enregistrer les informations via Driver::about() (optionnel)

L’enregistrement dans Driver::about() fournit les métadonnées affichées dans la liste des sites pris en charge.
Le pilote fonctionne même sans cet enregistrement.

Référence : pilote pour le blog Laravel

Consultez le pilote pour le blog officiel Laravel à titre d’exemple d’implémentation.
Dernière modification le 13 juillet 2026