移至主內容
首頁  >  Drupal目錄  >  擴展模板

擴展模板

Tag :
twig, extending, templates
Written by Shiuan on 27 December 2023

將模板擴展指的是您可以使用現有模板的內容,並對其進行修改,然後應用到您的模板上。

在 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" %}

返回Drupal
首頁  >  Drupal  >  擴展模板

擴展模板

Tag :
twig, extending, templates
Written by Shiuan on 27 December 2023

將模板擴展指的是您可以使用現有模板的內容,並對其進行修改,然後應用到您的模板上。

在 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" %}