Drupal 8でカスタムテーマにロゴを設定するにはどうすればよいですか?
Drupalがlogo.svgファイルを探すことがわかります。Drupal 7で使用したPNG logo.pngファイルがあり、それを再利用したいと思います。Drupal 7のようにロゴをテーマ設定として設定することはできません。
テーマにUIまたはカスタムコードを使用してロゴを設定する方法はありますか?
Drupal 8でカスタムテーマにロゴを設定するにはどうすればよいですか?
Drupalがlogo.svgファイルを探すことがわかります。Drupal 7で使用したPNG logo.pngファイルがあり、それを再利用したいと思います。Drupal 7のようにロゴをテーマ設定として設定することはできません。
テーマにUIまたはカスタムコードを使用してロゴを設定する方法はありますか?
回答:
にのTHEME.info.ymlような行を追加しますlogo: logo.png。この変更を検出するには、Drupalのキャッシュをクリアする必要があります。
デフォルトのロゴファイルはlogo.svgDrupal 8になりました。ただし、使用logo.pngするためには、テーマにカスタム設定定義を追加する必要があります。これを行うにconfig/install/THEME.settings.ymlは、テーマフォルダーのファイルに次の行を追加します(THEMEテーマのマシン名に置き換えます)。
logo:
  path: 'themes/THEME/logo.png'
  use_default: falseこれを行った後、既にインストールされている場合はテーマを再インストールする必要があります。このファイルは、テーマのインストール時に指定された設定をインストールするようにDrupalに要求します。したがって、テーマをインストールすると、ロゴpathパラメータがデータベースに保存され、デフォルトのロゴはuse_defaultパラメータによって無効になります。
drush cim -y --partial --source=path/to/theme/config/install。私はこれを数回使用しましたが、動作します。
                    \Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
                    通常のテーマの場合は、外観ページに移動し、設定タブに移動して選択を解除するだけUse the logo supplied by the themeです。表示されるアップロードフォームでは、代わりに別の画像をアップロードできます。
実際にテーマを構築していて、デフォルトの画像を提供したい場合は、他の回答のいずれかを参照してください。
テーマの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をテーマのマシン名に置き換えます。
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でなければならないことに注意してください。
Drupal 8では、デフォルトのロゴはSVGファイルである必要があります。カスタムロゴ付きのPNGファイルを使用したり、テーマにSVG以外のデフォルトロゴをサポートする追加のカスタム設定がある場合は、引き続き使用できます。
これは、テーマのデフォルトのロゴタイプで報告されているものです。SVGは、Drupal 8.0.0-beta5の変更記録です。
コメントで報告されているように、テーマ設定ファイルで次を使用することもできます。
logo:
  path: 'themes/THEME_NAME/logo.png'
  use_default: falseこれにより、UIから設定せずに、カスタムロゴが自動的に使用されます。
で /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']);
}