原文链接:Defining a theme with an .info.yml file
想要创建一个 Drupal 8 模板, 第一步你需要建一个 THEMENAME.info.yml 文件,此文件提供了主题的一些元数据给给 Drupal 调用。比较类似于 模块 和安装 profiles 中的定义,但是在.info.yml文件里将“type”键设为“theme”用来区分他们的不同,这个比较重要。
此页面提供演示的 THEMNAME.info.yml 文件和一些此文件可使用的功能概述。
创建一个 .info.yml 文件
在模板文件夹下,创建一个自己的文件夹,我们拿 mahonghong 举例,然后在 mahonghong 文件夹下,创建一个 mahonghong.info.yml,此时在你的网站内的 Manage > Appearance (http://example.com/admin/appearance),应该就能看到这个模板了。
Example
name: Fluffiness type: theme description: 'A cuddly theme that offers extra fluffiness.' package: Custom core: 8.x libraries: - fluffiness/globalstyling stylesheets-remove: - '@classy/css/layout.css' - core/assets/vendor/normalize-css/normalize.css regions: header: Header content: Content sidebar_first: 'Sidebar first' footer: Footer
在你的 Drupal 网站中,你可以查看系统自带的主题,所以你可以找到更多关于 .info.yml 的例子。比如说在 core/themes/stark 文件夹下,你可以找到 stark.info.yml。
Keys
下面的几点,将包含关于主题的信息和基本的功能。
name: Fluffiness
必填字段, 这个名字将显示在你需要激活主题的界面。
description: 'An extra cuddly Drupal theme available in grey and blue.'
必填字段, 描述和上面的名字相同,都是要显示在主题选择界面的。
package: Custom
这个 Package 将允许你在管理主题界面归类。
type: theme
必填字段,类型,告诉 Drupal 你这是什么类型的扩展文件。比如,模块,模板。对于主题来说,这里永远设置成 "theme"。
base theme: classy
主题可以继承其他的主题,设置成 base 主题,详情查看 https://www.drupal.org/node/2165673
core: 8.x
必填字段,具体说明你的主题和 Drupal 核心兼容的版本。
version: 8.x-1.0
对于 drupal.org 网站上的模块,版本号会被脚本自动填写。不建议手动去填写,可忽略。
screenshot: fluffiness.png
在你的主题管理界面显示截图,如果您未使用此项,drupal 会自动查找并显示文件夹下的 screenshot.png。
libraries: - fluffiness/globalstyling
此库文件可以包含 css 和 js 到所有的页面,详情,请阅读 https://www.drupal.org/node/2216195
如果库文件被定义为:
globalstyling: version: 1.x css: theme: css/style.css: {} css/print.css: { media: print }
在 html 中将得到如下结果:
<link rel="stylesheet" href="css/style.css" media="all" /> <link rel="stylesheet" href="css/print.css" media="print" />
stylesheets-remove: - core/assets/vendor/normalize-css/normalize.css # 1 - '@bartik/css/style.css' # 2
注:
- #1: stylesheets-remove 将移除由另一个模板或模块添加的样式表。 CSS 文件完整路径将会显示,上面的只是文件名,为了适应多个文件的名称相同。
- #2:在删除Drupal核心文件(如jQuery UI中的CSS文件)时,要用完整文件路径。当文件属于某个模块或主题的组成部分时,要使用标记。注意,使用标记时需要进行引用,因为@在YAML中是一个保留标志。
regions: - header: Header - content: Content # required! - sidebar_first: 'Sidebar first' - footer: Footer
下面的 header,content,sidebar_first,footer 区块隶属于 regions。 content 是必须要存在的区域(region)。
更多信息
- Adding stylesheets (CSS) and JavaScript (JS) to a Drupal 8 theme
- 详细描述 *.info.yml 文件中所有可用key的说明请看这里: Let Drupal 8 know about your module with an .info.yml file
- 变更记录: .info files are now .info.yml files
(无主题)
嗯,学习了