tallcms/cms
TallCMS is a modern CMS package for Laravel Filament. Add pages, posts, a block-based editor, media library, menus, comments, and forms to an existing Filament app. Includes install command and plugin registration, with docs in the monorepo.
## Getting Started
### Minimal Setup
1. **Installation**:
```bash
composer require tallcms/cms
php artisan tallcms:install
Register Plugin:
Add to your Filament panel provider (e.g., app/Providers/Filament/AdminPanelProvider.php):
->plugin(TallCmsPlugin::make())
User Model:
Add HasRoles trait to your User model:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable { use HasRoles; }
First Use Case:
/admin/pages) or Post (/admin/posts) via Filament UI./admin (default Filament route).@tallcms('page', 'home')).Pages/Posts:
/admin/pages, /admin/posts)./about).config/tallcms.php (locales array) and use the "Copy from default" button for multilingual content.Blocks:
TallCms\Cms\Blocks\Block and register via:
TallCmsPlugin::make()->withBlocks([
new \App\Blocks\CustomBlock(),
]);
{{ $block->field }} in Blade templates or access via $block->getContent().Media Library:
/admin/media.Frontend Templates:
php artisan vendor:publish --tag=tallcms-themes
@tallcms('theme', 'header')).config/tallcms.php.CSS/JS:
resources/js/tallcms.js:
import './blocks/custom-block.js'; // Custom block logic
npm run dev or npm run build./admin/menus.@tallcms('menu', 'primary')
Contact Forms:
/admin/forms.@tallcms('form', 'contact')).Comments:
/admin/comments.config/tallcms.php:
'locales' => [
'en' => ['name' => 'English', 'rtl' => false],
'es' => ['name' => 'Español', 'rtl' => false],
],
<a href="{{ tallcms_localized_route('page.show', ['page' => $page, 'locale' => 'es']) }}">
@tallcms('language-switcher')
API Endpoints:
Route::get('/api/pages/{page}', [PageController::class, 'show'])).Page::getUrl() for dynamic links.Preview Tokens:
$token = $page->createPreviewToken();
/preview?token=$token./admin/sites./admin/sites/{site}/edit → "Embed Code" tab.TallCmsPlugin::make()
->withoutPages()
->withoutPosts()
php artisan vendor:publish --tag=tallcms-filament-resources
@once in Blade to cache block rendering:
@once
@tallcms('page', 'home')
@endonce
config/filesystems.php) for S3/DigitalOcean R2.\Log::debug('Block content:', ['content' => $block->getContent()]);
php artisan filament:shield:check to verify user roles.PHP Version Mismatch:
v4.6.2+ requires PHP 8.3+ for Laravel 13. Older versions (e.g., PHP 8.2) may fail with Symfony 8.1 compatibility errors.composer require laravel/framework:^12.0
Or upgrade PHP to 8.3+.Node Version:
nvm to switch versions:
nvm install 20
nvm use 20
Multilingual Slugs:
tallcms_localized_route() with explicit locales:
{{ tallcms_localized_route('page.show', ['page' => $page, 'locale' => 'en']) }}
Revision Pruning:
v4.6.4 and earlier.v4.6.4+ or manually delete old revisions via:
$page->revisions()->orderBy('revision_number', 'asc')->limit(5)->delete();
Embed Code Scope:
SiteSettingsService::setForSite() with explicit site_id:
use TallCms\Cms\Services\SiteSettingsService;
SiteSettingsService::setForSite($siteId, 'code_head', '<script>...</script>');
Block Editor Conflicts:
// resources/js/tallcms.js
if (window.location.pathname.includes('/admin')) {
// Editor-specific logic
}
Permission Orphans:
v4.3.2 may leave orphaned `Manage:CodeInjectionHow can I help you explore Laravel packages today?