创建 DXPR Theme 子主题 (Drupal 11).
DXPR Theme 通过设置面板更改颜色、字体、页眉、间距和布局,因此大多数网站连一行 CSS 都不需要写。子主题是为其余需求准备的:您自己的样式表、模板覆盖、额外的库,或随代码发布的调色板。子主题继承 DXPR Theme 的所有样式表和模板,拥有自己的设置,更新 DXPR Theme 不会影响它。
本指南适用于 Drupal 10.3 和 Drupal 11 上的 DXPR Theme 8.2。其使用的入门套件随主题一起提供,位于dxpr_theme/dxpr_theme_STARTERKIT;不使用 Drupal 核心的generate-theme命令,因为 DXPR Theme 自带入门套件和命令。
开始之前
添加 DXPR Theme 并启用其辅助模块(Drupal 只有在完成这一步后才会安装该主题):
composer require drupal/dxpr_theme
drush en dxpr_theme_helper1. 从入门套件生成子主题
最快的方式是使用 DXPR Theme Helper 提供的 Drush 命令。在项目根目录运行它;它会验证机器名,将入门套件复制到themes/custom并为您重命名所有内容:
drush dxt:subtheme:create northwind_theme --theme-name="Northwind Theme"不带参数时,该命令会询问这两个名称。不使用 Drush 时,请使用主题自带的脚本:进入web/themes/contrib/dxpr_theme,用chmod +x scripts/*将脚本设为可执行(只需执行一次),运行./scripts/create_subtheme.sh,并在提示时输入显示名称和机器名。该脚本只能在该文件夹中运行。
无论哪种方式,您都会得到web/themes/custom/northwind_theme,入门套件的文件和配置已重命名为您的机器名,info 和 schema 文件中的THEMETITLE占位符已被替换。
2. 启用子主题并保存一次设置
- 进入外观,为您的子主题选择安装并设为默认。
- 打开子主题的设置,不做任何更改,直接按保存配置。
首次保存会为新主题生成设置样式表。子主题从入门套件的默认设置开始,而不是从您在 DXPR Theme 中所做的设置开始。要沿用这些设置,请从 DXPR Theme 导出它们并导入子主题:
drush dxt:config:export --theme=dxpr_theme --file=theme.yml
drush dxt:config:import theme.yml --theme=northwind_theme从此面板的操作与 DXPR Theme 完全一致:颜色、排版、页眉、页脚和间距都属于子主题。
保持子主题的区域与基础主题一致。入门套件声明了与 DXPR Theme 相同的 14 个区域,DXPR Theme Helper 在内容上的隐藏区域选项按名称引用它们。
3. 入门套件包含的内容
northwind_theme.info.yml:base theme: dxpr_theme、区域,以及一个加载您样式表的库global-styling。注释掉的libraries-override块列出了您最可能关闭的 DXPR Theme 库,从dxpr_theme/bootstrap-5到dxpr_theme/helper-classes。css/dxpr_theme_subtheme.css:在主题自身样式表之后加载到每个页面。您的 CSS 写在这里。templates/:除 README 外为空。要覆盖某个模板,请将其从dxpr_theme/templates复制到这里。config/install和config/schema:已重命名为您的主题的默认设置及其架构。color-settings.json:您自己命名的调色板,显示在配色方案列表中内置方案的旁边。logo.svg、favicon.ico、screenshot.png:替换为您的文件。
4. 编写跟随设置的 CSS
DXPR Theme 将设置写入 CSS 变量:--dxt-color-*用于调色板,--dxt-setting-*用于排版、间距和布局,并将它们映射到 Bootstrap 的--bs-*变量。在样式表中使用这些变量而不是固定值,当有人更改颜色或字体时,您的 CSS 仍会跟随面板。
/* css/dxpr_theme_subtheme.css */
.card {
border-radius: 1rem;
border-color: color-mix(in srgb, var(--dxt-color-base) 20%, transparent);
}
.dxpr-theme-footer h2 {
font-family: var(--dxt-setting-headings-font-face);
color: var(--dxt-color-footertext);
}基础色、强调色、文本、标题、链接、卡片和页脚都有对应的变量。完整列表在主题 README 的CSS 自定义属性(变量)参考下。
5. 覆盖模板和库
将要修改的模板从themes/contrib/dxpr_theme/templates复制到子主题的templates文件夹,保持文件名不变,编辑它,并清空缓存。Drupal 会优先使用子主题的副本。
要移除基础主题的某个样式表或脚本,请在 info 文件中取消注释libraries-override:行,以及要移除的库对应的行;它们已设为false。要添加自己的库,请在northwind_theme.libraries.yml中声明更多库,并在 info 文件的libraries下列出它们,就像入门套件为global-styling。
6. 在 DXPR Builder 中向编辑提供您的类
在子主题 info 文件的dxpr_builder_classes:下声明的类会出现在 DXPR Builder 的类选择器中,编辑无需输入类名即可应用您的深色横幅或玻璃面板。请在dxpr_theme_subtheme.css中设置该类的样式,作用范围限定为其适用的 DXPR Builder 元素。
7. 随主题发布调色板
在子主题根目录的color-settings.json中添加命名的方案。每个方案设置的键与面板使用的相同:base, basetext, link, accent1, accent2, text, headings, card, footer, header, pagetitle等。该方案会出现在设置表单的配色方案列表中,网站可以一键切换到品牌调色板。
8. 以后更新 DXPR Theme
- 用 Composer 更新基础主题:
composer update drupal/dxpr_theme --with-dependencies。 - 运行数据库更新并清空缓存。
- 打开子主题的设置表单并再次保存,以便用所有新变量重新生成设置样式表。
- 阅读发行说明,了解模板或区域的变更,并将您覆盖过的模板与新版本对比。
让 AI 智能体为您完成主题设置
DXPR Theme 8.1.1 及更高版本附带智能体技能。在项目中运行drush dxt:setup-ai,您的编码智能体(Claude Code、Codex、Gemini CLI 或 Cursor)就会学习主题的设置及其含义。描述品牌,智能体就会通过面板写入的相同设置来设置颜色、排版、页眉布局和间距,供您在网站上检查。它还可以用drush dxt:subtheme:create。
DXPR Builder 技能为页面做同样的事,Drush Webmaster 为内容和视图做同样的事。查看智能体技能实战。