Grav - Twig 过滤器和功能


在本章中,我们来学习一下Twig 过滤器和函数。过滤器用于按照您想要的方式格式化数据以及所需的输出。函数用于生成内容。

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

  • 输出标签- 以下语法用于在此处显示计算的表达式结果。

{{  Place Your Output Here  }}
  • 操作标签- 以下语法用于在此处执行语句。

{%  executable statements are placed here  %}
  • 注释标签- 以下语法用于在 Twig 模板文件中编写注释。

{#  write your comment here  #}

树枝过滤器

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

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

先生。 过滤器和描述 例子
1

绝对网址

它获取相对路径并将其转换为绝对 URL。

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

转换为 -

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

Camel化

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

'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

科特

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

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

降价

它用于使用 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

排序

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

'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

单一化

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

'vehicles'|singularize

它显示为 -

vehicle
19

安全电子邮件

安全电子邮件过滤器用于将电子邮件地址转换为 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 文本,但您应该在截断过滤器之前 使用striptags过滤器。
'<p>one <strong>sentence<strong>. two sentences</p>'|striptags|truncate(5)

它显示为 -

one s

树枝函数

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 或 key。

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

翻译

使用翻译过滤器,字符串被翻译为|t过滤器。

t('SITE_NAME')

被翻译为 -

Site Name