Drupal 8)のカスタムテーマにロゴを設定するにはどうすればよいですか?
Drupalはlogo.svgファイルを探します。Drupal 7で使用したPNG logo.pngファイルがあります。 Drupal 7.のように、ロゴをテーマ設定として設定できません。
ロゴを設定するために、テーマのUIまたはカスタムコードを使用する方法はありますか?
THEME.info.yml
にlogo: logo.png
のような行を追加します。この変更を検出するには、Drupalのキャッシュをクリアする必要があります。
デフォルトのロゴファイルは、Drupal 8)でlogo.svg
になりました。ただし、logo.png
などを使用するには、テーマにカスタム設定定義を追加する必要があります。これには、テーマフォルダーのconfig/install/THEME.settings.yml
ファイルに次の行を追加します(THEME
をテーマのマシン名に置き換えます)。
logo:
path: 'themes/THEME/logo.png'
use_default: false
これを行った後、すでにインストールされている場合は、テーマを再インストールする必要があります。ファイルはDrupalテーマのインストール時に特定の設定をインストールするように要求します。したがって、テーマをインストールすると、ロゴpath
パラメータがデータベースとデフォルトのロゴに保存されますuse_default
パラメータによって無効化されます。
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でなければなりません。
テーマの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では、デフォルトのロゴは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']);
}
Drupal 8.6では、これは.info.ymlファイルで次のように設定できます:
logo: 'images/MY_THEME_LOGO.png'
テーマのパスはsrcパスに自動的に追加されます
簡単なオプションは、ロゴをカスタムブロックに配置することです。
/ admin/structure/block/block-content
これは柔軟性があり、サイトの他のセクションで異なるロゴを表示する場合に特に便利です。
コードを変更する必要はないと思います。ある場合には、 Global settings
は、それぞれのテーマのロゴを取得するのを妨げている可能性があります。したがって、LOGO IMAGE
of Global Settingsおよびyour your logoはDrupal 8(Some Cases)で同じである必要があります。