Comment changer le titre du lien "Connexion" dans le menu du compte pour les utilisateurs anonymes en Drupal 8? Merci pour toutes suggestions.
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é"
De là, vous pouvez créer votre propre lien personnalisé comme ça
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.
Une fois que vous avez terminé, vous devrez répéter le processus, à l'exception de "Utilisateur authentifié cette fois.
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?
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');
}
}