sinavia/laravel-cms

Laravel 内容管理系统

安装次数: 1,279

依赖: 0

建议者: 0

安全: 0

星标: 21

关注者: 5

分支: 7

公开问题: 3

语言:Blade

v2.37.0 2023-11-14 06:29 UTC

README

Total Downloads Latest Stable Version Latest Unstable Version License Monthly Downloads Daily Downloads composer.lock

这是一个为 Laravel 设计的“即插即用”内容管理系统(CMS),它能够完成工作而不干扰您的应用。

简介

现有的所有 Laravel CMS(OctoberCms、AsgardCms、PyroCms 等)都需要从头开始进行完整安装。无法直接将其添加到现有的 Laravel 应用中,即使添加了,也感觉没有得到期望的结果。

此包允许您将内容管理系统作为 composer 文件中的包依赖项添加,可以轻松更新或删除,适用于任何 Laravel 应用。它是完全自包含的,不需要任何额外的包或依赖。移除也非常简单,只需从 composer 文件中删除即可。

功能

  • 模板(即主布局)
  • 页面(网页)
  • 块(可重用的自定义代码片段 - 标题、页脚)
  • 小部件(动态可重用预定义组件)

安装(预计 5-10 分钟)

  • 安装所需库
composer require lesichkovm/laravel-advanced-route
composer require lesichkovm/laravel-advanced-model
  • 安装 CMS
composer require sinevia/laravel-cms
php artisan migrate
php artisan vendor:publish --tag=config
// If you want the migrations, usually not needed
php artisan vendor:publish --tag=migrations
// If you want the views, usually not  needed
php artisan vendor:publish --tag=views

警告:请使用稳定包,因为 "dev-master" 是一个正在开发中的版本。

卸载(预计 5 分钟)##

移除包非常简单

composer remove sinevia/laravel-cms

可选:删除 CMS 表(所有以 snv_cms_ 前缀开始的表)

配置

运行 vendor:publish 命令后,CMS 设置将发布在 /config/cms.php 配置文件中。请查看这些设置,并根据您的喜好进行修改

路由设置

  1. CMS 端点(公共,捕获所有)
\Route::group(['prefix' => '/'], function () {
    // will match only one level deep (not recommended)
    \Route::any('/{path?}', '\Sinevia\Cms\Http\Controllers\CmsController@anyPageView');
    
    // or use with regex expression to match any level
    \Route::any('/{path?}', '\Sinevia\Cms\Http\Controllers\CmsController@anyPageView')
        ->where('path', '([a-zA-z0-9\/\-]++)');
        
    // or use with simpler regex expression to match any level
    \Route::any('/{path?}', '\Sinevia\Cms\Http\Controllers\CmsController@anyPageView')
        ->where('path', '.+');

    // or if you prefer using the class path (recommended)
    \Route::any('/{path?}', [\Sinevia\Cms\Http\Controllers\CmsController::class, 'anyPageView'])
        ->where('path', '.+');
});
  1. 管理员端点(私有,使用中间件保护)
\Route::group(['prefix' => '/admin'], function () {
    \Route::group(['middleware'=>'adminonly'], function(){
        \AdvancedRoute::controller('/cms', '\Sinevia\Cms\Http\Controllers\CmsController');

        // or if your prefer using class path (recommended)
        \AdvancedRoute::controller('/cms', \Sinevia\Cms\Http\Controllers\CmsController::class);
    });
});

模板

模板是布局,可用于以统一的方式显示页面。您可能需要多个模板,这对于想要为网站的不同部分提供不同的“外观和感觉”非常有用。

页面

页面是在访问指定 URL 时显示的内容。每个页面都可以有一个可选的父模板,它可以为共享模板的所有页面指定常见元素(例如样式表、脚本等)。

块是可以嵌入到页面和模板中的小型内容片段。如果您想在多个页面上使用它们,或者使页面更轻量级,这非常有用。

要在页面或模板中嵌入,请使用如下短代码:[[BLOCK_20180509052702261348]]

小部件

小部件是可以嵌入到页面和模板中的预定义动态模块(例如 Google Maps、联系表单等)。根据它们执行的操作,这些模块可能具有可选的或必需的参数。每个小部件文件都位于其自己的目录中。

要在页面或模板中嵌入,请使用如下短代码:[[WIDGET_20180509052702261348]]

更多信息:https://github.com/Sinevia/laravel-cms/wiki/Widgets

人性化的别名

以下快捷方式可用于创建人类友好的页面别名,这些别名可用于具有动态内容的页面

示例页面别名:/article/:num/:string

要检索,可以使用以下片段

preg_match('#^/article/([0-9]+)/([a-zA-Z]+)/([a-zA-Z]+)$#', '/' . $uri, $matched);
$articleId = $matched[1] ?? "";

快速片段

  1. 高级使用。使用 CMS 模板将自定义代码与 blade 模板包装在一起
// A small helper function to place HTML in the CMS template
function viewInTemplate($pageTitle, $pageContent) {
    $template = \Sinevia\Cms\Models\Template::find('20180126000128528925');

    return $template->render('en', [
                'page_title' => $pageTitle,
                'page_content' => $pageContent,
    ]);
}

// Then you may use from your controller, for instance to show a login form in
$html = view('guest/auth/login', get_defined_vars())->render();
return viewInTemplate('Login', $pageContent)

屏幕截图

1. 页面管理器

Alt text

2. 创建新页面

Alt text

3. 编辑页面。内容视图

Alt text

4. 编辑页面。SEO 视图

Alt text

5. 速度测试(在额外的速度改进之前)

Alt text

更新日志

2021.07.05 - 增加了Bootstrap 5的支持

替代方案

  • LavaLite - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • OctoberCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • TypiCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • PyroCMS - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • Laravel8SimpleCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • Winter - 需要从头开始创建完整项目,无法作为包嵌入现有项目
  • GraphiteInc CMS - 已存档
  • Twil