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

问题描述

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

我已将此代码保存到 base.html.twig 中: {% include 'partials/footer.html.twig' %}

页面/页脚/认.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) }}
    
  • 使用“博客网站”框架浏览“ localhost / blog / focus-and-blur”时的结果

    enter image description here