siipis/cms

基于Twig和Laravel构建的内容管理系统

1.0.0 2016-12-14 13:38 UTC

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中。