Skip to content

Configuration

This guide covers all configuration options for both the core CMS and visual editing packages.

The main configuration file is config/filament-cms-core.php:

return [
/*
|--------------------------------------------------------------------------
| Content Blocks
|--------------------------------------------------------------------------
|
| Register content blocks for the builder. Each block must implement
| JFA\FilamentCMSCore\Contracts\ContentBlock.
|
*/
'content_blocks' => [
'default' => [
// Package defaults (auto-populated by FilamentCMSCorePlugin)
],
'custom' => [
App\CMS\Blocks\Hero::class,
App\CMS\Blocks\Cta::class,
App\CMS\Blocks\Team::class,
// ...
],
],
];

Register your custom content block classes:

'content_blocks' => [
'custom' => [
App\CMS\Blocks\Hero::class,
App\CMS\Blocks\Mission::class,
App\CMS\Blocks\Team::class,
App\CMS\Blocks\Testimonials::class,
],
],

The Livewire package publishes config/filament-cms-livewire.php:

return [
/*
|--------------------------------------------------------------------------
| Section Components Path
|--------------------------------------------------------------------------
|
| The namespace where frontend Livewire section components are located.
| The Page class uses this to resolve section components by slug.
|
*/
'sections_class_path' => 'App\\Livewire\\',
];

Defines where the CMS looks for frontend Livewire components:

'sections_class_path' => 'App\\Livewire\\',

Given a section with slug hero, the CMS resolves:

App\Livewire\Hero

If your components are in subdirectories:

'sections_class_path' => 'App\\Livewire\\Sections\\',

Resolves:

App\Livewire\Sections\Hero

Visual editing is configured in config/filament-cms-livewire.php:

return [
/*
|--------------------------------------------------------------------------
| Visual Editing
|--------------------------------------------------------------------------
|
| Control whether visual editing features are enabled. When disabled,
| renderField() outputs plain values and the contentUpdated listener
| becomes a no-op.
|
*/
'visual_editing' => [
'enabled' => env('VISUAL_EDITING_ENABLED', true),
],
];
VISUAL_EDITING_ENABLED=true

The ve-filament-cms-livewire package (if installed) provides its own separate configuration for middleware, image storage, and other advanced features.

app/Providers/Filament/AdminPanelProvider.php
use JFA\FilamentCMSCore\FilamentCMSCorePlugin;
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->colors(['primary' => Color::Amber])
->plugins([
FilamentCMSCorePlugin::make(),
FilamentShieldPlugin::make(),
]);
}
app/Providers/Filament/EditorPanelProvider.php
use JFA\FilamentCMSCore\FilamentCMSCorePlugin;
public function panel(Panel $panel): Panel
{
return $panel
->id('editor')
->path('editor')
->brandName('Content Editor')
->colors(['primary' => Color::Blue])
->plugins([
FilamentCMSCorePlugin::make(),
]);
}

Ensure your database supports JSON columns:

config/database.php
'default' => env('DB_CONNECTION', 'pgsql'),
'connections' => [
'pgsql' => [
// ...
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],
],
config/media-library.php
'disk_name' => env('MEDIA_DISK', 'public'),
'path_generator' => Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,
config/settings.php
'setting_model' => Spatie\LaravelSettings\Models\SettingsProperty::class,

No additional configuration required.

Standard web routes:

routes/web.php
use App\Livewire\Pages\HomePage;
use App\Livewire\Pages\About;
use App\Livewire\Pages\Services;
Route::get('/', HomePage::class)->name('home');
Route::get('/about', About::class)->name('about');
Route::get('/services', Services::class)->name('services');

Ensure your CSS includes Tailwind:

resources/css/app.css
@import 'tailwindcss';
@theme {
--color-primary: #f59e0b;
--color-primary-dark: #d97706;
}
  • Keep block registration in config (not hardcoded)
  • Use environment variables for feature flags
  • Configure image disk for your hosting environment
  • Set up proper database charset for JSON support
  • Use separate panels for different user roles