web-dev-qa-db-fra.com

Comment changer le titre du lien "Connexion" dans le menu du compte pour les utilisateurs anonymes?

Comment changer le titre du lien "Connexion" dans le menu du compte pour les utilisateurs anonymes en Drupal 8? Merci pour toutes suggestions.

2
Belial

EDIT: mediaashley a suggéré une solution beaucoup plus simple de créer un nouveau menu et d'utiliser le bloc de menu. Je ne sais pas pourquoi je n'y ai pas pensé.

Si vous parlez du lien par défaut qui apparaît dans le bloc "Menu du compte utilisateur". Vous remarquerez que vous voyez le message

Ce lien est fourni par le module Utilisateur. Le titre et le chemin ne peuvent pas être modifiés.

Il existe plusieurs façons de contourner ce problème. Mais je pense que le plus rapide et le plus simple serait de créer vos propres blocs personnalisés et de mettre manuellement des liens vers les pages de compte. Vous devez d'abord supprimer le bloc "Menu compte utilisateur" de la disposition des blocs. Cliquez ensuite sur l'onglet "Disposition des blocs personnalisés" et cliquez sur "Ajouter un bloc personnalisé"

enter image description here

De là, vous pouvez créer votre propre lien personnalisé comme ça

enter image description here

Dans cet exemple, j'ai créé un lien personnalisé pour les utilisateurs déconnectés. Une fois que vous l'avez enregistré, vous aurez une série d'options pour déterminer si le bloc doit être affiché dans la section de visibilité. Cliquez sur l'onglet de rôle et cochez "anonyme" si vous souhaitez que ce bloc s'affiche uniquement pour les utilisateurs connectés. Et assurez-vous de l'attribuer à une région.

enter image description here

Une fois que vous avez terminé, vous devrez répéter le processus, à l'exception de "Utilisateur authentifié cette fois.

2
Matt

Comme décrit par @Matt dans le réponse le lien du menu est fourni par le module utilisateur et vous pouvez simplement décider de ne pas l'utiliser et créer vos propres liens.

Le lien dans le module utilisateur est un lien dynamique où un plugin de lien de menu génère un titre différent selon que l'utilisateur est authentifié ou non.

Pour changer le titre, vous pouvez remplacer cette classe de plugin:

/**
 * Implements hook_menu_links_discovered_alter().
 */
function mymodule_menu_links_discovered_alter(&$links) {
  $links['user.logout']['class'] = 'Drupal\mymodule\Plugin\Menu\MyLoginLogoutMenuLink';
}

et redéfinissez la méthode getTitle () avec votre propre contenu:

mymodule/src/Plugin/Menu/MyLoginLogoutMenuLink.php:

<?php

namespace Drupal\mymodule\Plugin\Menu;

use Drupal\user\Plugin\Menu\LoginLogoutMenuLink;

class MyLoginLogoutMenuLink extends LoginLogoutMenuLink {

  public function getTitle() {
    if ($this->currentUser->isAuthenticated()) {
      return $this->t('My Log out');
    }
    else {
      return $this->t('My Log in');
    }
  }

}

Une troisième option serait de changer le titre dans une traduction de l'anglais vers l'anglais, voir Comment traduire en anglais?

4
4k4

C'était la méthode la plus rapide pour moi; J'ai dû exécuter ce code dans un module personnalisé.

function mymodule_link_alter(&$variables) {
  if ($variables['text'] == 'My account') {
    $variables['text'] = t('Account');
  }
  if ($variables['text'] == 'Log out') {
    $variables['text'] = t('Sign out');
  }
}
1
dowen121