Essentials

Configuration

Full configuration reference for Filament Blog.

Publish the config file:

Terminal
php artisan vendor:publish --tag=filament-blog-config

Full reference

config/filament-blog.php
return [
    /*
    |--------------------------------------------------------------------------
    | Route prefix
    |--------------------------------------------------------------------------
    | The URI prefix for all blog routes when public-routes mode is enabled.
    | Used as: /{prefix}, /{prefix}/{slug}, /{prefix}/category/{slug}, etc.
    */
    'prefix' => 'blog',

    /*
    |--------------------------------------------------------------------------
    | Layout view
    |--------------------------------------------------------------------------
    | The Blade layout the shipped page views extend (when public-routes mode
    | is enabled). Must define a @yield('content') slot. Ignored in headless
    | mode.
    */
    'layout' => 'layouts.app',

    /*
    |--------------------------------------------------------------------------
    | Author model
    |--------------------------------------------------------------------------
    | The Eloquent model used as the post author. Must have an integer or
    | string primary key matching the type of `users.id`.
    */
    'author_model' => \App\Models\User::class,

    /*
    |--------------------------------------------------------------------------
    | Posts per page
    |--------------------------------------------------------------------------
    | Used by the index/category/tag listing pages.
    */
    'per_page' => 12,

    /*
    |--------------------------------------------------------------------------
    | Feature flags
    |--------------------------------------------------------------------------
    | All opt-in. Defaults match the headless install — flip flags to enable.
    */
    'features' => [
        // Register /blog, /blog/{slug}, /blog/category/{slug}, signed
        // /blog/preview/{post}. See: getting-started/public-routes-mode
        'public_routes' => false,

        // Register /blog/feed (RSS 2.0). Independent of public_routes —
        // when enabled alone, only the feed route is registered.
        'feed' => false,

        // Hint for the BlogSitemapGenerator. Today the helper works
        // regardless; the flag is reserved for an auto-discovery hook
        // tracked in the Phase 3 roadmap.
        'sitemap' => false,

        // Show TagResource in the admin nav, the multi-select tags field
        // on the Post form, and the /blog/tag/{slug} archive route.
        // See: essentials/tags
        'tags' => false,

        // Use SpatieMediaLibraryFileUpload for the featured-image field
        // when both this flag is on AND spatie/laravel-medialibrary is
        // installed. See: essentials/media-library
        'media_library' => false,
    ],

    /*
    |--------------------------------------------------------------------------
    | RSS feed metadata
    |--------------------------------------------------------------------------
    */
    'feed' => [
        'title' => null,         // falls back to config('app.name')
        'description' => null,
        'author_email' => null,  // RSS <author> tag email
    ],

    /*
    |--------------------------------------------------------------------------
    | JSON-LD publisher block
    |--------------------------------------------------------------------------
    | Used by <x-blog::structured-data> and the Post::getDynamicSEOData()
    | Article schema. Leave nulls to omit fields.
    */
    'publisher' => [
        'name' => null,    // Organization name
        'url' => null,     // Organization URL
        'logo' => null,    // Path used with asset()
    ],

    /*
    |--------------------------------------------------------------------------
    | Table names
    |--------------------------------------------------------------------------
    | Override if blog_posts/blog_categories collide with existing tables in
    | your application. Migrations and models pick these up.
    */
    'tables' => [
        'posts' => 'blog_posts',
        'categories' => 'blog_categories',
    ],
];

Sitemap integration

Add blog URLs to your sitemap generation:

GenerateSitemapCommand.php
use ManukMinasyan\FilamentBlog\BlogSitemapGenerator;
use Spatie\Sitemap\Sitemap;

$sitemap = Sitemap::create();
BlogSitemapGenerator::addToSitemap($sitemap);
$sitemap->writeToFile(public_path('sitemap.xml'));

The generator is route-aware — it only adds URLs for routes that exist in your application.

Customizing views

Publish all Blade page + component views:

Terminal
php artisan vendor:publish --tag=filament-blog-views

Published files go to:

  • resources/views/vendor/blog/components/ — the publishable components used in headless mode
  • resources/views/vendor/blog/pages/ — the page views used in public-routes mode

Edit them to match your design system. Once published, the package no longer serves its own copies of those files.

Customizing translations

Terminal
php artisan vendor:publish --tag=filament-blog-translations

(No translations ship by default; this tag exists for future localization.)