如何设置主题徽标?


16

如何在Drupal 8的自定义主题中设置徽标?

我可以看到Drupal正在寻找logo.svg文件。我有一个在Drupal 7中使用的PNG logo.png文件,我想重新使用它。我无法像Drupal 7一样将徽标设置为主题设置。

是否可以通过UI或主题中的自定义代码来设置徽标?


查看Drupal 8代码,如果尚未启用默认徽标,则可以看到它仍然具有自定义徽标的设置。
kiamlaluno

是的,的确,如果禁用“使用主题提供的默认徽标”,则可以选择徽标。我当时
想让

Answers:


15

在Drupal 8.6.x之后

在您THEME.info.yml添加一行logo: logo.png。您需要清除Drupal的缓存才能检测到此更改。

在Drupal 8.6.x之前

现在,默认徽标文件已包含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参数禁用。


1
希望您执行了上述说明。另外,不要忘记重新安装主题或导入配置(如)drush cim -y --partial --source=path/to/theme/config/install。我已经使用过几次了,并且有效。
Jigarius

您还可以使用以下代码(例如,从更新挂钩中)重新导入配置。注意,这将擦除自安装主题以来添加的所有配置:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk

我尝试将主题设置为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。



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

如果您希望该徽标在网站的其他部分显示出与众不同的方式,则这非常灵活,特别有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.