[TOC]
## **介紹**
主題定義了使用October構建的網站或Web應用程序的外觀。October主題完全基于文件,可以使用任何版本控制系統進行管理,例如Git。此頁面為您提供October主題的高級描述。您可以在相應的文章中找到有關[頁面](1073311),[部件](1073832),[布局](1073833)和[內容文件的](1073834)更多詳細信息。
主題是默認情況下駐留在**/ themes**目錄中的目錄。主題可以包含以下對象:
| 對象 | 描述 |
| --- | --- |
| [頁面](1073311) | 代表網站頁面。 |
| [部件](1073832) | 包含可重復使用的HTML標記塊。 |
| [布局](1073833) | 定義頁面腳手架。 |
| [內容文件](1073833) | 可以與頁面或布局分開編輯的文本,HTML或[Markdown](http://daringfireball.net/projects/markdown/syntax)塊。 |
| **資源文件** | 是圖像,CSS和JavaScript文件等資源文件。 |
## **目錄結構**
您可以在下面看到一個示例主題目錄結構。每個October主題用一個單獨的目錄表示,通常一個激活的主題用于顯示網站。此示例顯示“網站”主題目錄。
~~~
themes/
website/ <=== Theme starts here
pages/ <=== Pages directory
home.htm
layouts/ <=== Layouts directory
default.htm
partials/ <=== Partials directory
sidebar.htm
content/ <=== Content directory
intro.htm
assets/ <=== Assets directory
css/
my-styles.css
js/
images/
~~~
> 激活主題使用文件中的`activeTheme`參數`config/cms.php`或系統> CMS>前端主題后端頁面上的主題選擇器進行設置。使用主題選擇器設置的主題會覆蓋`config/cms.php`文件中的值。
### **子目錄**
October支持頁面,部件,布局和內容文件的單級子目錄(**assets**目錄可以具有任何結構)。這簡化了組織大型網站的過程。在下面的示例目錄結構中,您可以看到pages和partials目錄包含**blog**子目錄,而content目錄包含**home**子目錄。
~~~
themes/
website/
pages/
home.htm
blog/ <=== Subdirectory
archive.htm
category.htm
partials/
sidebar.htm
blog/ <=== Subdirectory
category-list.htm
content/
footer-contacts.txt
home/ <=== Subdirectory
intro.htm
...
~~~
要從子目錄引用部分文件或內容文件,請在模板名稱前指定子目錄名稱。從子目錄渲染部分的示例:
~~~
{% partial "blog/category-list" %}
~~~
> **注意:**模板路徑始終是絕對路徑。如果在某個部件中,您從同一子目錄中呈現另一個部件,則仍需要指定子目錄名稱。
## **模板結構**
頁面,部件和布局模板最多可包含3個部分:**配置**,**PHP代碼**和**Twig標記**。部分用`==`序列分開。例如:
~~~
url = "/blog"
layout = "default"
==
function onStart()
{
$this['posts'] = ...;
}
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
~~~
### **配置部分**
配置部分設置模板參數。支持的配置參數特定于不同的CMS模板,并在相應的文檔文章中進行了描述。配置部分使用簡單的[INI格式](http://en.wikipedia.org/wiki/INI_file),其中字符串參數值包含在引號內。頁面模板的示例配置部分:
~~~
url = "/blog"
layout = "default"
[component]
parameter = "value"
~~~
### **PHP代碼部分**
每次渲染模板之前,PHP部分中的代碼都會執行。對于所有CMS模板,PHP部分是可選的,其內容取決于定義它的模板類型。PHP代碼部分可以包含可選的打開和關閉PHP標記,以在文本編輯器中啟用語法突出顯示。應始終在節分隔符的另一行上指定打開和關閉標記`==`。
~~~
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['posts'] = ...;
}
?>
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
~~~
在PHP部分中,您只能定義函數并使用PHP`use`關鍵字引用名稱空間。PHP部分中不允許其他PHP代碼。這是因為在解析頁面時PHP部分將轉換為PHP類。使用命名空間引用的示例:
~~~
url = "/blog"
layout = "default"
==
<?
use Acme\Blog\Classes\Post;
function onStart()
{
$this['posts'] = Post::get();
}
?>
==
~~~
作為設置變量的一般方法,您應該使用數組訪問方法`$this`,盡管為了簡單起見,您可以將**對象訪問用作只讀**,例如:
~~~
// Write via array
$this['foo'] = 'bar';
// Read via array
echo $this['foo'];
// Read-only via object
echo $this->foo;
~~~
### **Twig標記部分**
Twig部分定義了模板要呈現的標記。在Twig部分,您可以使用[October提供的](#666)函數,標記和過濾器,所有本[機Twig功能](http://twig.sensiolabs.org/documentation)或[插件提供的](1074009#Twig_9)功能。Twig部分的內容取決于模板類型(頁面,布局或部分)。您可以在文檔中找到有關特定Twig對象的更多信息。
可以[在標記指南中](#666)找到更多信息。
## **主題日志**
OctoberCMS附帶了一個非常有用的功能,默認情況下禁用,稱為主題記錄。
由于布局和頁面將大部分數據存儲在平面文件中,因此您或您的客戶可能會意外丟失內容。例如,切換頁面的布局將修改頁面的支架,因此導致數據丟失。
要啟用主題日志記錄,只需轉到**設置 - >日志設置**并啟用**日志主題更改**。現在記錄所有更改。
可以在**“設置” - >“主題日志”中**查看主題更改**日志**。每次更改都會概述已添加/刪除的內容,以及之前和之后已更改文件的副本。如有必要,您可以使用此信息來確定還原更改的相應操作。
- 安裝程序
- 安裝
- 配置
- CMS
- 主題
- 頁面
- 部件
- 布局
- 內容
- 組件
- 媒體
- 標記指南
- AJAX
- 介紹
- 事件處理
- 更新部件
- 數據屬性API
- JavaScript API
- 額外特征
- 主題
- 開發主題
- 插件
- 注冊
- 版本
- 使用Composer
- 構建組件
- 設置和配置
- 本地化
- 任務調度
- 擴展插件
- 后臺
- 控制器和AJAX
- 視圖和部件
- 小工具
- 表單
- 列表
- 關聯
- 重新排序
- 導入導出
- 用戶和權限
- 用戶界面指南
- 數據庫
- 基本用法
- 結構
- 查詢構造器
- 模型
- 關聯
- 附件
- 集合
- 訪問器和修改器
- 序列化
- 特性
- 行為
- 服務
- 應用
- 行為
- 緩存
- 集合
- 錯誤&日志
- 事件
- 表單&HTML
- 文件系統/CDN
- 哈希&加密
- 助手函數
- 郵件
- 分頁
- 分析器
- 隊列
- 請求&輸入
- 響應&視圖
- 路由
- Session
- 驗證
- 控制臺
- 命令
- 腳手架
- 開發
- API文檔
- 附錄
- 單元測試
- 質量指南
- 開發指南