hanoivip / cms
将 CMS 添加到任何 Laravel 应用中,以获得对页面、博客、相册、事件、自定义模块、图片等的控制。
Requires
- php: >=7.0
- aws/aws-sdk-php: ^3.18
- devfactory/minify: 1.0.*
- donatj/phpuseragentparser: ^0.5.3
- graham-campbell/markdown: ^8.0
- illuminate/support: 5.5.*
- intervention/image: ^2.3
- league/flysystem-aws-s3-v3: ^1.0
- spatie/laravel-analytics: ^1.4
- stichoza/google-translate-php: ^3.2
- yab/laracogs: ^2.3
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^0.9.4
- orchestra/testbench: ^3.5
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2020-01-09 07:42:22 UTC
README
Quarx 是一个功能齐全的 CMS,可以添加到任何 Laravel 应用中。它为您提供对页面、菜单、链接、小部件、博客、事件、常见问题解答等内容的完全控制。
Quarx 附带了一个模块构建器,满足您所有定制的 CMS 需求,以及模块发布工具。因此,如果您决定在未来的项目中重用一些模块,可以轻松地无缝发布它们的资产。如果您想将 Quarx 模块制作成 PHP 包,那么您需要将其资产发布到 quarx/modules
目录。
简单设置与复杂设置是什么?
简单设置使用 Laracogs 作为 Laravel 应用的基础骨架,运行设置命令后,您将拥有一个完整的 CMS 作为应用。复杂设置专门针对希望将 CMS 添加到现有应用的开发者。
文档
Yab Newsletter
聊天支持
要求
- PHP 7+
- MySQL 5.6+
- OpenSSL
推荐
- MySQL 5.7+
兼容性指南
Laravel 版本 | 包标签 | 支持 |
---|---|---|
5.5.x | 2.4.x | 是 |
5.4.x | 2.3.x | 否 |
5.3.x | 2.0.x - 2.2.x | 否 |
5.1.x - 5.2.x | 1.4.x | 否 |
安装
创建一个新的 Laravel 应用程序,在某个地方创建一个数据库并更新 .env 文件。
- 运行以下命令
composer require yab/quarx
- 将以下内容添加到您的 config/app.php 文件中的 Providers 数组中
Yab\Quarx\QuarxProvider::class,
- 然后运行 vendor publish
php artisan vendor:publish --provider="Yab\Quarx\QuarxProvider"
设置您的应用程序时区配置以与 Quarx 日期选择器 UI 保持一致
简单设置
如果您希望进行一个简单的网站,并仅允许 CMS 管理员登录应用程序,则可以运行设置命令。Quarx 将安装所需的一切,运行迁移,并提供登录以开始使用。在几秒钟内掌控您的网站。
php artisan quarx:setup
设置已完成。登录,开始构建您惊人的新网站!
复杂设置
如果您只想将 Quarx 添加到现有应用程序中,请按照以下步骤操作
- 通过更改以下内容来更新您的 routes provider(app/Providers/RouteServiceProvider.php)
->group(base_path('routes/web.php'));
变为
->group(function() { require base_path('routes/web.php'); require base_path('routes/quarx.php'); });
- 将以下内容添加到您的 app.scss 文件中,您将需要根据您选择的主题进行修改。
@import "resources/themes/default/assets/sass/_theme.scss";
- 运行存储链接已设置,以便图像和文件上传可以正常工作
php artisan storage:link
- 然后迁移
php artisan migrate
- 添加到内核路由中间件
'quarx' => \App\Http\Middleware\Quarx::class, 'quarx-api' => \App\Http\Middleware\QuarxApi::class, 'quarx-language' => \App\Http\Middleware\QuarxLanguage::class, 'quarx-analytics' => \Yab\Quarx\Middleware\QuarxAnalytics::class,
- 为了使模块也能加载,请在您的composer文件中添加以下内容到autoload psr-4对象
"Quarx\\": "quarx/",
这应该添加到App本身的自动加载器下面。
Quarx访问
管理仪表板的路由是"/quarx/dashboard"。
Quarx需要Laracogs运行(仅针对FormMaker),但Quarx不需要您使用Laracogs的角色版本。但您仍需要确保对Quarx访问的一定程度的控制。这是通过Quarx中间件、门和Quarx策略实现的。如果您选择使用Laracogs提供的角色系统,则可以将'quarx'替换为admin来处理Quarx授权,如果不选择,您将需要为Quarx访问设置自己的安全策略。为此,只需将Quarx策略添加到您的app/Providers/AuthServiceProvider.php
文件中,并确保您希望在策略方法中使用的任何规则都在策略方法中。我们建议使用以下类似的策略。
可能的Quarx策略
Gate::define('quarx-api', function ($user) {
return true;
});
Gate::define('quarx', function ($user) {
return (bool) $user;
});
或使用Laracogs
Gate::define('quarx', function ($user) {
return ($user->roles->first()->name === 'admin');
});
有趣的路由技巧
如果您正在寻找不需要在URL前添加page
或p
即可的干净URL页面,则可以将此添加到您的路由中。
确保将其放在路由的底部,否则可能与其他路由冲突。
Route::get('{url}', function ($url) { return app(App\Http\Controllers\Quarx\PagesController::class)->show($url); })->where('url', '([A-z\d-\/_.]+)?');
角色和权限(仅简单设置)
使用角色中间件,您可以指定哪些角色适用,使用管道分隔:['middleware' => ['roles:admin|moderator|member']]
。
Quarx中间件使用角色来确保用户是'admin'。但您可以对其进行大量扩展,您可以创建多个角色,然后在您的应用程序中设置它们的访问权限,使用角色中间件。但是,当您想要允许多个角色访问Quarx但仅允许管理员访问您的自定义模块时,您可以使用权限来实现这一点。类似于角色中间件,您可以将权限设置为['middleware' => ['permissions:admin|quarx']]
。您可以在config/permissions.php
中设置自定义权限。这意味着您可以设置CMS不同部分的不同角色权限,从而提供更多控制。
API端点
如果您想使用它们,Quarx提供了一系列有用的API端点。您可以定义自己的访问策略,并按需自定义中间件。
令牌
基本Quarx API端点必须携带在应用程序配置中定义的Quarx apiToken
。这可以通过向任何请求添加以下内容来实现
?token={your token}
** 默认情况下,所有已发布和面向公众的数据将通过API提供。
/quarx/api/blog
/quarx/api/blog/{id}
/quarx/api/events
/quarx/api/events/{id}
/quarx/api/faqs
/quarx/api/faqs/{id}
/quarx/api/files
/quarx/api/files/{id}
/quarx/api/images
/quarx/api/images/{id}
/quarx/api/pages
/quarx/api/pages/{id}
/quarx/api/widgets
/quarx/api/widgets/{id}
图像
图像在上传时进行缩放,以提高响应时间并改善质量。它们遵循在config
下指定的quarx.max-image-size
的指南。
S3
关于S3存储桶的使用。您需要设置相应的权限,以允许图像保存到您的存储桶中。然后您需要将存储桶设置为允许公共查看访问。这是一个此类策略的示例。
{
"Version":"2008-10-17",
"Statement":[{
"Sid":"AllowPublicRead",
"Effect":"Allow",
"Principal": {
"AWS": "*"
},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::MY_BUCKET/public/images/*"]
}]
}
将MY_BUCKET
替换为您的存储桶名称。
文件系统配置
如果使用S3,您需要在文件系统配置中添加以下行:'visibility' => 'public',
许可证
Quarx是开源软件,受MIT许可证许可。
错误报告和功能请求
请在提交问题和功能请求时提供尽可能多的细节。
免责声明
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,无论该责任是否与软件或其使用或其它操作有关。