开发主题
想要书写一个主题,首先在你文档根目录创建一个 .sdoc/theme 目录,接着创建一个 layout.san 文件:
.
└─ .sdoc
└─ theme
└─ layout.san到这里,就像开发一个普通的 San 应用一样。如何组织你的主题,这完全取决于你。
获取渲染内容
当前的 .md 文件渲染的内容,可以通过组件的属性 docit.content 来使用,你可能想要它显示在页面中的某个地方。一个最简单的主题,可以是一个唯一的 layout.san 组件,并包含以下内容:
<template>
<div class="theme-container">
{{docit.content | raw}}
</div>
</template>
<script>
export default {
dataTypes: {
docit: DataTypes.object
}
}
</script>目录结构
随着需求的变化,只有一个布局组件 layout.san 可能还不够,你可能想要定义更多的布局组件用于不同的页面。
那么是时候重新组织你的主题了!一个约定的主题的目录结构如下:
theme
├── global-components
│ └── xxx.san
├── components
│ └── xxx.san
├── layouts
│ ├── layout.san (必要的)
│ └── 404.san
├── styles
│ ├── index.less
│ └── palette.less
├── templates
│ ├── dev.ejs
│ └── ssr.ejs
├── index.js
└── package.jsontheme/global-components: 该目录下的组件都会被自动注册为全局组件。theme/components: San 组件。theme/layouts: 布局组件,其中layout.san是必需的。theme/styles: 全局的样式和调色板。theme/templates: 修改默认的模板文件。theme/index.js: 主题文件的入口文件。
当你将你的主题以一个 npm 包的形式发布时,如果你没有任何主题配置,即没有 theme/index.js,那么你需要将 package.json 中的 "main" 字段设置为 layouts/layout.san,只有这样 SDoc 才能正确地解析主题。
{
...
"main": "layouts/layout.san",
...
}布局组件
假设你的主题 layouts 目录如下:
theme
└── layouts
├── layout.san
└── 404.san然后,所有的页面将会默认使用 layout.san 作为布局组件,对于那些匹配不到的路由将会使用 404.vue。