Kế thừa
Kế thừa template cho phép bạn định nghĩa bộ khung trang một lần và để mỗi layout
điền vào những phần thay đổi. pyssg dùng {% extends %} và {% block %} native
của Jinja2 - không có gì thêm để học hay bật.
Một bộ khung gốc
Đặt phần HTML dùng chung trong một template gốc với các block có tên cho những phần biến thiên:
<!-- layouts/base.html -->
<!doctype html>
<html lang="en">
<head>
<title>{% block title %}{{ site.title }}{% endblock %}</title>
<link rel="stylesheet" href="/assets/style.50233765.css">
</head>
<body>
<main>{% block main %}{% endblock %}</main>
</body>
</html>
Mở rộng nó
Một layout cụ thể mở rộng bộ gốc và ghi đè các block:
<!-- layouts/_default/single.html -->
{% extends "base.html" %}
{% block main %}
<article>{{ content }}</article>
{% endblock %}
Bất cứ thứ gì không bị ghi đè sẽ rơi xuống giá trị mặc định của bộ gốc. Bạn có thể lồng kế thừa sâu tùy thích - một layout section có thể mở rộng một bộ gốc, bộ này lại mở rộng một bộ khung gốc nữa.
Quy ước
Layout tham chiếu mà preset docs() dùng được tổ chức như sau:
layouts/
base.html # the skeleton every page shares
_default/
single.html # extends base.html - normal pages
list.html # extends base.html - listing pages
partials/ # reusable snippets (see Partials)
Xem lookup cascade để biết single.html và
list.html được chọn tự động ra sao.