Ghost 页面地址与动态路由配置
3 min read

Ghost 页面地址与动态路由配置

路由是将URL映射到Ghost中的数据和模板的系统。默认情况下,它是预先配置的,但也可以进行自定义以构建强大的自定义站点结构。

Ghost的所有路由配置都在 content/settings/routes.yaml,您可以直接编辑,但也可以从Settings » Labs的管理面板中上传/下载此文件。

如果是直接编辑,需要重启Ghost;上传会直接生效。

基础配置

所有新安装的Ghost,都会有一个默认的routes.yaml,这里面包含了最基础的结构。网站主页是文章的按时间倒序排列的列表,每个文章都位于由 {slug} 参数定义的自己的URL上,比如my-great-post。还有其他按标签和作者分类的文章归档。

## routes.yaml

routes:

collections:
  /:
    permalink: /{slug}/
    template: index

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/

这种结构可以满足大部分场景的需求,不需要额外的定制。

YAML 介绍

YAML代表另一种标记语言(Yet Another Markup Language) -- 因为在计算机科学中没有足够的无趣的首字母缩略词。你可以把它简单地想象成没有所有括号和逗号的JSON。简而言之,它是一种用于存储嵌套键值对(key:value)的文档格式,通常用于简单/可读配置。

使用YAML时要知道的最重要的事情是它使用缩进来表示结构。这意味着唯一有效的嵌套类型是2个空格

YAML文件不工作的最常见原因是您不小心使用了错误的缩进类型或间距数量。所以请密切关注!

动态路由使用场景

也许你希望你的主页是一个简单的登陆页面,所有的文章在site.com/writing/地址下。也许你真的想把你的网站分成两个主要的内容集合,比如/blog//podcast/。也许你只是想改变归档的地址,从/tag/news/改为/archive/news/

如果你想创建一个与上面描述的不同的站点结构,那么动态路由是你实现所有希望和梦想所需要的。

自定义路由

模板路由允许您将单个url映射到Ghost主题中的特定模板文件。比如: /custom/ 加载 custom.hbs这个模板。

需要注意的是:默认情况下,自定义路由不会加载任何的数据。

routes:
  /features/: features
  /about/team/: team

上面的代码中,增加了两个URL,site.com/features/site.com/about/team/,冒号右边的 features 和 team 代表 .hbs 模板,需要在主题中增加这两个模板。

加载数据

比如想在/about/team/这个页面展示团队成员信息,需要把routes改为如下:

routes:
  /features/: features
  /about/team/:
    template: team
    data: page.team

参考文档

Ghost Themes - Dynamic URLs & Routing
Build dedicated URL structures using Ghost’s dynamic routing system, for custom homepages, podcasts, categories and more.