【问题标题】:How do I pass variables to theme template via custom controller drupal 8如何通过自定义控制器 drupal 8 将变量传递给主题模板
【发布时间】:2019-02-13 13:11:32
【问题描述】:

我目前在我的 Drupal 网站上安装了我购买的主题。

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

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

来自 page.html.twig 的 sn-p 如下所示:

    <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.html.twig 中,但我的主题 page.html.twig 中的 {% if page.footer_left %} 没有被触发。请拜托,任何帮助或建议将不胜感激

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

亲切的问候, 马特

【问题讨论】:

标签: drupal drupal-modules drupal-8 drupal-themes drupal-templates


【解决方案1】:

看来你可能走错了路……我强烈建议你阅读Drupal 8 Block system,然后调查custom blocks

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2022-07-28
    • 2014-01-23
    相关资源
    最近更新 更多