Como faço para definir o logotipo do tema?

16

Como posso definir o logotipo no meu tema personalizado no Drupal 8?

Percebo que o Drupal procura o arquivo logo.svg. Eu tenho um arquivo PNG logo.png que usei no Drupal 7 e gostaria de reutilizá-lo. Não consigo definir o logotipo como uma configuração de tema, como no Drupal 7.

Existe uma maneira de interface do usuário ou código personalizado no tema para definir o logotipo?

batigolix
fonte
Observando o código do Drupal 8, vejo que ele ainda tem a configuração de um logotipo personalizado, se o padrão não tiver sido ativado.
kiamlaluno
Sim, de fato, se você desativar "Usar o logotipo padrão fornecido pelo tema", poderá escolher um logotipo. Eu estava pensando em deixar Drupal pegar minha logo.png como logotipo padrão
batigolix

Respostas:

15

Após o Drupal 8.6.x

No seu THEME.info.ymladicione uma linha como logo: logo.png. Você precisa limpar o cache do Drupal para detectar essa alteração.

Antes do Drupal 8.6.x

O arquivo de logotipo padrão agora se tornou logo.svgno Drupal 8. No entanto, para usar logo.pngou algo mais, você precisa adicionar definições de configurações personalizadas ao seu tema. Para fazer isso, adicione as seguintes linhas ao config/install/THEME.settings.ymlarquivo na pasta do tema (substitua THEMEpelo nome da máquina do tema).

logo:
  path: 'themes/THEME/logo.png'
  use_default: false

Depois de fazer isso, você deve reinstalar o tema, se já estiver instalado. O arquivo pede ao Drupal para instalar as configurações fornecidas quando o tema é instalado. Portanto, quando você instala o tema, o pathparâmetro logo é salvo no banco de dados e o logotipo padrão é desativado pelo use_defaultparâmetro.

Jigarius
fonte
11
Espero que você tenha executado as instruções conforme mencionado. Além disso, não esqueça de reinstalar o tema ou importar a configuração como drush cim -y --partial --source=path/to/theme/config/install. Eu usei isso várias vezes e funciona.
Jigarius 29/05
Você também pode importar novamente a configuração usando o código a seguir (por exemplo, de um gancho de atualização). OBSERVAÇÃO isso limpará qualquer configuração adicionada desde que o tema foi instalado:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk 7/17
Tentei definir o tema para Bartik e, em seguida, retornei ao meu tema e as configurações não foram atualizadas. Eu não tenho acesso à linha de comando para drush. Como faço para reinstalar o tema?
Jeff
6

Para temas regulares, você pode simplesmente ir para a página de aparência, ir para a guia Configurações e desmarcar Use the logo supplied by the theme. O formulário de upload que aparece permite carregar outra imagem.

passos

Se você está realmente construindo o tema e deseja fornecer uma imagem padrão, consulte uma das outras respostas.

Neograph734
fonte
5

No arquivo MYTHEME.theme do seu tema, adicione o seguinte código.

/**
 * 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;

  }
}

Coloque o arquivo do logotipo no diretório MYTHEME. Substitua MYTHEME pelo nome da máquina do seu tema.

Wasim Khan
fonte
5

A partir do Drupal 8.6, o seu tema personalizado ou contrib (por exemplo, chamado mythemename) pode definir facilmente o logotipo padrão em seu mythemename.info.ymlarquivo:

logo: images/acme-logo-stacked.png

Vejo https://www.drupal.org/docs/8/theming-drupal-8/defining-a-theme-with-an-infoyml-file#logo

Observe que, para ser usada, a use_defaultconfiguração do logotipo deve ser verdadeira.

mlncn
fonte
Agora, veja ThemeInitialization #
berliner
4

No Drupal 8, o logotipo padrão precisa ser um arquivo SVG. Você ainda pode usar um arquivo PNG com um logotipo personalizado ou se o tema tiver configurações personalizadas extras para dar suporte a logotipos padrão que não sejam SVG.

Isto é o que relatado em O tipo de logotipo padrão para temas é SVG , um registro de alterações para o Drupal 8.0.0-beta5.

Conforme relatado no comentário, você também pode usar o seguinte no arquivo de configurações do tema.

logo:
  path: 'themes/THEME_NAME/logo.png'
  use_default: false

Isso usaria automaticamente um logotipo personalizado sem defini-lo na interface do usuário.

kiamlaluno
fonte
3

No arquivo /your-drupal-folder/themes/THEME.theme, adicione isto:

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']);
}
Chetabahana
fonte
1

No Drupal 8.6, isso pode ser definido no seu arquivo .info.yml da seguinte maneira:

logo: 'images/MY_THEME_LOGO.png'

o caminho do tema é adicionado automaticamente ao caminho src

Judder
fonte
0

Eu não acho que você precise alterar o código. Em alguns casos, Global settingspode estar impedindo você de usar o respectivo logotipo do tema. Por isso, certifique-se LOGO IMAGEde configurações globais e seu logotipo tema deve ser o mesmo em Drupal 8 (alguns casos).

TS Guhan
fonte
0

Uma opção simples é colocar o logotipo em um bloco personalizado.

/ admin / estrutura / bloco / conteúdo do bloco

isso é flexível e particularmente útil se você deseja que o logotipo apareça muito diferente em outras seções do site

Matoeil
fonte