# 主題
創建 Hexo 主題非常容易,您只要在 `themes` 文件夾內,新增一個任意名稱的文件夾,并修改 `_config.yml` 內的 `theme` 設定,即可切換主題。一個主題可能會有以下的結構:
```
.
├── _config.yml
├── languages
├── layout
├── scripts
└── source
```
### _config.yml
主題的配置文件。修改時會自動更新,無需重啟服務器。
### languages
語言文件夾。請參見 [國際化 (i18n)](internationalization.html)。
### layout
布局文件夾。用于存放主題的模板文件,決定了網站內容的呈現方式,Hexo 內建 [Swig](http://paularmstrong.github.com/swig/) 模板引擎,您可以另外安裝插件來獲得 [EJS](https://github.com/hexojs/hexo-renderer-ejs)、[Haml](https://github.com/hexojs/hexo-renderer-haml) 或 [Jade](https://github.com/hexojs/hexo-renderer-jade) 支持,Hexo 根據模板文件的擴展名來決定所使用的模板引擎,例如:
```
layout.ejs - 使用 EJS
layout.swig - 使用 Swig
```
您可參考 [模板](templates.html) 以獲得更多信息。
### scripts
腳本文件夾。在啟動時,Hexo 會載入此文件夾內的 JavaScript 文件,請參見 [插件](plugins.html) 以獲得更多信息。
### source
資源文件夾,除了模板以外的 Asset,例如 CSS、JavaScript 文件等,都應該放在這個文件夾中。文件或文件夾開頭名稱為 `_`(下劃線線)或隱藏的文件會被忽略。
如果文件可以被渲染的話,會經過解析然后儲存到 `public` 文件夾,否則會直接拷貝到 `public` 文件夾。
### 發布
當您完成主題后,可以考慮將它發布到 [主題列表](/themes),讓更多人能夠使用您的主題。在發布前建議先進行 [主題單元測試](https://github.com/hexojs/hexo-theme-unit-test),確保每一項功能都能正常使用。發布主題的步驟和 [更新文檔](contributing.html#更新文檔) 非常類似。
1. Fork [hexojs/site](https://github.com/hexojs/site)
2. 把庫(repository)復制到電腦上,并安裝所依賴的插件。
```
$ git clone https://github.com/<username>/site.git
$ cd site
$ npm install
```
3. 編輯 `source/_data/themes.yml`,在文件中新增您的主題,例如:
```
- name: landscape
description: A brand new default theme for Hexo.
link: https://github.com/hexojs/hexo-theme-landscape
preview: http://hexo.io/hexo-theme-landscape
tags:
- official
- responsive
- widget
- two_column
- one_column
```
4. 在 `source/themes/screenshots` 新增同名的截圖檔案,圖片必須為 800x500 的 PNG 文件。
5. 推送(push)分支。
6. 建立一個新的合并申請(pull request)并描述改動。
- 文檔
- 開始使用
- 概述
- 建站
- 配置
- 指令
- 遷移
- 基本操作
- 寫作
- Front-matter
- 標簽插件(Tag Plugins)
- 資源文件夾
- 數據文件
- 服務器
- 生成文件
- 部署
- 自定義
- 永久鏈接(Permalinks)
- 主題
- 模版
- 變量
- 輔助函數(Helpers)
- 國際化(i18n)
- 插件
- 其他
- 問題解答
- 貢獻
- API
- 核心
- 概述
- 事件
- 局部變量
- 路由
- Box
- 渲染
- 文章
- 腳手架(Scaffold)
- 主題
- 擴展
- 控制臺(Console)
- 部署器(Deployer)
- 過濾器(Filter)
- 生成器(Generator)
- 輔助函數(Helper)
- 遷移器(Migrator)
- 處理器(Processor)
- 渲染引擎(Renderer)
- 標簽插件(Tag)