Un modèle de brindille affiche une liste de liens fournis avec les classes. Les bases:
{{ mylink }}
le code de brindille produira quelque chose comme
<a href="#" class="someclass" >the text</a>
Tous les liens n'ont pas de classes. Je veux écrire un modèle de brindille qui produira à la place quelque chose comme ceci:
<a href="#" class="someclass" >
<span class="sprite someclass" ></span>
the text</a>
Ce que j'ai essayé:
J'ai cherché le modèle de brindille à remplacer. Malheureusement, il semble que les liens ne soient pas rendus par un modèle de brindille.
J'ai essayé de mettre à jour la variable twig comme
set mylink['#title'] = "<span>...</span>" ~ mylink['#title']
Mais ça ne me laissera pas faire ça.
Réponses:
Voici une solution de brindille uniquement pour un domaine particulier qui a besoin de ce traitement; ce n'est pas une solution générique pour tous les liens partout.
some-template.twig:
la source
item.link['#url']
donne la même URL pour toutes les langues!Je n'ai pas trouvé de moyen de changer le lien '#markup' dans twig, mais il y a moyen de le changer pendant la phase de rendu.
J'ai créé ce petit module qui étend les fonctionnalités de Link et permet d'injecter des trucs sur le lien rendu. Permet donc de faire du code, je vais vous expliquer dans les commentaires ...
Structure des fichiers du module:
Contenu du fichier:
better_link.info.yml
better_link.module
BetterLinkFormatter.php
BetterLink.php
Important:
Cela fonctionnera pour tous vos champs de lien , bien sûr, si vous changez son formateur dans la gestion de l'affichage (modification de votre type de nœud).
J'espère que cela peut être utile.
Demande à @artfulrobot: pouvez-vous tester ce module? Je pense que ce problème de traduction peut être résolu de cette façon.
la source
vous pouvez simplement ajouter un tableau de rendu à #title, comme:
Ancienne réponse longue:
Vous pouvez remplacer le service de générateur de liens
Créez un module (alternative_linkgenerator), avec un fichier info alternative_linkgenerator.info.yml
Créez un fichier appelé alternative_linkgenerator.services.yml
La prochaine étape consiste à créer la classe, à ajouter un dossier nommé «src» (conformément aux normes de chargement automatique PSR-4) et à l'intérieur de celui-ci un fichier appelé AlternativeLinkGenerator.php. (Ceci est une copie 1: 1, vous devez adapter les choses pour votre)
Modifiez services.yml (normalement sur sites / default / services.yml dans votre base de code Drupal 8) et ajoutez ce qui suit:
les accessoires vont ici
la source
template_preprocess_links
chose n'est pas appelée non plus (c'est quelque chose de spécifique, malgré son nom générique).core/lib/Drupal/Core/Utility/LinkGenerator.php
le sgenerate()
est utilisé et cela force le texte à passerHtml::escape()
, il n'y a donc aucun moyen de le faire sans contourner complètement le formateur de liens de Drupal.essayez ce code:
{%- fin si %}
ou celui-ci (il provient de: https://github.com/liip/bund_drupal_starterkit_theme/blob/master/templates/navigation/links--language-block.html.twig ):
la source