Grav - Twig 過濾器和函式



在本章中,讓我們學習一下**Twig 過濾器和函式**。過濾器用於以所需的輸出格式化資料。函式用於生成內容。

Twig 模板是包含表示式和變數的檔案,這些表示式和變數將被值替換。Twig 使用三種類型的標籤。

  • **輸出標籤** - 以下語法用於在此處顯示已計算表示式的結果。

{{  Place Your Output Here  }}
  • **動作標籤** - 以下語法用於在此處執行語句。

{%  executable statements are placed here  %}
  • **註釋標籤** - 以下語法用於在 Twig 模板檔案中編寫註釋。

{#  write your comment here  #}

Twig 過濾器

Twig 過濾器使用**|**字元將過濾器應用於 Twig 變數,後跟過濾器名稱。類似於 Twig 函式,可以在括號中傳遞引數。

下表顯示了 Grav 中使用的 Twig 過濾器 -

序號 過濾器和描述 示例
1

絕對 URL

它獲取相對路徑並將其轉換為絕對 URL。

'<img src="/some/path/img.jpg"/>' |absolute_url

轉換為 -

<img src="http://learn.getGrav.org/some/path/img.jpg" />
2

駝峰式命名法

它將字串轉換為駝峰式命名法格式。

'contact_us'| camelize

轉換為 -

ContactUs
3

包含

如果找到字串。

'This is some string' | contains('some')

輸出為 -

1
4

已定義

您可以檢查某些變數是否已定義。如果變數未定義,您可以提供預設值。

set header_image_width = 
page.header.header_image_width|defined(900)

如果未定義,它將**header_image_width**的值設定為 900。

5

以…結尾

您可以使用 Ends-With 過濾器確定字串是否以給定字串結尾。

'this is an example for ends-with filter' | ends_with('filter')

顯示為 -

True
6

欄位名稱

它透過將點更改為陣列表示法來過濾欄位名稱。

'field.name'|fieldName

顯示為 -

field[name]
7

人性化

它用於將字串轉換為人類可讀格式。

'some_text_to_read'|humanize

顯示為 -

Some text to read
8

Ksort

它使用鍵對陣列對映進行排序。

{% set ritems = {'orange':1, 'apple':2, 'peach':3}|ksort %}
{% for key, value in ritems %}{{ key }}:{{ value }}, {% endfor %}

顯示為 -

apple:2, orange:1, peach:3,
9

左修剪

它用於刪除字串開頭的空格,並從字串左側刪除給定的匹配字元。

'/strip/leading/slash/'|ltrim('/')

顯示為 -

strip/leading/slash/
10

Markdown

它用於使用 Grav 的 markdown 解析器將包含 markdown 的字串轉換為 HTML。

'## some text with markdown'|markdown

顯示為 -

some text with markdown

11

MD5

可以使用此過濾器建立字串的 md5 雜湊。

'something'|md5

顯示為 -

437b930db84b8079c2dd804a71936b5f
12

月化

使用 Monthize 過濾器,我們可以將整數天數轉換為月數。

'61'|monthize

顯示為 -

2
13

漂亮的時間

使用 Nice Time 過濾器,我們可以獲得人類可讀的時間格式的日期作為輸出。

page.date|nicetime(false)

顯示為 -

3 hrs ago
14

序數化

可以使用 Ordinalize 過濾器為整數提供序數(如第 1 位、第 2 位、第 3 位)。

'78'| ordinalize

顯示為 -

78th
15

複數化

可以使用 Pluralize 過濾器將字串轉換為其英語複數形式。

'child'|pluralize

顯示為 -

children
16

隨機化

此過濾器有助於隨機化提供的列表。如果引數包含任何值,則這些值將跳過隨機化。

{% set ritems = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']|randomize(3) %}
{% for ritem in ritems %}{{ ritem }}, {% endfor %}

顯示為 -

one, two, three, eight, six, five, nine, seven, ten, four,
17

右修剪

它與左修剪非常相似,只是它刪除字串右側的空格和匹配字元。

'/strip/leading/slash/'|rtrim('/')

顯示為 -

/strip/leading/slash
18

單數化

可以使用 Singular 過濾器將字串轉換為英語單數版本。

'vehicles'|singularize

顯示為 -

vehicle
19

安全電子郵件

Safe Email 過濾器用於將電子郵件地址轉換為 ASCII 字元,以便更難以對電子郵件進行垃圾郵件傳送。

"someoneemailaddress@domain.com"|safe_email

輸出為 -

someoneemailaddress@domain.com
20

按鍵排序

它用於使用鍵對陣列對映進行排序。

{% set people = [{'email':'john@gmail.com', 'id':3}, {'email':'melw@fdd.com', 'id':1}, {'email':'nancy@fb.com', 'id':7}]|sort_by_key('id') %}
{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}

它顯示 -

melw@fdd.com:1, john@gmail.com:3, nancy@fb.com:7,
21

以…開頭

您可以使用 Starts-With 過濾器確定字串是否以給定字串開頭。

'this is an example for starts-with filter' |starts_with('this')

輸出為 -

true
22

翻譯

瞭解更多詳細資訊。

MY_LANGUAGE_KEY_STRING

它顯示 -

'Some text in English'
23

翻譯管理員

它將字串翻譯成當前語言,該語言在**user.yaml**檔案中設定。

24

標題化

使用 Titleize 將字串轉換為標題大小寫格式。

'welcome page'|titleize

顯示為 -

Welcome Page
25

下劃線化

使用 UnderScoreize 過濾器進行格式化。

'ContactUs'|underscorize

它轉換為 -

contact_us
26

截斷字串

您可以使用 Truncate 來截斷字串或縮短字串,您必須指定字元數。

'one sentence. two sentences'|truncate(5)

它截斷為 -

one s...

如果您不想在給定字元數後將字串截斷到最接近的句子結尾,則可以使用**true**作為引數。

'one sentence. two sentences'|truncate(5, true)

它截斷為 -

one sentence
您還可以剝離 HTML 文字,但您應該在**truncate**過濾器之前使用**striptags**過濾器。
'<p>one <strong>sentence<strong>. two sentences</p>'|striptags|truncate(5)

顯示為 -

one s

Twig 函式

Twig 函式透過傳遞引數直接呼叫。下表列出了這些函式 -

序號 函式和描述 示例
1

陣列

此函式將值強制轉換為陣列。

array(value)
2

授權

此函式使經過身份驗證的使用者有權檢視資源,並接受許可權字串或許可權字串陣列。

authorize(['admin.statistics', 'admin.super'])
3

轉儲

它接受一個有效的 twig 變數並將其轉儲到 Grav 偵錯程式面板中。但是,應啟用偵錯程式才能檢視訊息選項卡值。

dump(page.header)
4

除錯

此函式與 dump() 函式相同。

5

摘要

此函式根據 Github Gist ID 建立 Gist 嵌入程式碼。

6

隨機字串生成

此函式將建立具有指定字元數的隨機字串。這些字串可以用作唯一 ID 或金鑰。

generate_random_string(10)
7

重複

此函式將重複給定次數的字串。

repeat('Grav ', 10) will repeat Grav 10 times.
8

字串

生成指定字元長度的隨機字串。

ta (23)
9

翻譯陣列

它是一個與**|ta**過濾器相關的函式。

10

網址

此過濾器將建立 URL,並且還將 PHP URL 流轉換為有效的 HTML 資源。如果無法解析 URL,則可以傳遞預設值。

url('theme://images/logo.png') | default('http://www.placehold.it/150x100/f4f4f4')
11

翻譯

使用 Translate 過濾器,字串將被翻譯為**|t**過濾器。

t('SITE_NAME')

翻譯為 -

Site Name
廣告

© . All rights reserved.