macros
HTML macros are used to create a shorthand way of rendering HTML content. They help keep your code clean and tidy and easy to maintain.
HTML macros are defined in the html.twig view.
For example,
{{ html.input('quantity[' ~ item.id ~ ']', item.quantity) }}
returns...
<input type="text" name="quantity[52577]" value="1">
On the checkout/basket page when used to allow the user to change the quantity of an item they have in their basket.
The macro is defined in html.twig as follows:
{% macro input(name, value, class, placeholder, type, extra) %} <input type="{{ type|default('text') }}"{% if name %} name="{{ name }}"{% endif %}{% if value %} value="{{ value }}"{% endif %}{% if class %} class="{{ class }}"{% endif %}{% if placeholder %} placeholder="{{ placeholder }}"{% endif %}{% if extra %} {{ extra|raw }}{% endif %}> {% endmacro %}
You can read more about macros here.
Theme macros
Theme macros are contained in the theme.twig view.
Like HTML macros, they create a shorthand way to include platform theme elements on another view.
For example, instead of using the full code to render a link list, i.e.
{% if global.theme.settings.list_footer.title %} <h2> {{ link_list.title }} </h2> {% endif %} <ul class="{{ class }}"> {% for link in global.theme.settings.list_footer.links %} <li> <a href="{{ link.url }}"> {{ link.title }} </a> </li> {% endfor %} </ul>
a macro is defined in theme.twig that allows you to use the expression below instead.
{{ theme.link_list('footer') }}