Skip to content

Add layout and template-inheritance support #103

Description

@millken

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions