Как передать переменные в шаблон темы через пользовательский контроллер 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-перечисление-detail.html.twig внутри моей папки шаблонов пользовательских модулей. Из того, что я понимаю, business -isting-detail.html.twig использует / каким-то образом расширяет page.html.twig в моей теме / шаблонах. Теперь я хотел бы знать, как я могу добавить такие разделы, как {{page.footer_left}}
на мой business-list-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-list-detail.html.twig, но {% if page.footer_left %}
в моих темах page.html.twig не запускается. Пожалуйста, пожалуйста, пожалуйста, любая помощь или совет будет принята с благодарностью <3
В основном все, что я пытаюсь сделать, это динамически отображать шаблон для определенной страницы в моем пользовательском модуле, что позволяет мне реализовать / отправить разметку в разделы / области, определенные в моей теме, например. featured_top, content_top & page.content
С уважением, Мэтт
1 ответ
Похоже, вы идете по неверному пути... Я настоятельно рекомендую вам прочитать о системе блоков Drupal 8, а затем исследовать пользовательские блоки.