regulus / fractal
适用于 Laravel 5 的多功能 CMS。
Requires
- php: >=5.4.0
- alfredo-ramos/parsedown-extra-laravel: ~0.2
- laravel/framework: 5.*
- regulus/activity-log: 0.5.*
- regulus/elemental: 0.5.*
- regulus/formation: 1.0.*
- regulus/identify: 0.8.*
- regulus/solid-site: 0.6.*
- regulus/tetra-text: 0.5.*
- regulus/upstream: 0.5.*
README
适用于 Laravel 5 的多功能 CMS。
注意:对于 Laravel 4,您可以使用 版本 0.8.2。
Fractal 是一个用于 Laravel 的内容管理系统,它保持了对自定义的灵活性和易用性,程度不同。您可以直接完成所有这些操作
- 管理网站内容页面
- 创建您喜欢数量的独立内容区域,并使用 Markdown 或 HTML WYSIWYG 编辑器创建内容
- 使用布局模板系统跨页面重用标准化和自定义布局
- 跨多个页面重用内容区域
- 管理文件
- 上传文件
- 调整图片大小
- 创建缩略图
- 管理博客文章
- 使用与内容页面相同的多功能性内容区域系统
- 管理媒体项(图片、视频、音频等...)
- 管理网站/网络应用程序设置
- 通过数据库管理所有菜单,包括前端网站(当然,这是可选的)和 admin/CMS 区域
- 管理用户
- 自定义路由、控制器和子域名(默认情况下,使用 "blog" 和 "media" 子域名)
- 使用内置前端视图和 Blade 布局或使用您自己的
但请记住,从使用所有或部分自定义控制器(Fractal 的控制器和方法路由在 config.php
中设置,以便于修改)到使用自定义视图,甚至只是自定义 CMS 设置页面中的许多可用配置设置或数据库存储设置,您可以根据需要从 Fractal 外部化对网站或网络应用程序的控制程度。
在开始目录表之前,还有一些事情需要提及
- Fractal 使用 Identify 授权/认证软件包,并使用 Twitter Bootstrap 3 作为其 CSS 框架。
- 您可以在 Trello 上的 Fractal 中查看错误修复和功能实现的路线图。
目录表
安装
安装 composer 软件包
要安装 Fractal,请确保 "regulus/fractal" 已添加到 Laravel 5 的 composer.json
文件中。
"require": {
"regulus/fractal": "0.9.*"
},
然后,从命令行运行 php composer.phar update
。Composer 将安装 Fractal 软件包。
注册服务提供者并设置别名
现在,您只需注册服务提供者,在 config/app.php
中设置 Fractal 的别名,发布资产,并运行安装命令。将以下内容添加到 providers
数组中
Regulus\Fractal\FractalServiceProvider::class,
并将以下内容添加到 aliases
数组中
'Fractal' => Regulus\Fractal\Facade::class,
在 app/Http/Kernal.php
中的 routeMiddleware
数组中添加中间件
'auth.permissions' => \Regulus\Identify\Middleware\Authorize::class,
'auth.fractal' => \Regulus\Fractal\Middleware\Authenticate::class,
添加并运行安装命令
在 app/Console/Kernel.php
中的 commands
数组中添加以下内容
\Regulus\Identify\Commands\Install::class,
\Regulus\Identify\Commands\CreateUser::class,
\Regulus\Fractal\Commands\Install::class,
设置会话域名
将 domain
变量设置为 config/sessions.php
以确保会话数据可以在子域名之间传输
'domain' => '.website.com',
然后运行以下命令
php artisan fractal:install
分形(连同识别功能)现在将进行安装。这包括所有必要的数据库迁移、数据库填充、配置发布和资源发布。
为识别功能发布的配置文件是 auth.php
,将覆盖Laravel 5的默认认证配置。默认的表名以 auth_
为前缀,但你可以通过在安装行中添加 --user-tables-prefix
选项来更改用户表的名称。
php artisan fractal:install --user-tables-prefix=none
php artisan fractal:install --user-tables-prefix=identify
前面的示例将移除所有表名的前缀,因此你会得到 users
、roles
等。后面的示例将默认的表前缀 auth
更改为 identify
,因此你的表名将是 identify_users
、identify_roles
等。
你现在应该有4个用户,分别是 Admin
、TestUser
、TestUser2
和 TestUser3
。所有的默认密码都是 password
,用户名不区分大小写,因此你可以直接输入 admin
和 password
来登录。3个初始角色是 Administrator
、Moderator
和 Member
。 Admin
拥有 Administrator
角色,TestUser
拥有 Moderator
角色,最后的两个用户拥有 Member
角色。
安装命令还会尝试自动将单例添加到 bootstrap/app.php
中,这将替换Laravel的默认 LoadConfiguration
类,以允许在Fractal的服务提供者运行后延迟加载某些配置文件。如果安装命令无法添加单例,请进入 bootstrap/app.php
并在其他单例下方添加以下内容,在 "绑定重要接口" 标题下
$app->singleton(
Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
Regulus\Fractal\Libraries\LoadConfiguration::class
);
认证安装
安装Composer包
要安装Identify,请确保 "regulus/identify" 已添加到Laravel 5的 composer.json
文件中。
"require": {
"regulus/identify": "dev-master"
},
然后从命令行运行 php composer.phar update
。Composer将安装Identify包。
注册服务提供者并设置别名
将其添加到 config/app.php
中的 providers
数组中
'Regulus\Identify\IdentifyServiceProvider',
首次登录
登录
要登录,请访问 website.com/admin
,其中 "website.com" 是你安装Fractal的网站的名称。将 "Admin" 和 "password" 作为用户名和密码输入,然后点击 "登录"。
你现在应该已经首次登录到Fractal。你现在应该能够管理CMS和网站或Web应用程序的设置。
启用开发者模式
要将 developer
会话变量设置为 true
,请访问 website.com/admin/developer
。这将识别你为Fractal的Web开发者,你可能会看到更多信息并管理额外的设置。要关闭开发者模式,请访问 website.com/admin/developer/off
。
基本用法
调整Fractal的基础URI
默认情况下,Fractal的基础URI是 admin
,这使得你的URL类似于 website.com/admin/pages/home/edit
。你可以在 config.php
中的 base_uri
变量中调整此设置。
添加额外的控制器
你可以在 config.php
中的 controllers
数组中添加额外的控制器或将现有定义的控制器指向替代项。使用 standard
表示标准Laravel控制器,使用 resource
表示资源控制器。
其他配置选项
请在各种配置文件中查找,例如 config
、blogs
、media
、tables
和 social
,以查看哪些其他配置选项可以轻松自定义。大多数配置变量都有详细的描述,应该有助于你了解如何自定义不同的内容。然而,menus
和 settings
配置文件是从数据库自动导出的,以最小化Fractal驱动的网站在页面加载时对某些数据库查询的需求。
获取视图的Bootstrap-ready菜单标记
echo Fractal::getMenuMarkup(); //get "Main" menu markup
echo Fractal::getMenuMarkup('Footer'); //get "Footer" menu markup
echo Fractal::getMenuMarkup('Footer', ['class' => 'nav nav-pills']); //set class attribute for menu
获取菜单项数组
$menu = Fractal::getMenuArray(); //get "Main" menu array
$menu = Fractal::getMenuArray('Footer'); //get "Footer" menu array
设置页面标题
分形已经使用 SolidSite 来处理页面标题、面包屑路径以及一些其他功能,这意味着如果您正在使用分形的公共布局来构建您的网站,您可以使用以下代码来设置页面标题。
//title HTML tag may look like "A Page Title :: Website.com" depending on config
Site::set('title', 'A Page Title');
//this can be used to differentiate the title that actually appears on the page from the primary title
Site::set('titleHeading', 'Alternate Title in Content');
//you may show the title using these
echo Site::title();
echo Site::titleHeading(); //will use "titleHeading" if it is set and if not will default to "title"