tomatophp / filament-cms
适用于 FilamentPHP 的易于使用的页面构建器和主题管理器的全功能 CMS 系统
Requires
- php: ^8.1|^8.2
- filament/filament: ^3.0.0
- filament/spatie-laravel-media-library-plugin: ^3.0.0
- filament/spatie-laravel-settings-plugin: ^3.0.0
- filament/spatie-laravel-translatable-plugin: ^3.0.0
- tomatophp/console-helpers: ^1.1
- tomatophp/filament-icons: ^1.0
- tomatophp/filament-translation-component: ^1.0
README
Filament CMS 构建器
适用于 FilamentPHP 的易于使用的页面构建器和主题管理器的全功能 CMS 系统
安装
composer require tomatophp/filament-cms
安装您的包后,请运行以下命令
注意:如果您需要自定义某些功能,请勿使用此命令,而是按照以下步骤操作,因为此步骤将运行迁移,并且在运行迁移之前您需要自定义配置。
php artisan filament-cms:install
最后,在 /app/Providers/Filament/AdminPanelProvider.php
中注册插件
->plugin(\TomatoPHP\FilamentCms\FilamentCMSPlugin::make())
现在请发布并迁移媒体表
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations" php artisan migrate
屏幕截图
特性
- 内容管理器
- 内容评论和评分
- YouTube 元数据集成
- Behanace 内容导入器
- GitHub 内容导入器
- 内容导入和导出
- 页面构建器
- 主题管理器
- 表单构建器
- 工单系统
- REST API
允许从 YouTube URL 导入
您可以通过在 .env
中添加 YOUTUBE_KEY
来允许从 YouTube 导入内容
YOUTUBE_KEY=YOUR_YOUTUBE_KEY
现在在您的面板提供者 /app/Providers/Filament/AdminPanelProvider.php
中添加此方法
->plugin(\TomatoPHP\FilamentCms\FilamentCMSPlugin::make()->allowYoutubeImport())
允许从 Behanace URL 导入
首先,您需要将 dusk
作为主要包安装以允许此功能
composer require laravel/dusk
现在安装 dusk 驱动器
php artisan dusk:install
现在您需要在您的面板提供者 /app/Providers/Filament/AdminPanelProvider.php
中允许 behanace 导入,添加此方法
->plugin(\TomatoPHP\FilamentCms\FilamentCMSPlugin::make()->allowBehanceImport())
向 CMS 添加自定义类型
您可以通过在您的 AppServiceProvider 的 boot()
方法中使用 Facade 方法向 CMS 添加自定义类型
use TomatoPHP\FilamentCms\Facades\FilamentCMS; use TomatoPHP\FilamentCms\Services\Contracts\CmsType; public function boot() { FilamentCMS::types()->register([ CmsType::make('building') ->label('Buildings') ->icon('heroicon-o-home') ->color('danger') ]); }
添加更多作者类型
您可以通过在您的 AppServiceProvider 的 boot()
方法中使用 Facade 方法添加更多作者类型
use TomatoPHP\FilamentCms\Facades\FilamentCMS; use TomatoPHP\FilamentCms\Services\Contracts\CmsAuthor; public function boot() { FilamentCMS::authors()->register([ CmsAuthor::make('Admin') ->model(\App\Models\User::class) ]); }
使用主题管理器
主题管理器是用 Laravel 模块构建的,因此您需要先安装它
注意:如果您安装了 tomatophp/filament-plugins
,则不需要安装 nwidart/laravel-modules
,因为它已经安装了
composer require nwidart/laravel-modules
现在在您的 composer.json
中添加到 psr-4
自动加载
{ "autoload": { "psr-4": { "App\\": "app/", "Modules\\": "Modules/" } } }
现在运行此命令以自动加载主题
composer dump-autoload
并且您还需要另一个包用于缓存并将主题作为模型返回,我们使用 sushi
包
composer require calebporzio/sushi
现在在您的配置 filament-cms
中
<?php return [ /* * --------------------------------------------------- * Allow Features * --------------------------------------------------- */ "features" => [ "theme-manager" => true, ], ];
现在您需要激活设置表
php artisan vendor:publish --provider="Spatie\LaravelSettings\LaravelSettingsServiceProvider" --tag="migrations" php artisan migrate
现在您可以使用主题管理器来管理您应用中的多个前端主题,在您的面板提供者 /app/Providers/Filament/AdminPanelProvider.php
中添加此方法
->plugin(\TomatoPHP\FilamentCms\FilamentCMSPlugin::make()->useThemeManager())
现在您可以通过 /admin/themes
访问并管理您的主题,您可以使用此命令行创建新主题
php artisan filament-cms:theme
您将在 Modules
目录中找到一个带有自定义 module.json
文件的新模块
使用页面构建器
页面构建器使您能够轻松自定义页面并生成自动加载的页面以使用 Section
构建您的网站,要开始使用,您需要在面板提供者 /app/Providers/Filament/AdminPanelProvider.php
中添加此方法
->plugin(\TomatoPHP\FilamentCms\FilamentCMSPlugin::make()->usePageBuilder())
首先,您需要在 AppServiceProvider 的 boot()
方法中创建一个 Section
use TomatoPHP\FilamentCms\Services\Contracts\Section; use TomatoPHP\FilamentCms\Facades\FilamentCMS; use Filament\Forms\Components\TextInput; FilamentCMS::themes()->register([ Section::make('hero') ->label('Hero Section') ->view('sections.pages.hero') ->form([ TextInput::make('title') ->label('title'), TextInput::make('description') ->label('description'), TextInput::make('url') ->url() ->label('url'), TextInput::make('button') ->label('button'), ]) ]);
注意:部分键必须是唯一的
注册您的部分后,您就可以开始使用页面构建器了,您需要为您的页面创建一个新路由,如下所示
use Illuminate\Support\Facades\Route; Route::get('/', function () { $page = load_page('/'); return view('welcome', compact('page')); });
如您所见,您需要使用 load_page
辅助函数来加载您的页面,并将其传递给视图。该方法通过 slug
检查页面是否存在,如果页面不存在或已删除,将为您恢复或创建它。
在您的 welcome.blade.php
文件中,您需要使用此 Blade 组件。
<x-tomato-builder-toolbar :page="$page" allow-layout/>
如果您需要使用 Filament 布局以方便地激活 Livewire / Tailwind 样式,请使用 allow-layout
属性。如果您需要不使用任何样式来使用它,您可以直接使用此属性。
现在,如果您打开您的页面,您将找到如下所示的构建器视图。
添加表单字段类型
您可以通过在提供者上使用此方法向表单构建器添加更多字段。
use TomatoPHP\FilamentCms\Services\FilamentCMSFormFields; use TomatoPHP\FilamentCms\Services\Contracts\CmsFormFieldType; FilamentCMSFormFields::register([ CmsFormFieldType::make('code') ->className(CodeEditor::class) ->color('warning') ->icon('heroicon-s-code-bracket-square') ->label('Code Editor'), ]);
使用您的表单构建器
创建您的表单后,您可以通过 key
如此使用它。
use TomatoPHP\FilamentCms\Services\FilamentCMSFormBuilder; FilamentCMSFormBuilder::make('xvssd')->build()
使用表单请求提交您的表单数据
您可以通过在提供者上使用此方法来使用表单请求提交您的表单数据。
use TomatoPHP\FilamentCms\Services\FilamentCMSFormBuilder; FilamentCMSFormBuilder::make('xvssd')->send($data)
发布资源
您可以通过使用此命令发布配置文件:
php artisan vendor:publish --tag="filament-cms-config"
您可以通过使用此命令发布视图文件:
php artisan vendor:publish --tag="filament-cms-views"
您可以通过使用此命令发布语言文件:
php artisan vendor:publish --tag="filament-cms-lang"
您可以通过使用此命令发布迁移文件:
php artisan vendor:publish --tag="filament-cms-migrations"
其他 Filament 包
查看我们的 Awesome TomatoPHP