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.svg
Drupal 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']);
}