hydrat / grogu-cms
在Laravel上快速安装内容管理系统(CMS)于Filament之上。选择你的前端栈,或者使用无头CMS。
Requires
- php: ^8.1
- bezhansalleh/filament-language-switch: ^3.0
- filament/filament: ^3.0
- filament/spatie-laravel-settings-plugin: ^3.1
- hydrat/filament-table-layout-toggle: >=1.1
- illuminate/contracts: >=10.0
- jeffgreco13/filament-breezy: ^2.2
- lorisleiva/laravel-actions: ^2.7
- ralphjsmit/laravel-filament-media-library: ^3.8
- spatie/eloquent-sortable: ^4.2
- spatie/laravel-package-tools: ^1.15.0
- spatie/laravel-permission: ^6.3
- vormkracht10/laravel-seo-scanner: ^3.10
Requires (Dev)
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-16 12:55:37 UTC
README
此包将CMS功能带给Laravel,基于Filament之上,作为Wordpress的即插即用替代品。它旨在与您选择的前端栈一起使用,或者作为无头CMS。该包提供了预定义的资源来管理您的内容、设置页面,以及一组SEO工具来帮助您优化内容以供搜索引擎使用。
虽然该包帮助您定义模型资源,但它还包含一个预定义的面板,您可以快速开始使用。
功能
- 页面/帖子/模型管理
- 状态
- 别名
- 摘要
- 缩略图
- 模板
- 灵活的内容块
- 层次结构(父/子)
- 自定义“帖子类型”,通过蓝图和模板类配置以避免模型臃肿
- SEO工具(元标题、元描述、元标签、站点地图、结构化数据、SEO检查)
- 菜单
- 设置页面
- 用户和权限管理
- 多语言仪表板
- 您保持对模型、迁移、路由和视图的控制
- 原生前端支持blade、livewire、inertia
屏幕截图
安装
您可以通过Composer安装此包
composer require hydrat/grogu-cms
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="grogu-cms-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="grogu-cms-config"
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="grogu-cms-views"
这是已发布配置文件的内容
return [
];
此外,为了设置依赖项,您需要运行以下命令
php artisan seo:install
如果您使用JavaScript前端,如Vue或React,您还需要安装puppeteer
npm install puppeteer
然后,您需要为您的公共模型启用SEO检查中的JavaScript
<?php namespace App\Models; use App\Cms\Models\Contracts\Resourceable; use App\Cms\Models\CmsModel; use Vormkracht10\Seo\Facades\Seo; use Vormkracht10\Seo\SeoScore; class Page extends CmsModel implements Resourceable { public function seoScore(): SeoScore { return Seo::check(url: $this->url, useJavascript: true); } }
有关更多详细信息,请阅读laravel-seo-scanner文档
用法
定义您的模型
您可以使用make:cms-model
命令轻松创建模型
php artisan make:cms-model Page
基本上,这个模型将是一个常规的Eloquent模型,扩展CmsModel
类
<?php namespace App\Models; class Page extends CmsModel { /** * @var string<BlueprintContract> */ protected static string $blueprintSchema = \App\Cms\Blueprints\PageBlueprint::class; }
蓝图是模型配置发生的地方。您可以通过将--blueprint
选项添加到make:cms-model
命令或使用make:cms-blueprint
命令自动生成此文件
php artisan make:cms-blueprint PageBlueprint
蓝图通过告诉GroguCMS如何处理您的模型来帮助GroguCMS
- 定义单个模型的前端路由(当适用时)
- 定义使用我们的控制器助手时使用的前端视图
- 启用/禁用功能,如SEO、摘要、内容...
- 定义模板和灵活布局
- 定义模型是否是层次结构
渲染您的模型
创建路由
首先,您需要创建指向您页面的路由。在这里,我们定义了根路径使用FrontPageController,因为它将读取管理面板上定义的设置。
Route::get('/', Web\FrontPageShowController::class)->name('front-page.show'); Route::get('/{slug}', Web\PageShowController::class)->where('slug', '(.*)')->name('pages.show');
使用blade/livewire
使用inertia
当使用Inertia时,您可能希望过滤发送到浏览器的数据。为此,GroguCMS在发送到浏览器之前自动将您的模型转换为JsonResource。
首先,为您的模型创建一个资源
php artisan make:resource PageResource
然后,将Resourceable
合约添加到您的模型中,并实现toResource
方法。
<?php namespace App\Models; use App\Cms\Contracts\Resourceable; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations; use Illuminate\Http\Resources\Json\JsonResource; class Page extends Model implements Resourceable { public function toResource(): JsonResource { return new \App\Http\Resources\PageResource($this); } }
然后您可以按需配置您的资源。
测试
composer test
变更日志
请参阅变更日志,获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。