Configuration
Siteman CMS provides various configuration options to customize its behavior. After installation, you'll find the main configuration file at config/siteman.php.
Publishing Configuration
If you haven't already, publish the configuration file:
php artisan vendor:publish --tag="siteman-config"Configuration Options
Models
Customize which models Siteman uses for users:
'models' => [
'user' => 'App\Models\User',
],This allows you to use your own User model with custom attributes and relationships.
Themes
Register all available themes for your application:
'themes' => [
\Siteman\Cms\Theme\BlankTheme::class,
\App\Siteman\Themes\MyCustomTheme::class,
],The first theme in the array is used as the default. You can add multiple themes and switch between them per page or globally.
Learn more: Creating Themes
Middleware
Configure middleware applied to all Siteman frontend routes:
'middleware' => [
'web',
\Siteman\Cms\Http\Middleware\InjectAdminBar::class,
],The InjectAdminBar middleware adds an admin toolbar to pages when you're logged in, providing quick links to edit content.
Common customizations:
'middleware' => [
'web',
\Siteman\Cms\Http\Middleware\InjectAdminBar::class,
\App\Http\Middleware\TrackPageViews::class, // Add analytics
\App\Http\Middleware\CachePages::class, // Add caching
],Panel Configuration
Siteman integrates with Filament panels. Configure your panel in app/Providers/Filament/AdminPanelProvider.php:
use Siteman\Cms\SitemanPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
->id('admin')
->path('admin')
->login()
->colors([
'primary' => Color::Amber,
])
->plugin(SitemanPlugin::make())
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
->pages([
Pages\Dashboard::class,
])
->middleware([
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
AuthenticateSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class,
])
->authMiddleware([
Authenticate::class,
]);
}Key Panel Options
Panel Path: Change where your admin panel is accessed:
->path('dashboard') // Access at /dashboard instead of /adminLogin Customization: Customize the login page:
->login(\App\Filament\Pages\CustomLogin::class)Colors: Change the primary color:
use Filament\Support\Colors\Color;
->colors([
'primary' => Color::Blue,
])Branding: Add your logo and custom branding:
->brandName('My Site')
->brandLogo(asset('images/logo.svg'))
->darkMode(false)Database Configuration
Siteman uses your default database connection. If you need to use a different connection:
// In a service provider
use Siteman\Cms\Models\Page;
Page::query()->connection('siteman');Media Library Configuration
Siteman uses Spatie's Media Library for file uploads. Configure it in config/media-library.php:
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider"Common configurations:
// config/media-library.php
// Use S3 for storage
'disk_name' => 's3',
// Max file size (in KB)
'max_file_size' => 1024 * 10, // 10MB
// Path generator
'path_generator' => \Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,Learn more: Spatie Media Library Documentation
Permissions Configuration
Siteman uses Spatie's Laravel Permission for role-based access control. Configure it in config/permission.php:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"Customize permission models:
// config/permission.php
'models' => [
'permission' => Spatie\Permission\Models\Permission::class,
'role' => Spatie\Permission\Models\Role::class,
],Learn more: Managing Roles and Permissions
SEO Configuration
Siteman includes ralphjsmit/laravel-seo for SEO management. Publish its configuration:
php artisan vendor:publish --provider="RalphJSmit\Laravel\SEO\SEOServiceProvider"Customize SEO defaults:
// config/seo.php
'site_name' => 'My Awesome Site',
'title' => [
'suffix' => ' | My Site',
'prefix' => '',
],Caching Configuration
For production environments, consider caching:
Route Caching:
php artisan route:cacheView Caching:
php artisan view:cacheConfiguration Caching:
php artisan config:cacheWARNING
When caching is enabled, you must clear the cache after making configuration changes:
php artisan optimize:clearEnvironment Variables
Key environment variables for Siteman:
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=siteman
DB_USERNAME=root
DB_PASSWORD=
# Application
APP_NAME="My Siteman Site"
APP_URL=http://localhost
# File Storage (for Media Library)
FILESYSTEM_DISK=local
# Or for production:
# FILESYSTEM_DISK=s3
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# AWS_DEFAULT_REGION=us-east-1
# AWS_BUCKET=Advanced Configuration
Custom Page Types
Register custom page types in your AppServiceProvider:
use Siteman\Cms\PageTypes\PageTypeInterface;
public function boot(): void
{
app('siteman.page-types')->register(
'custom',
\App\PageTypes\CustomPageType::class
);
}Custom Blocks
Register custom blocks in your AppServiceProvider:
use Siteman\Cms\Blocks\BlockRegistry;
public function boot(): void
{
BlockRegistry::register('my-block', \App\Blocks\MyBlock::class);
}Learn more: Creating Custom Blocks
Route Configuration
Siteman automatically registers a catch-all route for frontend pages. To customize route configuration, you can disable auto-registration and register routes manually:
// In your RouteServiceProvider or routes/web.php
Route::middleware(config('siteman.middleware'))
->group(function () {
Route::get('{slug}', [\Siteman\Cms\Http\SitemanController::class, 'show'])
->where('slug', '.*')
->name('siteman.page');
});