Как шаблонные системы Smarty, так и Twig поддерживают «наследование шаблонов», как в шаблонной системе django. Обе они являются популярными и хорошо поддерживаемыми системами шаблонов, однако синтаксис twig ближе к django, поэтому вам будет удобнее пользоваться этим.
Smarty
Чтобы сделать это в smarty, вы можете сделать это, как в следующем примере, скопированном из Smarty Документация по наследованию
layout.tpl
<html>
<head>
<title>{block name=title}Default Page Title{/block}</title>
</head>
<body>
{block name=body}{/block}
</body>
</html>
mypage.tpl
{extends file="layout.tpl"}
{block name=title}My Page Title{/block}
{block name=body}My HTML Page Body goes here{/block}
вывод mypage.tpl
<html>
<head>
<title>My Page Title</title>
</head>
<body>
My HTML Page Body goes here
</body>
</html>
Twig
Опять же, есть отличная документация для использования этой функции. В документации twig пример более сложен, чтобы продемонстрировать некоторые более продвинутые функции, предоставляемые twig, но для сравнительных целей я написал кое-что, что отражает умный пример twig.
layout.twig
<html>
<head>
<title>{% block title %}Default Page Title{% endblock %}</title>
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
mypage.twig
{% extends layout.twig %}
{% block title %}My Page Title{% endblock %}
{% block body %}My HTML Page Body goes here{% endblock %}
Заключение
В ретроспективе оба примера почти идентичны, и поэтому выбор между ними заключается в сравнении характеристик и совершенно другом вопросе. Используя каркас шаблонов PHP, вы можете добиться наследования шаблонов так же, как это делается с django.
Дальнейшее чтение