问题描述
我有一个博客页面,并尝试将页脚添加为部分内容,但是 footer.md 中博客页面的标题未正确显示
我已将此代码保存到 base.html.twig 中:
{% include 'partials/footer.html.twig' %}
---
title: Footer
routable: false
visible: false
process:
markdown: true
twig: true
twig_first: true
---
<h1>{{ page.title }}</h1>
partials / footer.hml.twig:
<section id="footer" class="section bg-gray">
<section class="container {{ grid_size }}">
{% set footer_content = pages.find('/footer').content %}
{% if footer_content %}
{{ footer_content }}
{% else %}
<p><a href="http://getgrav.org">Grav</a> was <i class="fa fa-code"></i> with <i class="fa fa-heart-o pulse "></i> by <a href="https://trilby.media">Trilby Media</a>.</p>
{% endif %}
</section>
</section>
无论博客页面的标题是什么,我始终在页脚中拥有页面页脚的标题,即Footer
解决方法
页面是预先解析的,而不是使用{% set content = pages.find('/footer') %}
在Twig中调用时解析的页面。
在解析期间,上下文是页面本身,因此其Markdown中的{{ page.title }}
将始终引用当前页面对象。因此,您的示例中的值<h1>Footer</h1>
。
但是,可以使用Grav函数evaluate_twig
在Twig内部解析页面对象的Markdown。请参阅Twig Filters & Functions
例如:
-
'/ pages / footer / default.md'
--- title: Footer routable: false visible: false # process: <-- not needed because we use raw markdown # markdown: true # twig: true # twig_first: true --- <h1>{{ page.title }}</h1>
-
“ footer.html.twig”内的代码段
{% set rawMarkdown = pages.find('/footer').rawMarkdown %} {{ evaluate_twig(rawMarkdown) }}
-
使用“博客网站”框架浏览“ localhost / blog / focus-and-blur”时的结果