跳转到主要内容
mahonghong 提交于 1 July 2015
原文链接: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)。

更多信息