Drupal 8 のテーマを .info.ymlファイルで定義する

Drupal 8 テーマ作成ガイド
この記事は「 Defining a theme with an .info.yml file 」の翻訳です。
この記事の目次

最終更新日 2018年5月11日

.info.ymlファイルを作成する

テーマフォルダのルートに.info.ymlファイルを作成します。テーマフォルダ名は.info.ymlファイルのファイル名と同じ名前にする必要があります。もしテーマ名が "Fluffiness"の場合、テーマフォルダ名は "fluffiness / "で、.info.ymlファイル名は "fluffiness / fluffiness.info.yml"です。この.info.ymlファイルが存在する場合、このテーマは、管理画面の 管理 ”>” テーマ に表示されます。モジュールや別のテーマで、使用されていないテーマ名をつけるようにしてください。テーマ名は、1つのDrupalセットアップの中で、固有の名前でなければなりません。そうでない場合、テーマコンポーネントが正しく読み込まれません。

フォルダ名(および.info.ymlファイル名)にスペースがある場合は、テーマ名のスペースをアンダースコアに置き換えます。

YAMLファイルの構造に詳しくない場合は、YAMLファイルフォーマットの簡単な紹介を読んでください。

  • タブは使用できません。スペースのみを使用してください。
  • プロパティとリストのインデントは、 2スペースにする必要があります。

例)

name: Fluffiness
type: theme
description: 'A cuddly theme that offers extra fluffiness.'
core: 8.x
libraries:
  - fluffiness/global-styling
base theme: classy
regions:
  header: Header
  content: Content
  sidebar_first: 'Sidebar first'
  footer: Footer

Drupalサイト内では、コアが提供するさまざまな .info.ymlファイルのサンプルを見つけることができます。例として、core/themes/starkフォルダ内のstark.info.yml ファイルなどです。

キーと値のペア

次のキーと値のペアは、テーマのメタデータやいくつかの基本的な機能を定義します。(\Drupal\Core\Extension\InfoParserInterface::parse() 参照

name(必須)

ヒューマンリーダブルなテーマの名前を設定します。これは「テーマ」ページに表示されます。

name: Fluffiness

type (必須)

ファイルで拡張機能のタイプを設定します("module", "theme", "profile" など)。テーマの場合は"theme"に設定する必要があります。

type: theme

description (オプション)

「テーマ」ページに表示されるテーマの説明です。

description: An extra cuddly Drupal theme available in grey and blue.

package (オプション)

テーマをグループ化するパッケージを指定します。

package: Core

core (必須)

テーマと互換性のあるDrupal coreのバージョンを指定します。

core: 8.x

php (オプション)

最低限必要とされるPHPのバージョン。 デフォルトは、DRUPAL_MINIMUM_PHPconstant の値になります。

php: 5.5.9

version (オプション)

バージョンを指定します。drupal.orgで提供されているテーマの場合は、バージョン番号はパッケージングスクリプトによって自動的に記入されますので、手動で設定せずに、versionの行自体を完全に省略してください。

version: 8.x-1.0

libraries (オプション)

このテーマが有効なすべてのページに追加するライブラリの一覧を設定します。CSSアセットとJavaScriptアセットの両方を含むことが可能です。

詳しくは「テーマとライブラリアセットについて」のページ参照。

libraries:
  - fluffiness/global-styling

libraries-override (オプション)

オーバーライドするライブラリとアセットを設定します。

詳しくは「ライブラリのオーバーライドと拡張」のページ参照。

libraries-override:
  contextual/drupal.contextual-links:
    css:
      component:
        /core/themes/stable/css/contextual/contextual.module.css: false

base theme (推奨)

ベーステーマを指定すると、別のテーマからリソースを継承できます。classy テーマ、または stableテーマ (キーが指定されていない場合はデフォルトでstableテーマが適用されます。)を使うのがお勧めです。ベーステーマを設定することで、テーマが将来のコアテーマの変更を継承しやすくなります。

base theme: classy

hidden (オプション)

管理画面からのテーマの有効/無効の設定ができないように、「テーマ」ページからテーマを非表示にするかどうかを設定します。

hidden: true

engine (オプション)

テーマのテンプレートエンジンを設定します。デフォルトは "twig"です。

engine: twig

logo (オプション)

8.6.xで導入されました
変更履歴:https://www.drupal.org/node/2939152

テーマのファイルに対するロゴのパス。デフォルトでは、Drupalはあなたのテーマフォルダのルートにある "logo.svg"という名前のファイルを探し、これをテーマのロゴとして使用します。 .info.yml

logo: images/logo.png

screenshot (オプション)

.info.ymlファイルを基準にしたスクリーンショット画像ファイルへのパスを設定します。スクリーンショット画像ファイルは、幅が588pixel、高さが438pixelですが、表示時には、小さいサイズになります。 デフォルトでは、テーマフォルダルートの "screenshot.png"ファイルを 「テーマ」ページのテーマイメージとして使用します。

screenshot: fluffiness.png

regions (オプション)

リージョンのリスト(注意:リージョンキーの前に、ダッシュ ” - ”はつきません)。contentリージョンは必須です。 詳しくは、「テーマにリージョンを追加する」ページを参照。

regions:
  header: Header
  content: Content
  sidebar_first: 'First sidebar'

regions_hidden (オプション)

ベーステーマから継承したリージョンで、削除するリージョンをリストで設定します。

regions_hidden:
  - sidebar_last

features (オプション)

テーマの「設定」ページで公開する機能をリストで設定します。

features:
  - comment_user_verification
  - comment_user_picture
  - favicon
  - logo
  - node_user_picture

stylesheets-remove (廃止予定)

このテーマが有効なすべてのページにおいて削除する、他のテーマやモジュールに由来のスタイルシートの一覧を設定します。同じ名前を持つファイルが存在する場合もあるので、ルートを基準にした絶対パスで設定します。 ファイルが、モジュールまたはテーマで使用するライブラリの一部の場合、絶対パスではなく、”@” の後に、モジュール名またはライブラリ名を書き(モジュールまたはライブラリを読み込みます)、モジュールまたはライブラリ内のパスを記載します。 "@"はYAMLの予約済みインジケータのため、値を引用符で囲む必要があります。

注:このキーは推奨されておらず、Drupal 9で削除されます。ほとんどの場合、libraries-override で設定が可能です。

ckeditor_stylesheets (オプション)

CKEditorのフレーム内に追加するスタイルシートをリストで設定します。

ckeditor_stylesheets:
  - https://fonts.googleapis.com/css?family=Open+Sans
  - css/base/elements.css

詳しくは

 
フッターの採用情報
 
Yoshikazu Aoyamaの写真

この記事を書いた人: Yoshikazu Aoyama

昔は回線交換やL2/L3のプロトコルスタックの開発をしてました。その後、組み込みLinuxやJava/Ruby on RailsなどのWebシステム開発などを経て現職。
インフラからDrupalのモジュール開発、Drupal以外の開発までなんでもやります。
普段は札幌で猫と一緒にリモートワークしています。 好きなモジュールは Restful Web Services と Rules

関連コンテンツ