如何通过自定义控制器drupal 8将变量传递给主题模板

问题描述 投票:0回答:1

我目前在Drupal网站上安装了一个主题。

在主题文件夹中有一个模板文件夹,其中包含:

  • page.html.twig
  • 页面 - front.html.twig

page.html.twig的片段如下所示:

    <footer class="site-footer">
  <div class="layout-container">
    {% if page.footer_first or page.footer_second or page.footer_third %}
      <div class="footer-top">
        <div class="footer-top-inner">
          {{ page.footer_first }}
          {{ page.footer_second }}
          {{ page.footer_third }}
        </div>
      </div>
    {% endif %}

    {% if page.footer_left or page.footer_right %}
      <div class="footer-bottom">
        <div class="footer-bottom-inner">
          {{ page.footer_left }}
          {{ page.footer_right }}
        </div><!-- /.footer-bottom-inner -->
      </div>
    {% endif %}
  </div>
</footer>

我有一个我创建的自定义模块(business_listing),它加载了不同的.html.twig模板我在business_listing.module中添加了这些模板:

        function business_listing_theme($existing, $type, $theme, $path) {

      return [
        // business-listing-detail.html.twig
        'business_listing_detail' => [
            'variables' => ['data' => [], 'slides' => [], 'paths' => [], 'page' => []],
        ],
     ]
   }

基本上我想知道如何从我的自定义模块控制器动态添加页脚标记。

我的自定义模块模板文件夹中有一个名为business-listing-detail.html.twig的页面。根据我的理解business-listing-detail.html.twig使用/以某种方式在我的主题/模板中扩展page.html.twig。我现在想知道的是如何使用我的控制器将{{page.footer_left}}这些部分添加到我的business-listing-detail.html.twig或page.html.twig?我尝试使用以下内容添加页脚:`

$ page ['footer_left'] =“这应该出现在.footer-bottom div中?”;

    $build = [];
    $build['business_listing_detail'] = [
      '#theme' => 'business_listing_detail',
      '#data' => $record,
      '#slides' => $slides,
      '#paths' => $this->paths,
      '#page' => $page
    ];`

希望page.html.twig能够检测到此page.footer_left和渲染显示页脚,但是这不起作用。在我的business-listing-detail页面的控制器功能中。该变量存在于business-listing-detail.html.twig中,但我的主题page.html.twig中的{% if page.footer_left %}未被触发。请取悦,任何帮助或建议将不胜感激<3

基本上我所要做的就是动态渲染我的自定义模块中特定页面的模板,这允许我实现/发送标记到我的主题中定义的部分/区域,例如。 featured_top,content_top和page.content

亲切的问候,马特

drupal drupal-modules drupal-8 drupal-themes drupal-templates
1个回答
1
投票

看起来你可能会走错路......我强烈建议你读一读Drupal 8 Block system,然后调查custom blocks

© www.soinside.com 2019 - 2024. All rights reserved.