Да, вы можете обмениваться макросами между модулями, но только модулей, которые находятся в той же области действия , что и импортированный фрагмент HTML / фрагмент кода, который содержит созданные вами макросы.
Согласно документам HubL об использовании тега {% import %}
(найдено здесь ), макросы можно импортировать из созданных пользователем HTML-фрагментов / фрагментов. Например, если вам нужно было создать следующий фрагмент HTML с именем macros.html
:
{% macro render_section(classes, background_style='', data='') %}
<div class="mosaic-section {{classes}}" {{background_style}} {{data}}>
{{ caller() }}
</div>
{% endmacro %}
Затем вы импортируете macros.html
в шаблон, например, с именем homepage.html
со следующим кодом HubL / HTML:
<!doctype html>
<head>
{# standard HubL header code goes here %}
</head>
<body class="site-page two-column {{ builtin_body_classes }}" style="">
{% import 'path/to/macros.html as module_macros %}
<!--- more HubL/HTML code .... -->
{{ standard_footer_includes }}
</body>
</html>
И, как результат, все модули, добавленные в кодированный шаблон homepage.html
, теперь находятся в той же области действия, что и импортированные макросы, и поэтому такие модули могут теперь использовать макросы.
Если вы хотите импортировать макрос single из фрагмента HTML, который содержит несколько макросов, вы можете использовать тег {% from %}
(найдено здесь ) и выполнить следующее:
{% from 'path/to/macros.html' import render_section %}
Теперь макрос render_section()
доступен для всех последующих модулей в кодированном шаблоне.
Примечание:
К сожалению, мне еще не удалось найти способ использовать / импортировать макросы "глобально" в шаблон drag-and-drop - по крайней мере, без необходимости использовать модуль HubL для встраивания, который может добавить странные проблемы с пробелами в сгенерированной разметке HTML, которые вам, возможно, придется решить с помощью CSS.
Надеюсь, что этот ответ был достаточным и поможет решить проблему, которую вы поставили.