web-dev-qa-db-fra.com

Ajouter automatiquement un titre et un texte alternatif à l'image?

Sur mon site, les utilisateurs peuvent télécharger du contenu et également des images.

Mon objectif est que lorsqu'un utilisateur télécharge du contenu sur le site, ainsi qu'une image - le titre du contenu sera également le titre de l'image et le texte alternatif de l'image. Actuellement, j'utilise le champ d'image de base.

Existe-t-il un moyen ou un module qui peut réaliser tout cela?

6
EB84

Le moyen le plus direct pourrait être de faire quelque chose dans ce sens dans hook_node_presave () dans un module personnalisé:

function YOURMODULE_node_presave($node) {

  if(isset($node->field_image)) {
    $node->field_image[LANGUAGE_NONE][0]['alt']=$node->title;
    $node->field_image[LANGUAGE_NONE][0]['title']=$node->title;
  }

}

field_image est le nom réel du champ d'image que vous avez dans votre nœud.

Si vous ne voulez pas que vos utilisateurs soient visibles ou tentent de changer cela, assurez-vous simplement que les cases alt et title ne sont pas cochées dans la configuration du champ, par exemple:

enter image description here

car c'est juste pour le widget d'ajout/modification de champ dans le formulaire; le code ci-dessus fonctionnera toujours même si ces attributs ne sont pas "activés".

10
Jimajamma

Vous pouvez utiliser jetons ImageField :

Le module Jetons ImageField étend les fonctionnalités par défaut des champs Image en ajoutant la possibilité de spécifier des valeurs par défaut et d'utiliser des jetons de nœud dans le texte Alt et Titre.

enter image description here

6
milkovsky

Voici une règle D7 que j'ai créée pour faire exactement cela. Allez simplement dans Rules> Import and Save. Ajoutera automatiquement le [node:title] et [site:name] jetons au champ de texte alternatif lorsque le contenu est enregistré ou mis à jour:

{ "rules_alt_text_default" : {
    "LABEL" : "Alt Text Default",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "Custom" ],
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert" : [], "node_update" : [] },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_image" } }
    ],
    "DO" : [
      { "data_set" : {
          "data" : [ "node:field-image:alt" ],
          "value" : "[node:title] - Available at [site:name]"
        }
      }
    ]
  }
} 
1
Bob T.

Il existe 2 méthodes simples pour y parvenir:

La méthode 1 est plus simple; Configurez votre module d'entité de fichier et dans les champs d'attribut alt et title, remplacez le jeton par [current-page:title] Qui est également l'un des jetons disponibles

Remarque: pour cette méthode ci-dessus, les champs de titre et d'attribut sont remplacés si les champs sont vides, si du texte y est entré à tout moment, ce texte sera utilisé à la place.

La méthode 2 utilise des règles pour y parvenir et voici comment:

  1. Créez des règles avec les événements suivants:

    une. après avoir enregistré un nouveau contenu

    b. après la mise à jour du contenu existant

  2. Add condition: "content is of type: (add your content type(s) here.....)" Note: without this condition, rules does not seem to pull out the alt and title attributes from your image field. Vous pouvez également ajouter d'autres conditions pour vérifier si les champs sont vides ou non ("l'utilisation de la valeur des données est vide ....") afin de ne pas modifier le texte existant dans les champs. Cela donne un meilleur contrôle que la méthode 1 ci-dessus.

  3. Ajoutez 2 actions pour définir vos valeurs de données pour les champs alt et title ici en utilisant le titre du nœud.

Pour un contrôle encore plus fin, vous pouvez installer le module " Règles conditionnelles " pour vérifier si les deux ou un des attributs alt et title ont été remplis (exemple de scénario "si alt n'est PAS vide et le titre est vide, mettre à jour l'attribut title "ou" si alt est vide et que le titre n'est PAS vide, mettre à jour l'attribut alt ... etc).

Si vous ne souhaitez pas installer le module de règles conditionnelles mais souhaitez toujours un meilleur contrôle dans la vérification des champs vides, créez simplement 2 règles différentes pour vérifier indépendamment les deux champs.

  1. Enregistrez votre règle. c'est ça.

Vous pouvez également simplement importer cette règle que j'ai créée, qui effectue les étapes simples ci-dessus. Notez que mon champ est nommé "field_image" et mon type de contenu est "article":

{ "rules_update_image_alt_and_title_automatically" : {
    "LABEL" : "Update image alt and title automatically",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_update" : [], "node_insert" : [] },
    "IF" : [
      { "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } }
    ],
    "DO" : [
      { "data_set" : { "data" : [ "node:field-image:alt" ], "value" : "[node:title]" } },
      { "data_set" : { "data" : [ "node:field-image:title" ], "value" : "[node:title]" } }
    ]
  }
}
0
IT Pro Manager