hydrat/grogu-cms

在Laravel上快速安装内容管理系统(CMS)于Filament之上。选择你的前端栈,或者使用无头CMS。

dev-main 2024-09-16 12:55 UTC

This package is auto-updated.

Last update: 2024-09-16 12:55:37 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包将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)。请参阅许可证文件获取更多信息。