在本章中,让我们了解Grav中的主题变量.在设计主题和这些对象时,可以从树枝模板访问对象和变量.变量由Twig模板框架读取和操作.
Twig模板有许多核心对象; 每个对象有一组变量和函数.
下表显示了带有简要说明的变量.
Sr.No. | 变量&说明 |
---|---|
1 | {{base_dir}} 我们可以使用此变量获取Grav安装基本文件目录. |
2 | {{base_url}} 可以使用此变量访问Grav站点的基本URL. |
3 | {{base_url_relative}} 它返回相对路径Grav网站的基本网址. |
4 | {{base_url_absolute}} 它返回基本网址到Grav网站的绝对路径. |
5 | {{theme_dir} } 它用于返回当前主题的文件目录文件夹. |
6 | {{theme_url}} 它用于返回电流nt主题的相对URL. |
In configuration.yaml 文件,配置对象设置为访问任何Grav配置设置.
{{config.pages .the $}
它将返回当前配置的主题.
为 config.site 对象提供别名,表示在 site.yaml 文件中设置的配置.
这些对象提供了一个存储CSS样式表资产的数组,可以循环将CSS添加到模板中.
这些对象提供了一个由JavaScript资产组成的数组,它被循环并且JavaScripts被添加到模板中.
由于Grav的结构在 pages/文件夹中定义,页面对象负责代表每个pag即页面对象包含有关您当前正在处理的页面的所有信息.
下表显示了页面对象的方法.
Sr.No. | 方法&说明 | 示例 |
---|---|---|
1 | 摘要([尺寸]) 它给出了页面的要点具有指定大小的内容作为参数提供. 如果未指定大小,则从 system/config中的 summary.size 变量获取该值/site.yaml 文件. 您还可以在内容中分隔 === .分隔符前的内容将用于汇总. | {{page.summary}} 或 {{page.summary(80)}} |
2 | content() 它用于获取整个HTML页面的内容. | {{page .content}} |
3 | headers() 返回页面在页面的YAML前面定义的标题. | title:About us 作者:Johnson 以上标题可以访问: 作者此页面是:{{page.header.author}} |
4 | media() 用于访问所有媒体文件,如图像,视频和其他文件.它将返回一个包含与页面关联的所有媒体的数组. | {%set first_image = page.media | first%} {%set my_pdf = page.media ['myfile.pdf']%} {page for page.media.images %%} { {image.html}} {%endfor%} |
5 | title() 设定返回在页面的YAML标题中定义的页面标题. | title:My Page |
6 | menu() | title:My Blog menu:my blog page |
7 | 可见( ) 它用于设置页面的可见性.通常在菜单中显示具有数字值后跟句点(即01.foldername)的页面,并且不显示不包含数值的文件夹名称(即foldername).我们可以在页眉中覆盖它. | title: About Us visible: true |
8 | 可路由() 通过使用此我们可以确定是否页面可路由或不可路由表示您是否可以在将浏览器指向页面时接收内容.不可路由的页面可以用在插件,模板等中,并且不能直接访问这些页面.这是在页眉中设置的. | title: My Page routable: true |
9 | slug() 通过使用此变量,我们可以得到直接名称显示在页面的URL中. | my-page |
10 | url([include_host = false]) 用于返回网页的网址 | {{page.url}} {#could return/myfolder/mypage#} 或 {{ page.url(true) }} {# could return http: //mysite.com/ myfolder/mypage #} |
11 | route() 它用于返回页面的内部路由. | |
12 | home() 使用此变量可以确定页面是否配置为主页页面与否.当页面配置为主页时返回true,未配置时返回false.您可以在 system.yaml 文件中找到此设置. | |
13 | root() 它确定当前页面是否是层次结构的根页面.如果它是根页面,则返回 true ;如果不是根页面,则返回 false . | |
14 | 有效( ) 您可以使用此变量确定浏览器是否正在访问当前页面.如果浏览器正在访问此页面,则返回 true ;如果不是,则返回 false . | |
15 | modular() 通过使用此变量,我们可以确定此页面是否为模块化.如果这是一个模块化页面,则返回 true ,如果不是,则返回 false . | |
16 | activeChild() 此变量可以确定此URI的URL是否具有活动页面的URL;或者,简单来说就是当前网址中此网页的网址.这在您进行导航时非常有用,并且您想知道页面是否在相同的父页面上进行迭代. | |
17 | find(url) 根据路由URL的指定,此变量返回页面对象. | {%include'module/author-detail.html.twig'with {'page':page.find('/authors/john-bloggs') }%} |
18 | collection() 此变量用于返回由集合页面标题确定的上下文页面组. | {% for page.collection%} {%include'parts/blog_item.html.twig'with {'page':child,'truncate':true}%} {%endfor%} |
19 | isFirst() 如果当前页面是其兄弟页面中的第一页,则返回 true 否则返回 false . | |
20 | isLast() 如果当前页面是其兄弟页面的最后一页,则返回 true else返回 false . | |
21 | nextSibling() 参考当前位置,它返回数组中的下一个兄弟页面. | |
22 | prevSibling() 参考当前位置,它返回来自数组的上一个兄弟页面. | |
23 | children() 如页面内容结构中定义的那样,数组子页面由此变量返回. | |
24 | orderBy() 由此返回已排序子项的订单类型方法.可能包含的值包括默认,标题,日期和文件夹以及页眉中配置的这些值. | |
25 | orderDir() 此方法返回已排序的子页面的顺序方向.值可以是 asc (升序)或 desc(降序).通常这些值在页眉中配置. | |
26 | orderManual() 此方法返回一个由手册页组成的数组订购和此订购将适用于页面的任何孩子.此值通常在页眉中设置. | |
27 | maxCount() 这个变量最多告诉了多少允许返回子页面.通常在页眉中指定值. | |
28 | children.count() 此变量返回子页数是否存在页面. | |
29 | children.current() 此变量将返回当前子项. | |
30 | children.next() 这将返回子页数组中的下一个子项. | |
31 | children.prev() 这将返回子页数组中的上一个子项. | |
32 | children.nth(职位) 这将返回子项数组中孩子的位置. | |
33 | 父母( ) 在嵌套树结构中,如果要导航回父页面,则可以使用此变量.它将返回当前页面的父页面对象. | |
34 | isPage() 通过使用此变量,可以确定此页面是否有实际的 .md 文件,或者它只是一个路由文件夹. | |
35 | isDir() 通过使用此变量,您可以确定当前页面是否仅是用于路由的文件夹.它会根据它返回 true 或 false . | |
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 | 路径() 这将返回当前页面所在目录的完整路径. | /Users/yourname/sites/Grav/user/pages/01.home |
42 | 文件夹() 这将返回页面的文件夹名称. | |
43 | 分类法() 这将返回与页面连接的分类数组. |
Pages对象表示为页面对象的嵌套树.这个嵌套树在创建导航,站点地图或查找特定页面时非常有用.
这将返回由子页面组成的页面对象数组.具有树状结构的页面对象可以在文件夹中的每个页面上迭代.
为了获得菜单的顶级页面,请使用以下代码.
<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的一部分./p>
http://mysite.com/Grav/section/category/page.json/param1:foo/param2:bar/?query1 = baz& ; query2 = qux:
下表显示了Uri对象的方法.
Sr.No. | 方法&说明 | 示例 |
---|---|---|
1 | 路径() 当前网址的部分可以通过使用这种方法. | uri.path =/section/category/page |
2 | paths() 使用此方法返回路径元素数组. | uri.paths = [section,category ,页面]) |
3 | 路线([absolute = false] [,domain = false]) 此方法返回带有绝对或相对URL的路径. | u ri.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 | 查询(id) 使用此功能,您可以访问特定的查询项. | uri.query('query1')= bar |
8 | url([include_host = true]) 这将返回完整的URL,该URL可能包含也可能不包含主机. | uri.url(false)= Grav/section/category/page/param:foo?query = bar |
9 | extension() 这将返回扩展名,如果没有提供,则会返回html. | |
10 | host() 这将返回URL的主机. | uri.host = mysite.com |
11 | base() 这将返回网址的基础部分. | uri.base = http://mysite.com |
12 | rootUrl([include_host = true]) 这将返回Grav实例的根URL. | uri.rootUrl()= http://mysite.com/Grav |
13 | 引荐() 此方法返回页面的引荐来源信息. |
它是原始页面的 page.header()的替代品.循环浏览子页面时使用原始页面标题更合适.
它是
网站的所有分类信息都包含在全局分类对象.
Grav以编程方式使用内置支持确定用户的平台,浏览器和版本.
{{browser.platform}}#windows {{browser.browser}}#chrome {{browser.version} }#24
自定义变量以多种方式添加.如果您使用的是站点范围的变量,请将其放入 user/config/site.yaml 文件中,然后您可以访问它,如下所示.
{{site.my_variable}}
如果变量仅适用于特定页面,那么您可以在YAML前面添加它 - 并使用 page.header 对象访问它.
例如 :
title:My Page author:John
作者姓名可以作为 :
The author of this page is: {{ page.header.author }}
通过使用插件,您可以将自定义对象添加到Twig对象.这是一个高级主题,我们将在插件章节中看到更多信息.