一、drupal目录结构
Drupal的主题可以理解为通过一些文件的集合定义drupal的展现层。用户可以定义一个或多个子主题。定义主题时,只有*.info.yml文件时必须的,其他主题或子主题的文件都是按照实际的需要增加。
Drupal的自定义的主题必须要放到drupal安装目录下的themes文件夹下,核心主题(core themes)例外,是放到core/themes目录下的。将贡献主题(contributed themes)放到名为contrib的子文件夹,和你自己的主题放到custom的子文件夹下,是一种最佳实践。
主题的命名必须是小写字母,空格需要使用下划线替代。典型的drupal主题安装目录如下
|-core
| |-modules
| |-themes
| | |-bartik
| | |-seven
..
|-modules
|-themes
| |-contrib
| | |-zen
| | |-basic
| | |-bluemarine
| |-custom
| | |-chahuawu
下面是一个典型的主题目录结构:
chahuawu
|-chahuawu.breakpoints.yml
|-chahuawu.info.yml
|-chahuawu.libraries.yml
|-chahuawu.theme
|-config
| |-install
| | |-chahuawu.settings.yml
| |-schema
| | |-chahuawu.schema.yml
|-css
| |-style.css
|-js
| |-chahuawu.js
|-images
| |-buttons.png
|-logo.svg
|-screenshot.png
|-templates
| |-maintenance-page.html.twig
| |-node.html.twig
二、drupal主题文件说明
以下是主题文件中各文件的说明:
*.info.yml:主题必须包含一个.info.yml文件,文件定义了metadata, 库文件和区域信息(block region). 这是drupal主题唯一一个必须包含的文件.
*.libraries.yml:定义了主题要使用的JavaScript和CSS库。
*.breakpoints.yml:断点文件,类似bootstrap的grid,用于适应不同分辨率的设备。
*.theme:一个PHP文件,包含所有的条件逻辑和输出的数据,也会包含一些主题的设置信息。
css:css文件目录,对应的css文件需要再.libraries.yml文件中定义,也可以被.info.yml文件覆写(overridden)或删除。
js:JavaScript文件目录,被主题引用的JavaScript文件,必须在.libraries.yml文件中定义。
images:图片目录
screenshot.png:主题截图
logo.svg:logo图片
templates:HTML文件目录和一些展现层逻辑文件的目录。可以按照子目录的方式归类各文件。