当作为部分包含时如何从页脚获取页面标题?

How to get page title from footer when it’s included as a partial?

我有一个博客页面并尝试将页脚添加为部分页脚,但是来自 footer.md 的博客页面的标题显示不正确

我将此代码发送到 base.html.twig{% include 'partials/footer.html.twig' %}

pages/footer/default.md

---
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

上的 Grav 文档

例如:

  • '/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) }}
    
  • 使用'Blog Site'骨架浏览'localhost/blog/focus-and-blur'时的结果