Statamic:扁平文件 CMS 教程

June 24, 2026 · View on GitHub

简介

Statamic 是一个基于 Laravel 构建的现代扁平文件内容管理系统。它使用 Markdown 和 YAML 文件存储内容,而非数据库。本教程涵盖安装、内容建模以及使用 Statamic 构建完整网站。

为什么选择扁平文件 CMS

特性扁平文件(Statamic)数据库 CMS
存储YAML/Markdown 文件MySQL/PostgreSQL
设置无需数据库需要数据库配置
版本控制Git 友好的内容需要导出工具
性能文件读取,可选缓存基于查询
托管任何 PHP 主机需要数据库主机
备份复制文件导出数据库

系统要求

组件最低要求推荐配置
PHP8.18.2 或 8.3
Composer2.x最新版
Node.js16+18+ LTS
Web 服务器Apache/NginxNginx + PHP-FPM
扩展mbstring、xml、curl、zip所有 PHP 扩展

安装

全新安装

composer create-project statamic/statamic my-site
cd my-site
php artisan statamic:install

添加到现有 Laravel 项目

composer require statamic/cms
php artisan statamic:install

目录结构

目录用途
content/所有页面、条目、分类法
resources/视图(Antlers 模板)、CSS、JS
public/网站根目录、资源文件
config/站点和插件配置
users/用户账户(YAML 文件)
storage/日志、缓存、临时文件
app/自定义 PHP 代码、控制器

内容架构

集合(Collections)

集合将相关内容条目分组。

集合类型用例示例
Blog(博客)基于时间的文章文章、新闻
Pages(页面)静态页面关于、联系
Products(产品)电商商品目录条目
Events(活动)基于日期的内容会议、聚会

创建集合

  1. 运行 php please make:collection blog
  2. 编辑 content/collections/blog.yaml
  3. 定义蓝图字段
  4. 以 Markdown 文件形式添加条目

条目结构

字段格式用途
titleString条目标题
slugStringURL 安全标识符
dateDate发布日期
authorString内容作者
templateStringAntlers 模板名称
bodyMarkdown主要内容

蓝图(Blueprints)

蓝图定义内容条目的结构。

字段类型用例
text标题、名称、短字符串
textarea描述、摘要
markdown富文本内容
select下拉选项
assets图片和文件上传
entries与其他条目的关联
date日期和时间选择器
toggle布尔标志
bard基于块的富文本编辑器
repeater可重复的字段组

使用 Antlers 模板

Antlers 是 Statamic 的原生模板引擎。

基本语法

语法用途
{{ title }}输出变量
{{ if title }}...{{ /if }}条件块
{{ entries }}...{{ /entries }}遍历集合
{{ partial "header" }}包含局部模板
{{ yield "content" }}区域输出
{{ slot }}组件插槽

模板层级

模板范围优先级
default.antlers.html所有页面的后备模板最低
blog.antlers.html博客列表中等
blog/show.antlers.html单篇博客文章较高
_entry.antlers.html集合级覆盖最高

导航

创建导航

导航用途
main主站导航
footer页脚链接
sidebar侧边栏菜单

分类法(Taxonomies)

分类法对跨集合的条目进行分类。

分类法示例
tags技术、设计、新闻
categories博客文章分类
colors产品颜色选项

资源与媒体

功能描述
Asset Containers映射到存储磁盘的文件夹
Glide 集成实时图片处理
Alt Text无障碍图片描述
Focal Point智能裁剪中心

表单

表单类型用例
Contact(联系)用户咨询
Newsletter(通讯)邮件订阅
Search(搜索)内容搜索

用户与权限

角色默认权限
Super Admin(超级管理员)完全访问
Editor(编辑)编辑和发布内容
Author(作者)创建和编辑自己的内容
Viewer(查看者)只读访问

多语言支持

功能配置
Locales(区域设置)在 config/statamic/sites.php 中定义
Content(内容)每个区域设置的 Markdown 文件
Routing(路由)自动区域前缀
Fallback(回退)翻译缺失时显示默认区域内容

部署

方法步骤
Git推送内容和模板,在服务器上拉取
CI/CD构建资源、运行迁移、清除缓存
手动通过 FTP/SFTP 上传文件

生产环境清单

任务命令
缓存配置php artisan config:cache
缓存路由php artisan route:cache
缓存视图php artisan view:cache
静态缓存在 config/statamic/static_caching.php 中启用

性能优化

技术收益
静态缓存提供预渲染的 HTML
CDN全球分发资源
图片优化减小文件大小
Stache 缓存加速内容索引

总结

Statamic 将扁平文件存储的简洁性与 Laravel 的强大功能相结合。其 Antlers 模板系统、蓝图机制和 Git 友好的内容管理方式,使其非常适合希望完全掌控内容和基础设施、又不想承担传统数据库开销的开发者。