テーマのロゴを設定するにはどうすればよいですか?


16

Drupal 8でカスタムテーマにロゴを設定するにはどうすればよいですか?

Drupalがlogo.svgファイルを探すことがわかります。Drupal 7で使用したPNG logo.pngファイルがあり、それを再利用したいと思います。Drupal 7のようにロゴをテーマ設定として設定することはできません。

テーマにUIまたはカスタムコードを使用してロゴを設定する方法はありますか?


Drupal 8コードを見ると、デフォルトのロゴが有効になっていない場合、カスタムロゴの設定がまだあることがわかります。
kiamlaluno

はい、確かに「テーマが提供するデフォルトのロゴを使用する」を無効にすると、ロゴを選択できます。Drupalに私のlogo.pngをデフォルトのロゴとして選択させることを考えていました
-batigolix

回答:


15

Drupal 8.6.x以降

にのTHEME.info.ymlような行を追加しますlogo: logo.png。この変更を検出するには、Drupalのキャッシュをクリアする必要があります。

Drupal 8.6.xより前

デフォルトのロゴファイルはlogo.svgDrupal 8になりました。ただし、使用logo.pngするためには、テーマにカスタム設定定義を追加する必要があります。これを行うにconfig/install/THEME.settings.ymlは、テーマフォルダーのファイルに次の行を追加します(THEMEテーマのマシン名に置き換えます)。

logo:
  path: 'themes/THEME/logo.png'
  use_default: false

これを行った後、既にインストールされている場合はテーマを再インストールする必要があります。このファイルは、テーマのインストール時に指定された設定をインストールするようにDrupalに要求します。したがって、テーマをインストールすると、ロゴpathパラメータがデータベースに保存され、デフォルトのロゴはuse_defaultパラメータによって無効になります。


1
前述の手順を実行してください。また、テーマを再インストールするか、などの構成をインポートすることを忘れないでくださいdrush cim -y --partial --source=path/to/theme/config/install。私はこれを数回使用しましたが、動作します。
ジガリウス

また、次のコードを使用して構成を再インポートすることもできます(たとえば、更新フックから)。注:これにより、テーマがインストールされてから追加された設定が\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
消去

テーマをBartikに設定してから、テーマに戻してみましたが、設定は更新されていません。筆のコマンドラインにアクセスできません。テーマを再インストールするにはどうすればよいですか?
ジェフ

6

通常のテーマの場合は、外観ページに移動し、設定タブに移動して選択を解除するだけUse the logo supplied by the themeです。表示されるアップロードフォームでは、代わりに別の画像をアップロードできます。

歩数

実際にテーマを構築していて、デフォルトの画像を提供したい場合は、他の回答のいずれかを参照してください。


5

テーマのMYTHEME.themeファイルに、次のコードを追加します。

/**
 * Implements hook_preprocess_HOOK() for block templates.
 */

function MYTHEME_preprocess_block(&$variables) {
  switch ($variables['base_plugin_id']) {
    case 'system_branding_block':
      $variables['site_logo'] = '';
      if ($variables['content']['site_logo']['#access'] && $variables['content']['site_logo']['#uri']) {
        $variables['site_logo'] = str_replace('.svg', '.png', $variables['content']['site_logo']['#uri']);
      }
      break;

  }
}

ロゴファイルをMYTHEMEディレクトリに配置します。MYTHEMEをテーマのマシン名に置き換えます。


5

Drupal 8.6の時点では、contribまたはカスタムテーマ(mythemenameと呼ばれるなど)は、そのmythemename.info.ymlファイルでデフォルトのロゴを簡単に定義できます。

logo: images/acme-logo-stacked.png

https://www.drupal.org/docs/8/theming-drupal-8/defining-a-theme-with-an-infoyml-file#logoを参照してください

使用するには、ロゴuse_default設定がtrueでなければならないことに注意してください。


これは現在、ThemeInitializationを参照してください
ベルリン

4

Drupal 8では、デフォルトのロゴはSVGファイルである必要があります。カスタムロゴ付きのPNGファイルを使用したり、テーマにSVG以外のデフォルトロゴをサポートする追加のカスタム設定がある場合は、引き続き使用できます。

これは、テーマのデフォルトのロゴタイプで報告されているものです。SVGは、Drupal 8.0.0-beta5の変更記録です。

コメントで報告されているように、テーマ設定ファイルで次を使用することもできます。

logo:
  path: 'themes/THEME_NAME/logo.png'
  use_default: false

これにより、UIから設定せずに、カスタムロゴが自動的に使用されます。


3

/your-drupal-folder/themes/THEME.themeファイルにこれを追加します。

function THEME_preprocess_page(&$variables) {
  global $base_url, $base_path;
  $variables['logo'] = $base_url . $base_path . drupal_get_path('theme','THEME') . '/logo.svg';

  ##Uncomment this if you want to use png instead of svg image
  #$variables['logo'] = str_replace('.svg', '.png', $variables['logo']);
}

1

Drupal 8.6では、これは次のように.info.ymlファイルで設定できます。

logo: 'images/MY_THEME_LOGO.png'

テーマパスは自動的にsrcパスに追加されます


0

コードを変更する必要はないと思います。場合によってはGlobal settings、それぞれのテーマロゴの取得を停止する可能性があります。そのため、Drupal 8(一部のケース)LOGO IMAGEグローバル設定テーマロゴが同じであることを確認してください


0

簡単なオプションは、カスタムブロックにロゴを配置することです。

/ admin / structure / block / block-content

これは柔軟で、サイトの他のセクションで異なるロゴを表示したい場合に特に便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.