Как передать переменные в шаблон темы через настраиваемый контроллер drupal 8

В настоящее время у меня установлена ​​тема, которую я приобрел, на моем веб-сайте 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 -isting-detail.html.twig внутри моей папки шаблонов пользовательских модулей. Насколько я понимаю, business -isting-detail.html.twig использует / каким-то образом расширяет page.html.twig в моей теме / шаблонах. Теперь я хотел бы знать, как я могу добавить такие разделы, как {{page.footer_left}}, в мой бизнес-листинг-detail.html.twig или в page.html.twig с помощью моего контроллера? Я попытался добавить нижний колонтитул, используя следующее:

$ page ['footer_left'] = "Это должно появиться в div .footer-bottom?";

    $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 -isting-detail.html.twig, но {% if page.footer_left %} в моих темах page.html.twig не запускается. Пожалуйста, пожалуйста, мы будем благодарны за любую помощь или совет ‹3

В основном все, что я пытаюсь сделать, это динамически отображать шаблон для конкретной страницы в моем настраиваемом модуле, что позволяет мне реализовывать / отправлять разметку в разделы / регионы, определенные в моей теме, например. Feature_top, content_top и page.content

С уважением, Мэтт


person Matthew Dejager    schedule 13.02.2019    source источник
comment
Похоже, вы идете по неправильному пути ... Я настоятельно рекомендую вам прочитать о системе блоков Drupal 8 (drupal.org/docs/8/core/modules/block/overview), а затем исследовать пользовательские блоки (drupal.org/docs/8/creating-custom-modules/create-a-custom- блокировать)   -  person Nate F.    schedule 21.02.2019
comment
Это именно то, что мне нужно! Спасибо ‹3   -  person Matthew Dejager    schedule 21.02.2019


Ответы (1)


Похоже, вы идете по неправильному пути ... Я настоятельно рекомендую вам прочитать о Система блокировки Drupal 8, а затем исследуйте пользовательские блоки.

person Nate F.    schedule 21.02.2019