Blade原理及应用

huzunjie @ 奇舞团

一套CMS系统的设计、实现、应用

大纲

  • Blade基本原理
  • 项目接入及权限控制
  • 一个典型文章站
  • 问题排查
  • 附加功能

Blade 基本原理

模板

页面

静态资源

编译、静态化

推送文件到业务服务器

数据

分类

模型(数据表)

内容管理

模板及页面
频道列表页
首页
聚合专题页
文章详情页

接下来

通过示例站点的开发了解Blade主要功能

新建站点&权限管理

  1. 团队
  2. 项目
  3. 站点
  1. 基本信息配置
  2. 服务器及目录映射配置
  3. 自定义扩展配置

网站开发涉及的功能

  1. 分类
  2. 模型 & 数据
    一个站点项目的数据层建模抽象,可灵活‘动态’复用的关键。
  3. 模板
    模板的路径可以是‘动态’不固定的,分类是绑定数据与模板的纽带。
    通过语法标记完成数据的引用(这一点页面是一样的)。
  4. 页面
    路径是‘静态’固定的,静态化后一个页面映射为一个HTML页面。

Blade语法标记

  1. 板块 cms:block - 代码片段
  2. 样式 cms:style  - CSS代码
  3. 脚本 cms:script - JS代码
  4. 函数 cms:func - 服务端函数

自定义内容标记

数据处理标记

  1. 翻页列表 cms:list
  2. 数据查询 cms:query
  3. 数据详情 cms:data
  4. 跨站数据 cms:csref
  5. 远程数据 cms:remote

辅助类标记

  1. 翻页组件 cms:pager
  2. 类目列表 cms:catgs
  3. 面包屑 cms:crumb
  4. PHP标记 cms:php
  5. 扩展组件 cms:module
  6. 注释标记 cms:comment
Smarty版渲染语句的语法标记:
{cms:data id="abc"}
    {%$cmsRet.content%}
{/cms}
PHP版渲染语句的语法标记:
{cms:data id="abc"}
    <?php
    echo $cmsRet['content'];
    ?>
{/cms}

语法标记块内的环境变量

  • $cmsRet
    标记块输出内容
  • $cmsCtx
    读取上下文信息,比如通过 $cmsC
    tx['block_attrs'] 获取板块标记的自定义属性值...
  • $cmsSet
    到站点&分类&页面&模板的自定义设置
  • $cmsVar
    通过 $cmsVar->set('k', 'v') 和 $cmsVar->get('k') 可存取模板级全局变量
  • $cmsMod
    调用扩展模块,比如使用 $cmsMod->Data_fetchList({...opts...}) 查询数据...
  • $cmsFunc
    调用自定义函数,比如$cmsFunc->formatDate("m-d",$time) 进行日期格式化...

内容发布

  • 手动发布
    • 模板
    • 页面
    • 数据
    • 分类
      数据类目至少绑定一个模板
  • 定时发布
    • 页面
    • 分类
    • 数据

问题排查

  • 预览
    • ​模板
    • 页面
    • 数据
  • 同步检测
  • 发布日志
  • 版本信息
  • 静态快照

附加功能

  • 站点导入导出
    • 导出物理文件到本地
    • 离线批量编辑
    • 批量导入、复制站点
  • 静态资源管理
    • 上传
    • 下载
    • 发布
  • 扩展‘钩子’
    • 服务端扩展组件
    • 前端扩展组件

谢谢

Blade原理与应用

By 胡尊杰

Blade原理与应用

  • 796