ethicks / filtcms
A Full featured CMS plugin for Filament PHP
Fund package maintenance!
Requires
- php: ^8.1|^8.2|^8.3
- filament/filament: ^3.0|^4.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9|^8.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
This package is auto-updated.
Last update: 2026-03-30 17:50:49 UTC
README
A comprehensive Content Management System plugin for Filament PHP v3, providing a complete solution for managing pages, blogs, categories, and comments with built-in SEO features.
Features
📄 Pages Management
- Create, edit, and delete pages
- Rich text editor
(CKEditor/TinyMCE comming support soon) - Featured image uploads
- SEO meta tags (title, description, keywords)
- URL slug auto-generation
- Publish status (Draft, Published, Scheduled)
- Category assignment
- View, likes, and comments tracking
- Show/hide columns in list view
- Inline editing and bulk actions
📁 Categories Management
- Hierarchical category structure (parent/child)
- Drag-and-drop reordering
- Category images
- SEO optimization per category
- Used for both pages and blogs
📰 Blog Management
- Full blog post creation and management
- Rich content editor
- Excerpt support
- Featured images with image editor
- SEO meta tags
- Tags support
- Trending and Featured toggles
- Scheduled publishing
- Author tracking
- Views, likes, and comments statistics
- Stats widgets (Total Posts, Published, Drafts, Scheduled, Views, Likes)
- Filter by status, category, trending, featured
💬 Comments Management
- Comment moderation system
- Approve/Disapprove/Spam marking
- Profanity filter (auto-flag inappropriate content)
- Reply to comments
- Comment threading (nested replies)
- Author tracking (logged-in users or guests)
- IP and User Agent tracking
- Bulk actions for moderation
⚙️ Settings Page
- General Settings
- Comment settings (enable/disable, moderation, notifications)
- Blog settings (posts per page, guest posts, default status)
- Page settings (templates, comments)
- SEO Settings
- Default meta title, description, keywords
- Social Media Settings
- Social media links
- Share buttons configuration
- Notification Settings
- Email notifications for comments and posts
- Advanced Settings
- Custom CSS/JS injection
🌐 Frontend Features
- Public blog and page viewing
- Category/subcategory URL structure
- Automatic 404 handling for unpublished content
- Blade components for easy integration
- Facade methods for content retrieval
Installation
You can install the package via composer:
composer require ethicks/filtcms
Run the installation command:
php artisan filtcms:install && npm install && npm run build
This will:
- Publish the configuration file
- Publish the migrations
- Optionally run migrations
OR You can publish and run the migrations with:
php artisan vendor:publish --tag="filtcms-migrations"
php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="filtcms-config"
Optionally, you can publish the views using
php artisan vendor:publish --tag="filtcms-views"
Configuration
Register the plugin in your Filament panel provider (e.g., app/Providers/Filament/AdminPanelProvider.php or your custom panel provider name):
use EthickS\FiltCMS\FiltCMSPlugin; public function panel(Panel $panel): Panel { return $panel // ... ->plugins([ FiltCMSPlugin::make(), ]); }
Usage
Admin Panel
After installation, you'll see a new "FiltCMS" navigation group with:
- Pages
- Categories
- Blog
- Comments
- Settings
Creating Content
Pages
1. Navigate to FiltCMS > Pages
2. Click "New Page"
3. Fill in title (slug auto-generates)
4. Add content using the rich editor
5. Upload featured image
6. Configure SEO settings in the SEO tab
7. Set publish status and date
8. Assign to category (optional)
9. Save
Blog Posts
1. Navigate to FiltCMS > Blog
2. Click "New Blog"
3. Fill in title and content
4. Add excerpt and featured image
5. Configure SEO, tags, and settings
6. Toggle trending/featured if needed
7. Schedule or publish immediately
8. Save
Using Facade Methods
use EthickS\FiltCMS\Facades\FiltCMS; // Get a page $page = FiltCMS::page('about-us'); if ($page->exists()) { echo $page->getTitle(); echo $page->getBody(); echo $page->getExcerpt(); echo $page->getFeaturedImage(); echo $page->getViewsCount(); echo $page->getLikesCount(); echo $page->getCommentsCount(); } // Get a blog post $blog = FiltCMS::blog('my-post-slug'); if ($blog->exists()) { echo $blog->getTitle(); echo $blog->getBody(); print_r($blog->getTags()); echo $blog->getCategory()->name; echo $blog->getAuthor()->name; }
For more methods, refer to the FILTCMS_API.md documentation.
Blade Template Example
@php
$filtCms = app(\EthickS\FiltCMS\FiltCMS::class)->page('about-us');
@endphp
@if($filtCms->exists())
<h1>{{ $filtCms->getTitle() }}</h1>
<div>{!! $filtCms->getBody() !!}</div>
@endif
Comment System
Comments are automatically displayed on published blogs and pages (if enabled). The comment form includes:
- Profanity filtering
- Moderation queue
- Guest or authenticated user comments
- Reply threading
Scheduling Posts
- Set status to "Scheduled"
- Set publish date to future date
- Add this to your
app/Console/Kernel.php:
use EthickS\FiltCMS\Models\Blog; use EthickS\FiltCMS\Models\Page; protected function schedule(Schedule $schedule) { $schedule->call(function () { Blog::where('status', 'scheduled') ->where('published_at', '<=', now()) ->update(['status' => 'published']); Page::where('status', 'scheduled') ->where('published_at', '<=', now()) ->update(['status' => 'published']); })->everyMinute(); }
Please see CRON_SETUP for more information on what has changed recently.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.