主題
介紹
主題定義了October構建的網站或Web應用程式的外觀。主題完全基於檔案定義,可以使用任何版本控制軟體管理。
主題儲存在專案的themes目錄的對應子目錄中。主要包含以下部分:
名稱 Description
Pages 網站的頁面
Partials 可以重用的HTML標記塊
Layouts 定義頁面的結構
Content files 可以是文字,HTML程式碼和Markdown 程式碼塊,主要用於與Page和Layout進行分開編輯維護。
Asset files 資原始檔包含圖片、樣式表和JS指令碼檔案。
主題的目錄結構
每個主題都有一個獨立的目錄,只有啟用的主題才會顯示在網站上。基本結構的例子:
themes/
website/ <=== 主題的目錄
pages/ <=== Pages(頁面目錄)
home.htm
layouts/ <=== Layouts(佈局目錄)
default.htm
partials/ <=== Partials(部件目錄)
sidebar.htm
content/ <=== Content(內容目錄)
intro.htm
assets/ <=== Assets (資源目錄)
css/
my-styles.css
js/
images/
啟用主題的方式有後臺操作和修改配置檔案兩種方式,修改config/cms.php檔案中的activeTheme的設定值。或者,採取後臺設定,操作步驟為:設定——內容管理——前端主題——選擇一個主題啟用即可。
子目錄
October支援單層子目錄,有Pages、Partials、Layouts、Content和Assets目錄。這樣簡化了大型網站的目錄結構。
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檔案或者Content檔案,格式為:{% 名稱 + 路徑 %},比如:
{% partial "blog/category-list" %}
上述表示,引入一個Partial部件,部件的位置及檔案為:Partials/blog/category-list.htm。注意,模板路徑總是絕對的,在同一個Partial目錄中,引用同目錄中的另外一個Partial,也必須寫完整的子目錄名稱。
模板結構
對於Page、Partial和Layout他們所對應的模板結構,都是包含了三個部分:Configuration,PHP Code,Twig markup。各個部分之間通過 ” == ” 進行分割開來。
url = "/blog"
layout = "default"
==
function onStart()
{
$this[`posts`] = ...;
}
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
COnfiguration Section 【配置部分】
配置部分用於設定模板引數,具體引數與不同的模板相關,因型別而不同。配置部分使用簡化的” ini “格式,字串引數值必須包含在雙引號中。
url = "/blog"
layout = "default"
[component]
parameter = "value"
PHP Code (PHP程式碼部分)
在模板每次渲染之前,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部分,只能定義函式,允許使用use引入名稱空間。但是除了這些不允許其他PHP程式碼。
url = "/blog"
layout = "default"
==
<?
use AcmeBlogClassesPost;
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 Markup Section(Twig標記部分)
Twig是一個靈活,快速,安全的PHP模板語言。 Twig標記部分定義要由模板呈現的內容。在這個部分可以使用October提供的函式、標記或者過濾器。其內容取決於模板型別(page、layout、partial)。
主題日誌記錄
主題日誌記錄是一個非常有用的功能,預設情況下是禁用的。由於佈局和頁面的內容儲存在檔案中,可能會發生丟失內容的情況,主題日誌記錄可以將這些修改產生的變化都記錄下來。
啟用主題日誌記錄,可以進入設定——日誌——日誌設定——啟用主題更改。設定完成後,儲存設定,重新整理頁面則可以看見在日誌——主題日誌,點選可以檢視。