tomatophp/filament-cms

适用于 FilamentPHP 的易于使用的页面构建器和主题管理器的全功能 CMS 系统

资助包维护!
3x1io

v1.0.19 2024-09-17 16:37 UTC

README

Screenshot

Filament CMS 构建器

Latest Stable Version License Downloads

适用于 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

屏幕截图

Posts List Posts Create Posts SEO Posts View Category List Category Create Form List Create Form From Fields Create Field Form Preview View Form Request

特性

  • 内容管理器
  • 内容评论和评分
  • 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 属性。如果您需要不使用任何样式来使用它,您可以直接使用此属性。

现在,如果您打开您的页面,您将找到如下所示的构建器视图。

Page Builder Page Builder Prview

添加表单字段类型

您可以通过在提供者上使用此方法向表单构建器添加更多字段。

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