
擴展模板

本篇資料來源:Extending templates | Twig in Drupal | Drupal Wiki guide on Drupal.org
翻譯:Shiuan Huang
將模板擴展指的是您可以使用現有模板的內容,並對其進行修改,然後應用到您的模板上。
在 Twig 模板中,可以使用以下語法進行模板擴展:
{% extends 'example.html.twig' %}
詳情請見:Creating and Using Templates (Symfony Docs)
在Drupal中,我們可以看到許多核心範例使用 extends。例如:
在 core/modules/block/templates/block.html.twig 中,我們有:
<div{{ attributes }}>
{{ title_prefix }}
{% if label %}
<h2{{ title_attributes }}>{{ label }}</h2>
{% endif %}
{{ title_suffix }}
{% block content %}
{{ content }}
{% endblock %}
</div>
在 web/core/modules/system/templates/block--local-actions-block.html.twig 中使用 extends 進行擴展,例如:
{% extends "block.html.twig" %}
{% block content %}
{% if content %}
<nav>{{ content }}</nav>
{% endif %}
{% endblock %}
這裡所有內容都是從基本模板繼承而來,除了:
{% block content %}
{{ content }}
{% endblock %}
在子模板中用以下方式覆蓋:
{% block content %}
{% if content %}
<nav>{{ content }}</nav>
{% endif %}
{% endblock %}
Drupal 模組和主題是自動命名空間的 automatically namespaced 。在這個例子中,這兩個模組都位於相同的 core 命名空間中,因此不需要以模組或主題的名稱為前綴。
要從另一個主題或模組擴展模板(例如在這裡從 classy 主題),請使用機器名稱:
{% extends "@classy/block/block--system-menu-block.html.twig" %}
或者,如果使用 Drupal 10.x 引入的 Twig 3.0.0 introduced with Drupal 10.x,現在您可以跳過 Twig 檔案的路徑,如果該元件在您的命名空間路徑中嵌套得很深。
{% extends "@classy/block--system-menu-block.html.twig" %}

擴展模板

本篇資料來源:Extending templates | Twig in Drupal | Drupal Wiki guide on Drupal.org
翻譯:Shiuan Huang
將模板擴展指的是您可以使用現有模板的內容,並對其進行修改,然後應用到您的模板上。
在 Twig 模板中,可以使用以下語法進行模板擴展:
{% extends 'example.html.twig' %}
詳情請見:Creating and Using Templates (Symfony Docs)
在Drupal中,我們可以看到許多核心範例使用 extends。例如:
在 core/modules/block/templates/block.html.twig 中,我們有:
<div{{ attributes }}>
{{ title_prefix }}
{% if label %}
<h2{{ title_attributes }}>{{ label }}</h2>
{% endif %}
{{ title_suffix }}
{% block content %}
{{ content }}
{% endblock %}
</div>
在 web/core/modules/system/templates/block--local-actions-block.html.twig 中使用 extends 進行擴展,例如:
{% extends "block.html.twig" %}
{% block content %}
{% if content %}
<nav>{{ content }}</nav>
{% endif %}
{% endblock %}
這裡所有內容都是從基本模板繼承而來,除了:
{% block content %}
{{ content }}
{% endblock %}
在子模板中用以下方式覆蓋:
{% block content %}
{% if content %}
<nav>{{ content }}</nav>
{% endif %}
{% endblock %}
Drupal 模組和主題是自動命名空間的 automatically namespaced 。在這個例子中,這兩個模組都位於相同的 core 命名空間中,因此不需要以模組或主題的名稱為前綴。
要從另一個主題或模組擴展模板(例如在這裡從 classy 主題),請使用機器名稱:
{% extends "@classy/block/block--system-menu-block.html.twig" %}
或者,如果使用 Drupal 10.x 引入的 Twig 3.0.0 introduced with Drupal 10.x,現在您可以跳過 Twig 檔案的路徑,如果該元件在您的命名空間路徑中嵌套得很深。
{% extends "@classy/block--system-menu-block.html.twig" %}