当前位置: 首页 > 文档资料 > Grav 入门教程 >

Theme 变量

优质
小牛编辑
133浏览
2023-12-01

在本章中,让我们了解Grav中的Theme Variables 。 在设计主题时,可以从树枝模板访问对象和变量,这些对象和变量由Twig模板框架读取和操作。

核心对象

Twig模板有许多core objects; 每个对象都有一组variablesfunctions

下表显示了带有简要说明的变量。

Sr.No.变量和描述
1

{{ base_dir }}

我们可以使用此变量获取Grav安装基本文件目录。

2

{{ base_url }}

可以使用此变量访问Grav站点的基本URL。

3

{{ base_url_relative }}

它返回基本URL到Grav站点的相对路径。

4

{{ base_url_absolute }}

它将基本URL的绝对路径返回到Grav站点。

5

{{ theme_dir }}

它用于返回当前主题的文件目录文件夹。

6

{{ theme_url }}

它用于返回当前主题的相对URL。

配置对象

configuration.yaml文件中,config对象设置为访问任何Grav配置设置。

{{ config.pages.theme }}

它将返回当前配置的主题。

网站对象

config.site对象提供别名,表示site.yaml文件中设置的配置。

样式表对象

这些对象提供了一个用于存储CSS样式表资产的数组,可以循环将CSS添加到模板中。

脚本对象

这些对象提供了一个由JavaScript资产组成的数组,该数据循环并将JavaScripts添加到模板中。

页面对象

由于Grav的结构在pages/文件夹中定义,因此page object负责表示每个页面。 page object包含有关您当前正在处理的页面的所有信息。

下表显示了页面对象的方法。

Sr.No.方法和描述
1

summary([size])

它给出了页面内容的要点,其中指定的大小作为参数提供。

如果未指定size,则从system/config/site.yaml文件中的summary.size变量获取该值。

您还可以在内容中分隔=== 。 分隔符前的内容将用于摘要。

{{ page.summary }}

OR

{{ 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()

通过使用此功能,我们可以确定页面是否routablenot routable这意味着您是否可以在将浏览器指向页面时接收内容。 不可路由的页面可以用在插件,模板等中,并且不能直接访问这些页面。 这是在页眉中设置的。

title: My Page
routable: true
9

slug()

通过使用此变量,我们可以获得页面URL中显示的直接名称。

my-page
10

url([include_host = false])

它用于返回页面的URL

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

OR

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

route()

它用于返回页面的内部路由。

12

home()

使用此变量可以确定页面是否配置为home 。 当页面配置为主页时返回true,未配置时返回false。 您可以在system.yaml文件中找到此设置。

13

root()

它确定当前页面是否是层次结构的根页面。 如果它是根页面,则返回true如果不是根页面,则返回false

14

active()

您可以使用此变量确定浏览器是否正在访问当前页面。 如果浏览器正在访问此页面,则返回true否则返回false

15

modular()

通过使用此变量,我们可以确定此页面是否为模块化。 如果这是一个模块化页面,那么它返回truefalse如果不是。

16

activeChild()

此变量可以确定此URI的URL是否具有活动页面的URL; 或者,简单来说就是当前网址中此网页的网址。 当您处理导航并且想要知道页面是否在同一父页面上进行迭代时,这非常有用。

17

find(url)

由路径URL指定,此变量返回页面对象。

{% 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(descending) 。 通常,这些值在页眉中配置。

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对象表示为页面对象的嵌套树。 在创建navigations, sitemapfinding a particular page navigations, sitemap此嵌套树非常有用。

儿童方法

这将返回由子页面组成的页面对象数组。 具有树状结构的页面对象可以在文件夹中的每个页面上迭代。

要获取菜单的顶级页面,请使用以下代码。

<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对象的方法。

Sr.No.方法和描述
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()

通过此方法返回页面的引用者信息。

标题对象

它是原始页面的page.header()的替代。 循环浏览子页面时,更适合使用原始页眉。

内容对象

它是原始页面的page.content()的替代。

分类对象

站点的所有分类信息都包含在全局分类对象中。

浏览器对象

Grav通过使用内置支持以编程方式确定用户的平台,浏览器和版本。

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

添加自定义变量

自定义变量以多种方式添加。 如果您使用的是站点范围的变量,则将其放在user/config/site.yaml文件中,然后您可以访问它,如下所示。

{{ site.my_variable }}

如果变量仅适用于特定页面,则可以在YAML前端添加它,并使用page.header对象访问它。

For example -

title: My Page
author: John

作者姓名可以访问为 -

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

添加自定义对象

通过使用插件,您可以将自定义对象添加到Twig对象。 这是一个高级主题,我们将在plugins chapter看到更多信息。