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 字符,以便更难以对电子邮件进行垃圾邮件发送。

"[email protected]"|safe_email

输出为 -

[email protected]
20

按键排序

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

{% set people = [{'email':'[email protected]', 'id':3}, {'email':'[email protected]', 'id':1}, {'email':'[email protected]', 'id':7}]|sort_by_key('id') %}
{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}

它显示 -

[email protected]:1, [email protected]:3, [email protected]: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
广告