Grav - 主題變數



本章我們將瞭解 Grav 中的主題變數。在設計主題時,物件和變數可從 Twig 模板中訪問,這些物件和變數由 Twig 模板框架讀取和操作。

核心物件

Twig 模板有很多核心物件;每個物件都有一組變數函式

下表顯示了變數及其簡要描述。

序號 變數和描述
1

{{ base_dir }}

可以使用此變數獲取 Grav 安裝的基本檔案目錄。

2

{{ base_url }}

可以使用此變數訪問 Grav 站點的基本 URL。

3

{{ base_url_relative }}

它返回 Grav 站點基本 URL 的相對路徑。

4

{{ base_url_absolute }}

它返回 Grav 站點基本 URL 的絕對路徑。

5

{{ theme_dir }}

它用於返回當前主題的檔案目錄資料夾。

6

{{ theme_url }}

它用於返回當前主題的相對 URL。

config 物件

configuration.yaml檔案中,config 物件被設定為訪問任何 Grav 配置設定。

{{ config.pages.theme }}

它將返回當前配置的主題。

site 物件

提供對config.site物件的別名,表示在site.yaml檔案中設定的配置。

stylesheets 物件

這些物件提供一個用於儲存 CSS 樣式表資源的陣列,可以迴圈新增 CSS 到模板中。

scripts 物件

這些物件提供一個包含 JavaScript 資源的陣列,該陣列會被迴圈遍歷並將 JavaScript 新增到模板中。

page 物件

由於 Grav 的結構在pages/資料夾中定義,因此page 物件負責表示每個頁面。page 物件包含有關您當前正在處理的頁面的所有資訊。

下表顯示了 page 物件的方法。

序號 方法和描述 示例
1

summary([size])

它提供頁面內容的概要,指定大小作為引數。

如果未指定大小,則值將從system/config/site.yaml檔案中的summary.size變數獲取。

您也可以在內容中使用分隔符===。分隔符之前的內容將用於摘要。

{{ page.summary }}

或者

{{ page.summary(80) }}
2

content()

它用於獲取頁面的完整 HTML 內容。

{{ page.content }}
3

headers()

它返回在頁面 YAML 前端內容中定義的頁面標題。

title: About Us
author: Johnson
上述標題可以訪問為
The author of this page is:  {{ page.header.author }}
4

media()

它用於訪問所有媒體檔案,例如影像、影片和其他檔案。它將返回一個包含與頁面關聯的所有媒體的陣列。

{% set first_image = page.media|first %}
{% set my_pdf = page.media['myfile.pdf'] %}
{% for image in page.media.images  %}
   {{ image.html }}
{% endfor %}
5

title()

它設定為返回頁面的標題,該標題在頁面的 YAML 標題中定義。

title: My Page
6

menu()

返回menu變數的值,該值在頁面的 YAML 標題中指定。如果未設定title變數,則預設為title

title: My Blog
menu: my blog page
7

visible()

它用於設定頁面的可見性。通常,以數字後跟句點(即 01.foldername)結尾的頁面會顯示在選單中,而不包含數字值的資料夾名稱(即 foldername)則不可見。我們可以在頁面標題中覆蓋它。

title: About Us
visible: true
8

routable()

透過這個我們可以確定一個頁面是否可路由不可路由,這意味著當您將瀏覽器指向頁面時是否可以接收回內容。不可路由的頁面可用於外掛、模板等,這些頁面無法直接訪問。這在頁面標題中設定。

title: My Page
routable: true
9

slug()

使用此變數,我們可以獲取頁面 URL 中顯示的直接名稱。

my-page
10

url([include_host = false])

它用於返回頁面的 URL

