sinavia / laravel-cms
Laravel 内容管理系统
Requires
- php: ~5.6|~7.0|~8.0
- illuminate/support: 5.*|6.*|7.*|8.*|9.*|10.*
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
- dev-master
- v2.37.0
- v2.36
- v2.35
- v2.34
- v2.33
- v2.31
- v2.24
- v2.23
- v2.22
- v2.21
- v2.20
- v2.19
- v2.18.8
- v2.18.6
- v2.18.4
- v2.18.2
- v2.18
- v2.17
- v2.16.2
- v2.16.0
- v2.15.0
- v2.13.0
- v2.12.0
- v2.11.0
- v2.10.0
- v2.9.0
- v2.8.0
- v2.7.0
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.7
- v2.2.0
- v2.1.0
- v2.0.0
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.6
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-14 08:11:39 UTC
README
这是一个为 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 配置文件中。请查看这些设置,并根据您的喜好进行修改
路由设置
- 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', '.+'); });
- 管理员端点(私有,使用中间件保护)
\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] ?? "";
快速片段
- 高级使用。使用 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. 页面管理器
2. 创建新页面
3. 编辑页面。内容视图
4. 编辑页面。SEO 视图
5. 速度测试(在额外的速度改进之前)
更新日志
2021.07.05 - 增加了Bootstrap 5的支持
替代方案
- LavaLite - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- OctoberCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- TypiCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- PyroCMS - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- Laravel8SimpleCms - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- Winter - 需要从头开始创建完整项目,无法作为包嵌入现有项目
- GraphiteInc CMS - 已存档
- Twil