Grav - Twig 过滤器和函数

在本章中,让我们学习Twig 过滤器和函数。过滤器用于按您想要的方式格式化数据,并提供所需的输出。函数用于生成内容。

Twig 模板是包含表达式和变量(由值替换)的文本文件。Twig 使用三种类型的标签。

  • 输出标签 − 以下语法用于在此处显示评估的表达式结果。

{{ 在此处放置您的输出 }}
  • 操作标签 −以下语法用于在此处执行语句。

{% 可执行语句放在此处 %}
  • 注释标签 − 以下语法用于在 Twig 模板文件中写入注释。

{# 在此处写入您的注释 #}

Twig 过滤器

Twig 过滤器使用 | 字符将过滤器应用于 Twig 变量,后跟过滤器名称。参数可以像 Twig 函数一样在括号中传递。

下表显示了 Grav 中使用的 Twig 过滤器 −

Sr.No. 过滤器 &描述 示例
1

Absolute URL

它采用相对路径并将其转换为绝对 URL。

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

转换为 −

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

Camelize

它将字符串转换为 CamelCase 格式。

'contact_us'| camelize

转换为 −

ContactUs
3

Contains

如果找到字符串。

'这是一些字符串' | contains('some')

输出为 −

1
4

Defined

您可以检查某些变量是否已定义。如果变量未定义,则可以提供默认值。

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

如果未定义,则将 header_image_width 设置为值 900。

5

Ends-With

您可以使用 Ends-With 过滤器确定字符串是否以给定字符串结尾。

'这是 ends-with 过滤器的示例' | ends_with('filter')

显示为 −

True
6

FieldName

通过将点转换为数组表示法来过滤字段名称。

'field.name'|fieldName

显示为 −

field[name]
7

Humanize

用于将字符串转换为人类可读的格式。

'some_text_to_read'|humanize

显示为 −

一些要阅读的文本
8

Ksort

使用 key 对数组映射进行排序。

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

显示为 −

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

Left Trim

用于删除字符串开头的空格并从字符串左侧删除匹配的字符。

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

显示为 −

strip/leading/slash/
10

Markdown

使用 Grav 的 markdown 解析器将包含 markdown 的字符串转换为 HTML。

'## some text带有 markdown'|markdown

显示为 −

一些带有 markdown 的文本

11

MD5

可以使用此过滤器创建字符串的 md5 哈希值。

'something'|md5

它显示为 −

437b930db84b8079c2dd804a71936b5f
12

Monthize

通过使用Monthize过滤器,我们可以将整数天数转换为月份数。

'61'|monthize

它显示为−

2
13

Nice Time

通过使用 Nice Time 过滤器,我们可以获得一个易于阅读的时间格式的日期作为输出。

page.date|nicetime(false)

它显示为 −

3 hrs ago
14

Ordinalize

可以使用 Ordinalize 过滤器将序数(如 1st、2nd、3rd)赋予整数。

'78'| ordinalize

显示为 −

78th
15

Pluralize

使用 Pluralize 过滤器可以将字符串转换为复数英语形式。

'child'|pluralize

显示为 −

children
16

Randomize

此过滤器有助于随机化提供的列表。如果参数包含任何值,则这些值将从随机化中跳过。

{% 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

Right Trim

它与左修剪非常相似,只是它会从字符串右侧删除空格和匹配的字符。

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

它显示为 −

/strip/leading/slash
18

Singularize

使用 Singular 可以将字符串转换为英语单数版本过滤器。

'vehicles'|singularize

显示为 −

vehicle
19

Safe Email

安全电子邮件过滤器用于将电子邮件地址转换为 ASCII 字符,从而使电子邮件更难被发送为垃圾邮件。

"someoneemailaddress@domain.com"|safe_email

输出为 −

someoneemailaddress@domain.com
20

SortByKey

用于使用键对数组图进行排序。

{% 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

您可以使用 Starts-With 过滤器确定字符串是否以给定字符串开头。

'这是 starts-with 过滤器的示例' |starts_with('this')

输出为 −

true
22

Translate

以获取更多详细信息。

MY_LANGUAGE_KEY_STRING

它显示−

'一些英文文本'
23

Translate Admin

它将字符串翻译成在 user.yaml 文件中设置的当前语言。

24

Titleize

使用 Titleize 将字符串转换为 Title Case 格式。

'欢迎page'|titleize

显示为 −

欢迎页面
25

UnderScoreize

使用 UnderScoreize 过滤器格式化。

'ContactUs'|underscorize

转换为 −

contact_us
26

Truncate a string

您可以使用 Truncate 截断字符串或​​缩短字符串,必须指定字符数。

'一个句子。两个句子'|truncate(5)

它截断为 −

一个句子...

如果您不想在给定字符数后将字符串截断到最近的句子末尾,则可以使用 true 作为参数。

'一个句子。两个句子'|truncate(5, true)

它截断为 −

一个句子
您也可以删除 HTML 文本,但应在 truncate 过滤器之前使用 striptags 过滤器。
'<p>一个 <strong>句子<strong>. 两个句子</p>'|striptags|truncate(5)

它显示为 −

一个 s

Twig 函数

通过传递参数直接调用 Twig 函数。下表列出了函数 −

Sr.No. 功能 &描述 示例
1

Array

此函数将值转换为数组。

array(value)
2

Authorize

此函数使经过身份验证的用户被授权查看资源并接受权限字符串或权限字符串数组。

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

Dump

它接受一个有效的 twig 变量并将其转储到 Grav 调试器面板中。但是,应启用调试器才能查看消息选项卡值。

dump(page.header)
4

Debug

这与 dump() 函数的工作方式相同。

5

Gist

此函数根据 Github Gist ID 创建 Gist 嵌入代码。

6

Random String Generation

此函数将创建一个具有指定字符数的随机字符串。这些字符串可用作唯一 ID 或键。

generate_random_string(10)
7

Repeat

此函数将在给定的时间内重复字符串。

repeat('Grav ', 10) 将重复 Grav 10 次。
8

String

生成指定字符长度的随机字符串。

ta (23)
9

Translate Array

它是一个与 |ta 过滤器连接的函数。

10

Url

此过滤器将创建一个 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