logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

6.3. 基于 Stable 主题创建你自己的 Drupal 主题

17/10/2025, by Ivan

从这篇文章开始,我们将在 Drupal 上创建我们自己的主题。在本教程的这一部分,我们将分析 Drupal 主题的基础内容——文件结构、如何包含和使用 CSS、JavaScript。我们的主题将基于核心的 Stable 主题构建。如果你想学习 Drupal,那么从 Stable 开始是一个很好的选择。不要一开始就使用 Bootstrap,否则你会经常遇到各种问题和错误。在本系列的下一部分,我们将在掌握了 Drupal 主题创建基础之后,再开始学习如何基于 Bootstrap 构建主题。

以下是官方文档:

https://www.drupal.org/theme-guide/8

为我们的主题创建文件夹

我们将所有新主题放在 /themes 文件夹中。你也可以像 Drupal 7 一样放在 sites/all/themes,但更推荐使用新的 Drupal 文件结构,即直接放在 /themes 文件夹中。

我将在 /themes 目录下创建文件夹 drupalbook,你可以根据需要命名你的主题:

theme folder

创建主题信息文件 drupalbook.info.yml

在我们主题的文件夹中创建文件 theme_name.info.yml,例如:

drupalbook.info.yml

关于 YAML 格式的详细信息,请参阅:

https://en.wikipedia.org/wiki/YAML

请注意两点:

  1. 不要使用制表符(Tab)进行缩进,只能使用空格。
  2. 缩进必须为一个或多个空格(例如 name: value,而不是 name:value)。

drupalbook.info.yml 文件中插入以下内容:

name: Drupalbook
type: theme
base theme: stable
description: My first Drupal theme.
core: 8.x
core_version_requirement: ^8 || ^9
libraries:
  - drupalbook/global-styling
regions:
  header: Header
  content: Content  # 此区域是必需的
  sidebar_first: 'Sidebar first' # 多词名称需加引号
  footer: Footer

解释每一行的含义:

name —— 我们主题的名称。主题的机器名称(machine name)来自文件夹名和文件名 drupalbook.info.yml,即 drupalbook

type —— 项目类型。在这里是 theme(主题)。

base theme —— 我们继承自 Stable 主题。如果你希望从零开始创建主题,则可以写 false

description —— 主题的描述,会显示在管理界面的外观部分。

core —— 指定该主题适用于的 Drupal 核心版本。

libraries —— 在这里包含我们主题所使用的库。我们会在接下来的 drupalbook.libraries.yml 文件中定义这些库。注意其中的 global-styling,我们将在该文件中引用它。

regions —— 定义主题中的区域(regions)。content 区域是必需的,Drupal 的内容通过该区域显示。如果区域名称包含两个或以上单词,请务必使用引号包裹。机器名称使用下划线(_)书写。

创建我们主题的库文件

创建 drupalbook.libraries.yml 文件,并添加以下内容:

global-styling:
  version: 1.x
  css:
    theme:
      css/style.css: {}
      css/print.css: { media: print }
  js:
    js/custom.js: {}
  dependencies:
    - core/jquery

逐行解释:

global-styling —— 这是我们在 drupalbook.info.yml 中引用的库名称。

css —— 这里包含我们要加载的 CSS 文件。注意,我们为 print.css 指定了 media: print,仅用于打印版本。

js —— 这里包含我们要加载的 JavaScript 文件。由于 jQuery 在 Drupal 中是可选的,如果我们的自定义 JS 中需要使用 jQuery,就要添加依赖:

dependencies:
  - core/jquery

创建 css 和 js 文件夹,并添加文件:

  • css/style.css
  • css/print.css
  • js/custom.js

由于我们继承自 Stable 主题,因此模板文件也会自动继承自它。现在进入网站的外观设置页面:

/admin/appearance

清除缓存并启用我们的主题:

Theme

现在,我们的网站已经启用了全新的 Drupalbook 主题:

Theme