| Install | |
|---|---|
composer require tallcms/cms |
|
| Latest Version: | 3.4.0 |
| PHP: | ^8.2 |
A modern Content Management System package for Laravel Filament. Add rich content editing, pages, posts, media library, and menus to your existing Filament application.
For a full standalone CMS with themes, plugins, and auto-updates, see tallcms/tallcms.
Build rich pages with the block-based content editor.

Choose from many built-in blocks: Hero, CTA, Pricing, FAQ, Testimonials, and more.

Manage blog posts with filters, bulk actions, and status indicators.

Organize uploads with collections, metadata, and drag-and-drop.

Create navigation menus with drag-and-drop ordering.

Track changes with diff comparison and one-click rollback.

Configure site name, contact info, social links, and more.

1. Install via Composer:
composer require tallcms/cms
This will also install Filament 5.x as a dependency.
2. Configure Filament (if not already done):
php artisan filament:install --panels
3. Add HasRoles Trait to User Model:
Your User model must use the HasRoles trait from Spatie Permission:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasFactory, HasRoles, Notifiable;
// ...
}
4. Register the plugin in your Panel Provider:
use TallCms\Cms\TallCmsPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ... your existing configuration
->plugin(TallCmsPlugin::make());
}
Important: You must register
TallCmsPluginin your panel provider. The CMS resources will not appear in your admin panel without this step.
5. Run the installer:
php artisan tallcms:install
This single command handles everything:
6. (Optional) Publish configuration:
php artisan vendor:publish --tag=tallcms-config
The plugin automatically registers these Filament components:
| Type | Components |
|---|---|
| Resources | Pages, Posts, Categories, Media, Menus, Contact Submissions |
| Pages | Site Settings, Menu Items Manager |
| Widgets | Menu Overview Widget |
Disable specific components you don't need:
->plugin(
TallCmsPlugin::make()
->withoutCategories()
->withoutPosts()
->withoutPages()
->withoutMedia()
->withoutMenus()
->withoutContactSubmissions()
->withoutSiteSettings()
)
After publishing the config file, customize these options:
// config/tallcms.php
return [
// Force mode (auto-detected if not set)
'mode' => 'plugin', // or 'standalone'
'plugin_mode' => [
// Custom user model (defaults to App\Models\User)
'user_model' => App\Models\User::class,
// Enable frontend routes for /{slug} paths
'routes_enabled' => false,
// Optional URL prefix (e.g., 'cms' for /cms/about)
'routes_prefix' => '',
// Enable theme system in plugin mode
'themes_enabled' => false,
// Enable plugin system in plugin mode
'plugins_enabled' => false,
],
];
Frontend routes are disabled by default in plugin mode to avoid conflicts with your app's routes.
Add to your .env file:
TALLCMS_ROUTES_ENABLED=true
This registers both / (homepage) and /{slug} routes for CMS pages.
Routes automatically exclude common paths like your panel path (default /admin), /api, /livewire, /storage, etc.
⚠️ Warning: When
TALLCMS_ROUTES_ENABLED=truewithout a prefix, TallCMS registers the/route. However, Laravel loads your app'sroutes/web.phpafter package routes, so you must remove the default/route fromroutes/web.phpfor TallCMS to handle your homepage. Alternatively, setTALLCMS_ROUTES_PREFIX=cmsto avoid the conflict.
Mark a CMS page as "Homepage" in the admin panel. TallCMS will serve it at / (or /{prefix} if using a prefix).
To prefix all CMS routes (e.g., /cms/about instead of /about):
TALLCMS_ROUTES_PREFIX=cms
With a prefix, the routes become /cms (homepage) and /cms/{slug} (pages).
For frontend styling:
php artisan vendor:publish --tag=tallcms-assets
To customize templates:
php artisan vendor:publish --tag=tallcms-views
TallCMS frontend pages require Alpine.js.
Most Laravel apps include Alpine via Livewire. If your app loads Alpine
separately, ensure it's loaded BEFORE tallcms.js, as TallCMS registers
components on alpine:init.
| Block | Description |
|---|---|
| Hero | Landing page headers with CTAs and background images |
| Call-to-Action | Conversion-optimized promotional sections |
| Content | Article content with headings and rich text |
| Features | Feature grids with icons and descriptions |
| Pricing | Pricing tables with feature comparison |
| FAQ | Accordion-style frequently asked questions |
| Testimonials | Customer testimonials with ratings |
| Team | Team member profiles with social links |
| Stats | Statistics and metrics display |
| Image Gallery | Lightbox galleries with grid layouts |
| Logos | Logo showcases for partners/clients |
| Timeline | Chronological event displays |
| Contact Form | Dynamic forms with email notifications |
| Posts | Display recent blog posts |
| Parallax | Parallax scrolling sections |
| Divider | Visual section separators |
Generate a new block with the artisan command:
php artisan make:tallcms-block MyCustomBlock
This creates:
app/Filament/Blocks/MyCustomBlockBlock.phpresources/views/cms/blocks/my-custom-block.blade.phpUpgrade to TallCMS Pro for advanced features:
Learn more at tallcms.com/pro
| Role | Description |
|---|---|
| Super Admin | Complete system control |
| Administrator | Content and user management |
| Editor | Full content management |
| Author | Create and edit own content |
TallCMS supports a full publishing workflow:
| Status | Description |
|---|---|
| Draft | Work in progress, not visible |
| Pending Review | Submitted for approval |
| Scheduled | Will publish at specified date/time |
| Published | Live and visible to visitors |
Share unpublished content with stakeholders using preview tokens:
All content changes are tracked:
TallCMS works with any Filament panel configuration. Register the plugin in each panel where you want CMS features:
// app/Providers/Filament/AdminPanelProvider.php
->plugin(TallCmsPlugin::make())
// app/Providers/Filament/EditorPanelProvider.php
->plugin(
TallCmsPlugin::make()
->withoutSiteSettings() // Editors can't change settings
)
All internal URLs use Filament's Page::getUrl() method, ensuring compatibility with custom panel paths and multi-panel setups.
If your application uses a custom User model:
// config/tallcms.php
'plugin_mode' => [
'user_model' => App\Models\CustomUser::class,
],
The model must implement Illuminate\Contracts\Auth\Authenticatable.
Publish views for customization:
php artisan vendor:publish --tag=tallcms-views
Views are published to resources/views/vendor/tallcms/.
Create your own resource classes that extend the package resources:
namespace App\Filament\Resources;
use TallCms\Cms\Filament\Resources\CmsPages\CmsPageResource as BaseResource;
class CmsPageResource extends BaseResource
{
// Override methods as needed
public static function getNavigationGroup(): ?string
{
return 'My Custom Group';
}
}
TallCMS creates these tables (all prefixed with tallcms_):
| Table | Purpose |
|---|---|
tallcms_pages |
Static content pages |
tallcms_posts |
Blog posts |
tallcms_categories |
Hierarchical categories |
tallcms_post_category |
Post-category pivot |
tallcms_site_settings |
Site configuration |
tallcms_media |
Media library items |
tallcms_media_collections |
Media collections |
tallcms_menus |
Navigation menus |
tallcms_menu_items |
Menu items (nested set) |
tallcms_contact_submissions |
Contact form entries |
tallcms_revisions |
Content revision history |
tallcms_preview_tokens |
Preview sharing tokens |
| Command | Description |
|---|---|
tallcms:install |
Full installation (migrations, roles, admin user) |
tallcms:setup |
Setup roles, permissions, and admin user only |
make:tallcms-block |
Create a custom content block |
tallcms:clean-preview-tokens |
Remove expired preview tokens |
TallCMS integrates with Filament Shield for permissions. Default permissions are created for each resource:
ViewAny, View, Create, Update, Delete for each resourceView:SiteSettings for the settings pageView:MenuItemsManager for menu managementContributions are welcome! Please submit issues and pull requests on GitHub.
If you discover a security vulnerability, please email security@tallcms.com instead of using the issue tracker.
TallCMS is open-source software licensed under the MIT license.