web-dev-qa-db-fra.com

Ajout d'un lien à une image

Existe-t-il un module ou un moyen de faire en sorte qu'un champ Image soit un lien cliquable vers une URL qui soit soit entrée comme paramètre supplémentaire pour le champ Image, soit extrait d'un autre champ qui stocke cette URL.

Cela https://www.drupal.org/project/linked_field ressemble à ce que je veux, mais il ne semble pas y avoir de jeton que je puisse utiliser qui fera ce que je veux.

Cela ressemble aussi exactement à ce que je veux, mais c'est pour D7. https://www.drupal.org/project/linkimagefield

J'utilise ceci pour un type de champ personnalisé

3
StevenPatz

Vous pouvez créer un fichier modèle pour votre type de contenu.

nœud - [nom-type] .html.twig

<a href="{{ content.field_url }}"> {{ content.field_image }} </a>

0
No Sssweat

Si vous créez déjà un type de champ personnalisé, vous pouvez ajouter des propriétés pour le lien vers votre champ:

class MyLinkField extends FieldItemBase {

  public static function propertyDefinitions(StorageDefinition $storage) {
    ...  
    $properties['title'] = DataDefinition::create('string')
      ->setLabel(t('Title'));
    $properties['url'] = DataDefinition::create('string')
      ->setLabel(t('URL'));
  }

et l'utiliser dans le formateur de champ:

class MyLinkFieldFormatter extends FormatterBase {

  public function viewElements(FieldItemListInterface $items, $langcode) {
    $elements = [];
    foreach ($items as $delta => $item) {
      $elements[$delta] = [
        '#type' => 'link', 
        '#title' => $item->title,
        '#url' => Url::fromUri($item->url),
      ];
    }
  return $elements;
  }
1
4k4