{{ page.url }}  { # could return /myfolder/mypage #}

或者

{{ page.url(true) }}  {# could return http: //mysite.com/ myfolder/mypage #}
11

route()

它用於返回頁面的內部路由。

12

home()

使用此變數,您可以確定頁面是否配置為首頁。當頁面配置為首頁時返回 true,否則返回 false。您可以在system.yaml檔案中找到此設定。

13

root()

它確定當前頁面是否是層次結構的根頁面。如果它是根頁面則返回true,如果不是根頁面則返回false

14

active()

您可以使用此變數確定瀏覽器是否正在訪問當前頁面。如果瀏覽器正在訪問此頁面,則返回true;否則返回false

15

modular()

使用此變數,我們可以確定此頁面是否為模組化頁面。如果是模組化頁面則返回true,否則返回false

16

activeChild()

此變數可以確定此 URI 的 URL 是否包含活動頁面的 URL;或者,簡單來說,此頁面的 URL 是否在當前 URL 中。當您處理導航並想要知道頁面是否正在迭代相同的父頁面時,這非常有用。

17

find(url)

根據路由 URL 指定,此變數將返回 page 物件。

{% include 'modular/author-detail.html.twig' with {'page': page.find('/authors/ john-bloggs')} %}
18

collection()

此變數用於根據集合頁面標題返回上下文的頁面組。

{% for child in page.collection %}
   {% include 'partials /blog_item.html.twig' with {'page':child, 'truncate':true} %}
{% endfor %}
19

isFirst()

如果當前頁面是其同級頁面的第一個,則返回true,否則返回false

20

isLast()

如果當前頁面是其同級頁面的最後一個,則返回true,否則返回false

21

nextSibling()

參考當前位置,它從陣列中返回下一個同級頁面。

22

prevSibling()

參考當前位置,它從陣列中返回上一個同級頁面。

23

children()

根據頁面內容結構定義,此變數將返回子頁面的陣列。

24

orderBy()

此方法返回排序後的子項的排序型別。可能包含的值為defaulttitledatefolder,這些值在頁面標題中配置。

25

orderDir()

此方法返回排序後的子頁面的排序方向。值可以是asc(升序)或desc(降序)。通常這些值在頁面標題中配置。

26

orderManual()

此方法返回一個包含手動頁面排序的陣列,此排序將用於頁面的任何子項。此值通常在頁面標題中設定。

27

maxCount()

此變量表示最多允許返回多少個子頁面。通常在頁面標題中指定值。

28

children.count()

此變數返回頁面有多少個子頁面。

29

children.current()

此變數將返回當前子項。

30

children.next()

這將從子頁面陣列中返回下一個子項。

31

children.prev()

這將從子頁面陣列中返回上一個子項。

32

children.nth(position)

這將返回子項在子項陣列中的位置。

33

parent()

在巢狀樹狀結構中,當您想要向上導航到父頁面時,可以使用此變數。它將返回當前頁面的父頁面物件。

34

isPage()

使用此變數,您可以確定此頁面是否具有實際的.md檔案,或者它只是一個用於路由的資料夾。

35

isDir()

使用此變數,您可以確定當前頁面是否只是一個用於路由的資料夾。它根據情況返回truefalse

36

id()

這將返回頁面的唯一 ID。

37

modified()

它返回頁面上次修改的時間戳。

38

date()

此方法返回頁面的日期時間戳。通常在表示頁面或帖子的日期的標題中配置。如果未提供值,則預設使用修改的時間戳。

39

filePath()

透過這個,您可以獲取頁面的完整檔案路徑。

/Users/yourname/sites/ Grav/user/pages/ 01.home/default.md
40

filePathClean()

這將返回相對路徑。

user/pages/ 01.home/default.md
41

path()

這將返回當前頁面所在的目錄的完整路徑。

/Users/yourname /sites/ Grav/user/pages /01.home
42

folder()

這將返回頁面的資料夾名稱。

43

taxonomy()

這將返回與頁面連線的分類法陣列。

pages 物件

Pages 物件表示為 page 物件的巢狀樹。此巢狀樹在建立導航、站點地圖查詢特定頁面時非常有用。

children 方法

這將返回一個包含子頁面的 page 物件陣列。具有樹狀結構的 page 物件可以迭代資料夾中的每個頁面。

為了獲取選單的頂級頁面,請使用以下程式碼。

<ul class = "navigation">
   {% for page in pages.children %}
      {% if page.visible %}
         <li><a href = "{{ page.url }}">{{ page.menu }}</a></li>
      {% endif %}
   {% endfor %}
</ul>

uri 物件

可以使用 Uri 物件的多種方法訪問當前 URI 的部分。

http://mysite.com/Grav/section/category/page.json/param1:foo/param2:bar/?query1 = baz&query2 = qux:

下表顯示了 Uri 物件的方法。

序號 方法和描述 示例
1

path()

可以使用此方法訪問當前 url 的部分。

uri.path = /section/category/page
2

paths()

此方法返回路徑元素陣列。

uri.paths = [section, category, page])
3

route([absolute = false][, domain = false])

此方法返回絕對或相對URL的路由。

uri.route(true) = http://mysite.com/Grav/ section/category/page

或者,

uri.route() = /section/category/page)
4

params()

這將返回URL中的引數部分。

uri.params = /param1:foo/param2:bar
5

param(id)

這將返回引數的值。

uri.param('param1') = foo
6

query()

可以使用此方法訪問URL的查詢部分。

uri.query = query1=bar&query2=qux
7

query(id)

使用此方法可以訪問特定的查詢項。

uri.query('query1') = bar
8

url([include_host = true])

這將返回完整的URL,可能包含也可能不包含主機。

uri.url(false) = Grav/section/ category/page/param:foo?query = bar
9

extension()

這將返回副檔名,如果沒有提供,則返回html。

uri.extension = json)
10

host()

這將返回URL的主機。

uri.host = mysite.com
11

base()

這將返回URL的基本部分。

uri.base = http://mysite.com
12

rootUrl([include_host = true])

這將返回Grav例項的根URL。

uri.rootUrl() = http://mysite.com/Grav
13

referrer()

此方法返回頁面的推薦者資訊。

header 物件

它是原始頁面page.header()的替代方法。當您迴圈遍歷子頁面時,使用原始頁面 header 更合適。

content 物件

它是原始頁面page.content()的替代方法。

taxonomy 物件

站點的所有分類資訊都包含在全域性taxonomy物件中。

browser 物件

Grav 使用內建支援以程式設計方式確定使用者的平臺、瀏覽器和版本。

{{ browser.platform}}   # windows
{{ browser.browser}}    # chrome
{{ browser.version}}    # 24

新增自定義變數

自定義變數可以通過幾種方式新增。如果您使用的是站點範圍的變數,則將其放入user/config/site.yaml檔案中,您可以像下面這樣訪問它。

{{ site.my_variable }}

如果變數僅適用於特定頁面,則可以將其新增到YAML前端內容中,並使用page.header物件訪問它。

例如

title: My Page
author: John

作者姓名可以這樣訪問:

The author of this page is: {{ page.header.author }}

新增自定義物件

可以使用外掛將自定義物件新增到Twig物件中。這是一個高階主題,我們將在外掛章節中看到更多資訊。

廣告
© . All rights reserved.