Goal
Support a focused template-inheritance mechanism for a child template to select a parent layout and provide content for one or more named slots.
Example direction:
{% layout "parent.tpl" %}
{% block content %}<h1>Hello</h1>{% endblock %}
<html>
<body>{% slot content %}Default content{% endslot %}</body>
</html>
The final syntax should be chosen against an established implementation such as LiquidJS or Jekyll and documented as an extension when it is not part of Shopify Liquid.
Acceptance criteria
- Define the compatibility target and exact syntax before implementation.
- Support a default body and at least one named block/slot.
- Resolve layouts through
TemplateStore and the same path rules as other template-loading tags.
- Define variable scope between child and parent templates.
- Detect missing layouts, duplicate blocks, and inheritance cycles with source-located errors.
- Include focused tests and user-facing documentation.
Pull request guidance
Implement this as a focused change. PR #145 combines layout support with many unrelated compatibility, audit, sandboxing, and API changes and is not a mergeable implementation path for this issue in its current form.
Goal
Support a focused template-inheritance mechanism for a child template to select a parent layout and provide content for one or more named slots.
Example direction:
{% layout "parent.tpl" %} {% block content %}<h1>Hello</h1>{% endblock %}The final syntax should be chosen against an established implementation such as LiquidJS or Jekyll and documented as an extension when it is not part of Shopify Liquid.
Acceptance criteria
TemplateStoreand the same path rules as other template-loading tags.Pull request guidance
Implement this as a focused change. PR #145 combines layout support with many unrelated compatibility, audit, sandboxing, and API changes and is not a mergeable implementation path for this issue in its current form.