siipis / cms
基于Twig和Laravel构建的内容管理系统
Requires
- php: >=5.5.9
- laravel/framework: >=5.2.0
- rcrowe/twigbridge: ^0.9.1
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 19:31:04 UTC
README
基于Twig和Laravel构建的内容管理系统
使用composer require siipis/cms
安装
已知问题
模板缓存会导致页面配置问题。您可以定期通过运行控制台命令twig:clean
或完全禁用缓存来解决。
在twigbridge.php
配置文件中将'cache' => false,
设置为禁用缓存。
使用方法
服务提供者 & Facade
在app.php
配置文件中添加以下行
提供者
Siipis\CMS\ServiceProvider::class,
别名
'Twig' => TwigBridge\Facade\Twig::class,
'YAML' => Symfony\Component\Yaml\Yaml::class,
'CMS' => Siipis\CMS\Facade\CMS::class,
'CMS_Helper'=> Siipis\CMS\Facade\Scaffolding::class,
'CMS_Parser'=> Siipis\CMS\Facade\Parser::class,
路由
在routes.php
文件末尾添加
/*
* Catch-all route for views
*/
Route::get('{route}', function ($route) {
return CMS::view($route);
})->where('route', '.*');
在resources/views/pages
下添加一个twig文件,以在控制器之间提供视图。
在控制器中
可以使用CMS::view('page')
通过CMS facade提供CMS视图。注意,路径相对于pages目录。
文件夹配置
直接在模板根目录(默认为resources/views
)下放置以下目录
- layout
- menus
- pages
- partials
扩展Twig语法
{% page %}
用于在布局文件中指示页面放置位置。
{% title %}
页面标题的占位符标签。
包含助手
以下助手标签用于清理语法。所有路径相对于包含类型。
- {% menu 'filename' %}
- {% partial 'filename' %}
布局页面
页面包含可选的配置部分,位于文件开头。分隔符是===
。
典型布局文件
title: Welcome
layout: default
with:
- world: "Twig"
data:
- users:all
===
Hello {{ world }}
<br />
{% for user in users %}
<p>{{ user.name }}</p>
{% endfor %}
可用的配置标签
title
:页面标题,使用{% title %}附加layout
:布局目录中的文件名,带或不带.twig扩展名with
:要发送到页面的键值属性data
:数据提供者访问器
数据提供者
数据提供者扩展CMS\DataProvider
类,可以用于在没有控制器的情况下提供数据。
使用php artisan make:data ProviderName
创建新的数据提供者。默认情况下,数据提供者位于app/CMS/Data
目录。
数据提供者必须实现三个方法
getAccessor
:由配置调用的访问器名称,例如'users'。dataAll()
:返回所有条目,使用<accessor>:all
调用。dataOne($id)
:返回单个条目,使用<accessor>:one[1]
调用。
可以通过创建附加方法来创建其他方法。
访问数据
数据会自动发送到视图,可以通过访问器名称访问,例如{{ users }}
。如果调用users:one[1]
,则访问器为单数,即user
。
伪数字
访问器方法接受以下伪数字(例如:users:one[#auth])
#auth
:返回认证用户的ID,如果没有登录则返回null。#url
:返回最后的URL查询,例如http://example.com/foo/bar
返回bar
。
伪数字定义在CMS\Parser\DataParser.php
中。