Comment définir le logo du thème?

16

Comment puis-je définir le logo dans mon thème personnalisé dans Drupal 8?

Je peux voir que Drupal recherche le fichier logo.svg. J'ai un fichier PNG logo.png que j'ai utilisé dans Drupal 7 et je voudrais le réutiliser. Je ne peux pas définir le logo comme paramètre de thème comme dans Drupal 7.

Existe-t-il un moyen via l'interface utilisateur ou du code personnalisé dans le thème pour définir le logo?

batigolix
la source
En regardant le code Drupal 8, je peux voir qu'il a toujours le paramètre pour un logo personnalisé, si celui par défaut n'a pas été activé.
kiamlaluno
Oui, en effet, si vous désactivez "Utiliser le logo par défaut fourni par le thème", vous pouvez alors choisir un logo. Je pensais laisser Drupal choisir mon logo.png comme logo par défaut
batigolix

Réponses:

15

Après Drupal 8.6.x

Dans votre THEME.info.ymlajouter une ligne commelogo: logo.png . Vous devez vider le cache pour Drupal pour détecter ce changement.

Avant Drupal 8.6.x

Le fichier de logo par défaut est maintenant devenu logo.svgdans Drupal 8. Cependant, pour utiliser logo.pngou autre chose, vous devez ajouter une définition de paramètres personnalisés dans votre thème. Pour ce faire, ajoutez les lignes suivantes au config/install/THEME.settings.ymlfichier dans votre dossier de thème (remplacez-le THEMEpar le nom d' ordinateur de votre thème).

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

Après cela, vous devez réinstaller votre thème s'il est déjà installé. Le fichier demande à Drupal d'installer les paramètres donnés lors de l'installation du thème. Par conséquent, lorsque vous installez le thème, le pathparamètre logo est enregistré dans la base de données et le logo par défaut est désactivé par le use_defaultparamètre.

Jigarius
la source
1
J'espère que vous avez exécuté les instructions comme mentionné. N'oubliez pas non plus de réinstaller le thème ou d'importer la configuration comme drush cim -y --partial --source=path/to/theme/config/install. Je l'ai utilisé plusieurs fois et cela fonctionne.
Jigarius
Vous pouvez également réimporter la configuration en utilisant le code suivant (par exemple à partir d'un hook de mise à jour). NOTE ceci effacera toute configuration ajoutée depuis l'installation du thème:\Drupal::service('config.installer')->installDefaultConfig('theme', 'theme_name');
leon.nk
J'ai essayé de définir le thème sur Bartik, puis de nouveau sur mon thème et les paramètres n'ont pas été mis à jour. Je n'ai pas accès à la ligne de commande pour drush. Comment réinstaller le thème?
Jeff
6

Pour les thèmes réguliers, vous pouvez simplement aller à la page d'apparence, aller dans l'onglet Paramètres et désélectionner Use the logo supplied by the theme. Le formulaire de téléchargement qui apparaît permet de télécharger une autre image à la place.

pas

Si vous êtes en train de créer le thème et que vous souhaitez fournir une image par défaut, veuillez vous reporter à l'une des autres réponses.

Neograph734
la source
5

Dans le fichier MYTHEME.theme de votre thème, ajoutez le code suivant.

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

  }
}

Placez le fichier logo dans le répertoire MYTHEME. Remplacez MYTHEME par le nom de machine de votre thème.

Wasim Khan
la source
5

Depuis Drupal 8.6, votre thème contrib ou personnalisé (disons qu'il s'appelle mythemename) peut facilement définir le logo par défaut dans son mythemename.info.ymlfichier:

logo: images/acme-logo-stacked.png

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

Notez que pour être utilisé, le use_defaultparamètre du logo doit être vrai.

mlncn
la source
C'est maintenant fait, voir ThemeInitialization
berliner
4

Dans Drupal 8, le logo par défaut doit être un fichier SVG. Vous pouvez toujours utiliser un fichier PNG avec un logo personnalisé, ou si le thème a des paramètres personnalisés supplémentaires pour prendre en charge les logos par défaut non SVG.

C'est ce qui est rapporté dans Le type de logo par défaut pour les thèmes est SVG , un enregistrement de changement pour Drupal 8.0.0-beta5.

Comme indiqué dans le commentaire, vous pouvez également utiliser les éléments suivants dans le fichier de paramètres de thème.

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

Cela utiliserait automatiquement un logo personnalisé sans le définir à partir de l'interface utilisateur.

kiamlaluno
la source
3

Dans le fichier /your-drupal-folder/themes/THEME.theme , ajoutez ceci:

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
la source
1

Dans Drupal 8.6, cela peut être défini dans votre fichier .info.yml comme suit:

logo: 'images/MY_THEME_LOGO.png'

le chemin du thème est automatiquement ajouté au chemin src

Judder
la source
0

Je ne pense pas que vous ayez besoin de changer le code. Dans certains cas, Global settingsil se peut que vous vous empêchiez de prendre le logo du thème respectif. Par conséquent, assurez - vous LOGO IMAGEde paramètres globaux et le logo de votre thème devrait être le même dans Drupal 8 (certains cas).

TS Guhan
la source
0

Une option simple consiste à placer le logo dans un bloc personnalisé.

/ admin / structure / block / block-content

ceci est flexible et particulièrement utile si vous voulez que ce logo apparaisse différemment dans d'autres sections du site

Matoeil
la source