By chenyi, 14 May, 2024
Forums
  1. info文件必须被放置在你的主题文件夹的根目录下,在我们这个例子中就应该是在nowicode文件夹中。
  2. 主题文件夹,也就是你的主题文件夹的名称(即nowicode)和info文件名前缀应该是一致的,比如本例中info文件的名字为nowicode.info.yml
  3. info文件的前缀名为Drupal系统定义了这个主题的机读名称。下面的内容里,你会学到,你可以在info文件内部为主题定义一个名字和一个描述,但是他们都是用来显示在管理界面上给人理解的,机器(Drupal系统)却不认这个名字,它只认info文件的前缀名。
  4. info文件是一个YAML文件,它是Drupal主题唯一必须的文件。
  5. info文件的前缀名必须为小写,只包含数字和字母,以字母开头,不能包含空格,但是可以包含下划线。
  6. info文件的前缀名不应该和网站中已经存在的主题、模块、安装档案同名。这意味着,如果你是一个新手,你需要尽快搞清楚Drupal生态圈中有哪些著名的主题和模块,比如zen、bootstrap主题,panels、views模块,都是很著名的。避免使用这些已有的名称能帮助你规避一些不必要的麻烦。
  7. .yml文件是一个YAML格式的文件,在D8中所有的配置文件都是YAML格式的。在YAML文件中注释是以#开头的。缩进必须是2个空格,或者2个倍数个空格。key的后面紧跟一个冒号和空格,然后是值。

 

info文件所应该包含的内容

# File: nowicode.info.yml

name: nowicode
type: theme
description: A custom theme for nowicode.
core: 8.x

base theme: stable
version: 8.x-1.0

libraries:

-nowicode/global-styling

regions:

header: Header
content: Content
footer: Footer

1-4行是每个info文件都必须包含的,分别是:名字、类型、描述和所对应的核心版本。关于他们的具体细节,你可以阅读文档中的内容。

 

name和description:

让你定义这个主题在外观管理界面(admin/appearance)中显示的名称(这里的名称是给人读的,即human readable name)和描述。

 

type:

这个值为“theme”,它告诉Drupal系统这是一个主题。与之相对应的是“module”,模块的info文件中使用它。另外,在安装档案中还有另一个值为“profile”。

 

core:

用于声明本主题/模块所适用的Drupal版本,如8.x。

 

base theme:

base theme 就是基主题。

在官网文档中推荐你声明基主题。这样,你这个主题就能从基主题那继承基主题所包含的资源和特性。官网推荐的做法是所有的D8主题都应该继承自classy主题或者stable主题,这样可以降低主题出错的概率。如果你的主题不以任何其它主题为基主题的话,你应该声明如下:

base theme:false

但是这样会遗留一个问题,那就是你必须在整个Drupal8的生命周期里为你的主题做好升级的准备,核心的一些标签会持续变化,这会导致你的主题出问题。

 

version:主题的版本号。

 

libraries:声明网站所需要加载的库。见《关于.libraries.yml文件的详细说明》

 

regions:

定义区域。具体的定义规则为——区域机读名称:’区域名称’。这里区域机读名称,遵循各种机读名称的规则,即必须是小写,不能出现空格,可以使用下划线替代空格,只能包含字母和数字,并且以字母开头。单引号中的区域名称可以出现空格。

 

有一点需要注意的是,父主题的预处理函数、模版、JS和CSS文件都可以被子主题自动继承,但是区域的定义却不行,所以你需要在新创建的子主题中重新定义区域。具体来说以下这些东西都不会被继承:Regions, Features, Theme Settings, Core Version, Logo, Favicon & Color module support. (见官网文档)