Theme 变量
在本章中,让我们了解Grav中的Theme Variables 。 在设计主题时,可以从树枝模板访问对象和变量,这些对象和变量由Twig模板框架读取和操作。
核心对象
Twig模板有许多core objects; 每个对象都有一组variables和functions 。
下表显示了带有简要说明的变量。
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变量获取该值。 您还可以在内容中分隔=== 。 分隔符前的内容将用于摘要。 |
OR
|
2 | content() 它用于获取页面的整个HTML内容。 |
|
3 | headers() 它返回在页面的YAML前端定义的页眉。 | 上述标题可以访问为:
|
4 | media() 它用于访问所有媒体文件,如图像,视频和其他文件。 它将返回一个包含与页面关联的所有媒体的数组。 |
|
5 | title() 它被设置为返回页面的标题,该页面的标题是在页面的YAML标题中定义的。 |
|
6 | menu() 返回menu变量的值,该值在页面的YAML标题中指定。 如果未设置title变量,则默认为title 。 |
|
7 | visible() 它用于设置页面的可见性。 通常,在菜单中显示具有数字值后跟句点(即01.foldername)的页面,并且不显示不包含数值的文件夹名称(即foldername)。 我们可以在页眉中覆盖它。 |
|
8 | routable() 通过使用此功能,我们可以确定页面是否routable或not routable这意味着您是否可以在将浏览器指向页面时接收内容。 不可路由的页面可以用在插件,模板等中,并且不能直接访问这些页面。 这是在页眉中设置的。 |
|
9 | slug() 通过使用此变量,我们可以获得页面URL中显示的直接名称。 |
|
10 | url([include_host = false]) 它用于返回页面的URL |
OR
|
11 | route() 它用于返回页面的内部路由。 | |
12 | home() 使用此变量可以确定页面是否配置为home 。 当页面配置为主页时返回true,未配置时返回false。 您可以在system.yaml文件中找到此设置。 | |
13 | root() 它确定当前页面是否是层次结构的根页面。 如果它是根页面,则返回true如果不是根页面,则返回false 。 | |
14 | active() 您可以使用此变量确定浏览器是否正在访问当前页面。 如果浏览器正在访问此页面,则返回true否则返回false 。 | |
15 | modular() 通过使用此变量,我们可以确定此页面是否为模块化。 如果这是一个模块化页面,那么它返回true和false如果不是。 | |
16 | activeChild() 此变量可以确定此URI的URL是否具有活动页面的URL; 或者,简单来说就是当前网址中此网页的网址。 当您处理导航并且想要知道页面是否在同一父页面上进行迭代时,这非常有用。 | |
17 | find(url) 由路径URL指定,此变量返回页面对象。 |
|
18 | collection() 此变量用于返回由集合页标题确定的上下文的页面组。 |
|
19 | isFirst() 如果当前页面是其兄弟页面中的第一页,则返回true否则返回false 。 | |
20 | isLast() 如果当前页面是其兄弟页面的最后一页,则返回true否则返回false 。 | |
21 | nextSibling() 参考当前位置,它返回数组中的下一个兄弟页面。 | |
22 | prevSibling() 参考当前位置,它返回数组中的前一个兄弟页面。 | |
23 | children() 如页面内容结构中所定义,子页面数组由此变量返回。 | |
24 | orderBy() 此方法返回已排序的子订单类型。 可能包含的值包括default , title , date和folder以及页眉中配置的这些值。 | |
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() 通过使用此变量,您可以确定当前页面是否仅是用于路由的文件夹。 它基于它返回true或false 。 | |
36 | id() 这将返回页面的唯一ID。 | |
37 | modified() 它返回上次修改页面的时间戳。 | |
38 | date() 此方法返回页面的日期时间戳。 通常,这是在表示页面或帖子日期的标题中配置的。 如果默认情况下未提供任何值,则使用修改的时间戳。 | |
39 | filePath() 通过使用它,您可以获得页面的完整文件路径。 |
|
40 | filePathClean() 这将返回相对路径。 |
|
41 | path() 这将返回当前页面所在目录的完整路径。 |
|
42 | folder() 这将返回页面的文件夹名称。 | |
43 | taxonomy() 这将返回与页面连接的分类数组。 |
页面对象
Pages对象表示为页面对象的嵌套树。 在创建navigations, sitemap或finding 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的一部分。 |
|
2 | paths() 使用此方法返回路径元素数组。 |
|
3 | route([absolute = false][, domain = false]) 此方法返回具有绝对或相对URL的路由。 |
要么,
|
4 | params() 这将返回URL中的参数部分。 |
|
5 | param(id) 这将返回参数的值。 |
|
6 | query() 可以使用此方法访问URL的查询部分。 |
|
7 | query(id) 使用此功能,您可以访问特定的查询项。 |
|
8 | url([include_host = true]) 这将返回可能包含或不包含主机的完整URL。 |
|
9 | extension() 这将返回扩展名,如果没有提供,则返回html。 |
|
10 | host() 这将返回URL的主机。 |
|
11 | base() 这将返回URL的基本部分。 |
|
12 | rootUrl([include_host = true]) 这将返回Grav实例的根URL。 |
|
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看到更多信息。