Answers:
在您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在安装主题时安装给定的设置。因此,当您安装主题时,logo 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']);
}