Как определить область виджетов из макроса в Apostrophe CMS
Я хочу определить виджеты для всех моих столбцов и макетов в одном месте.
Этот код будет в views/macros/columnWidgets.html
{% macro columnWidgets(data, option) %}
{{ apos.area(data.widget, '{{option}}', {
blockLevelControls: true,
widgets: {
'apostrophe-rich-text': {
toolbar: [ 'Styles', 'Bold', 'Italic', 'Blockquote', 'Link', 'Anchor', 'Unlink', 'BulletedList' ],
styles: [
{ name: 'Paragraph', element: 'p' },
{ name: 'Quote / Section Descriptor', element: 'h3' },
{ name: 'Main Heading', element: 'h1',attributes: { 'class': 'main-heading'} }
]
},
'apostrophe-html': {
toolbar: [ 'Styles', 'Bold', 'Italic', 'Link', 'Unlink', 'Anchor', 'Table', 'BulletedList', 'Blockquote', 'Strike', 'Subscript', 'Superscript','Image','slideshow' ],
styles: [
{ name: 'Marker: Yellow', element: 'span', styles: { 'background-color': 'Yellow' } }
]
},
'apostrophe-images': {
minSize: [ 700, 350 ],
aspectRatio: [ 2, 1 ],
size: 'full'
}
}
}) }}
{% endmacro %}
Затем в моем виджете макета 4Column я бы добавил что-то в этом роде.
{% import 'macros / columnWidgets.html' as columnwidgets%}
{{apps.columnWidgets (data, 'column1')}}
1 ответ
Решение
Конечно, мы делаем это все время в наших собственных проектах.
// in app.js
modules: {
'apostrophe-templates': {
viewsFolderFallback: __dirname + '/views'
}, ...
}
{# In views/macros/areas.html %}
{% macro content(context, name) %}
{{ apos.area(context, name, {
widgets: {
'apostrophe-rich-text': {
toolbar: [ 'Styles', 'Bold', 'Italic', 'Link', 'Anchor', 'Unlink', 'BulletedList' ]
},
'apostrophe-images': {},
'apostrophe-files': {},
'apostrophe-video': {}
}
}) }}
{% endmacro %}
{# In any other template in any module #}
{% import "macros/areas.html" as areas %}
{{ areas.content(data.page, 'body') }}
Использование viewsFolderFallback
Это хорошее удобство, позволяющее общей папке верхнего уровня стать резервным местом для файлов шаблонов, импортированных, включенных, расширенных и т. д. из любого модуля.