Je tente d'envoyer une liste de fichiers téléchargés sur un nœud nouvellement créé par courrier électronique.
Dans un type de contenu, j'ai un champ de fichier qui permet des valeurs illimitées.
Dans - Règles , j'ai créé une boucle appelant l'élément actuel "actuel_file".
J'essaie de concaténer toutes les valeurs dans un champ à longtext appelé "File_List".
J'ai l'intention d'utiliser le jeton pour la valeur de "File_List" dans le corps d'un courrier électronique.
Malheureusement, je suis incapable de le faire.
En mode de sélection de données, je peux accéder aux jetons créés par la boucle:
Cependant, en mode d'entrée direct, les jetons ne sont pas disponibles pour moi. Ils ne sont pas répertoriés dans la section "Modèles de remplacement".
Lorsque j'essaie de remplir la valeur avec ce qui suit, je n'ai aucun succès:
[node:field-file-list]
[current-file:file:url]
Que peut-on faire pour rendre les jetons disponibles pour moi en mode d'entrée direct?
Si je le fais mal, y a-t-il un moyen différent pour moi de concaténer toutes les URL de chaque fichier afin de pouvoir le mettre dans le corps d'une action électronique?
Cette réponse suppose que vous avez des connaissances de base en utilisant le module règles et comprendre comment utiliser une boucle pour renvoyer toutes les valeurs d'un champ avec des entrées autorisées illimitées.
(En outre, cela ne couvrira que réagir sur un nœud nouvellement créé.)
La principale question était donc que les variables en boucle dans les règles n'étaient pas disponibles pour moi tout en mode "Entrée directe", mais étaient disponibles en mode "Sélection des données".
J'avais besoin de concaténer tous les noms de fichiers et des URL de fichier pour un champ de fichier de valeur illimitée et de les envoyer dans une liste HTML non commandée dans un champ de texte long (HTML filtré).
Il peut y avoir une meilleure façon de le faire, mais c'était actuellement le seul moyen de faire ce travail.
Étant donné que les jetons variables de boucle ne sont pas disponibles en mode d'entrée direct, mais les jetons de champs réguliers sont, nous allons mettre les informations variables en boucle dans les nouveaux champs, puis les concaténer.
Vous créerez des champs pour les éléments suivants:
Dans les champs ci-dessus, seuls les tout premiers et très derniers champs seront visibles pour les utilisateurs. Le reste doit être masqué avec le module d'autorisations de terrain.
Les champs supplémentaires vont simplement être utilisés par le module de règles.
Étant donné que ce champ de fichier a des entrées illimitées, vous créerez une boucle et sélectionnez le champ Fichier.
J'ai nommé le fichier actuel dans la boucle "Current_File".
Dans la boucle nouvellement créée, nous créerons une action pour "définir une valeur de données". Il saisira le champ Nom de fichier nouvellement créé et saisira la valeur du nom du fichier du fichier actuel.
Assurez-vous que vous n'êtes pas en mode d'entrée direct ou que les jetons ne seront pas disponibles pour vous.
Cette étape est similaire à celle du dernier.
Ajoutez une autre action à "Définir la valeur de données" pour le champ URL de fichier/chemin de fichier nouvellement créé. Définissez-le pour saisir des données de l'URL du fichier du fichier actuel.
Encore une fois, assurez-vous que vous n'êtes pas en mode d'entrée direct ou que les jetons ne seront pas disponibles pour vous.
Enfin, dans le champ Liste des fichiers texte brut, nous allons concaténer les valeurs.
Nous entrons d'abord dans le jeton qui représente le champ actuel et en dessous, nous ajouterons sur le nom du fichier et le chemin actuel.
Cette fois, assurez-vous d'être en mode d'entrée direct pour que vous puissiez taper ce que vous voulez:
Assurez-vous que cela est en dehors de la boucle.
Ajoutez une action pour définir une valeur de données qui ajoute des balises UL autour de la valeur.
Nous allons ajouter une autre action pour définir une valeur de données. Il mettra la valeur de la liste de fichiers texte brut dans le champ Liste des fichiers HTML filtré.
La raison pour laquelle deux champs de liste de fichiers différents ont été créés sont car la concaténation dans un champ HTML filtré ne fonctionne pas pour une raison quelconque.
Si toutes les étapes sont suivies, vous devriez recevoir une liste HTML non commandée de chaque fichier téléchargé qui est lié à son URL de fichier:
J'ai l'impression que cela "devrait" être capable d'être accompli de loin moins de pas, mais c'était la seule façon de résoudre le problème.
Si ce que vous cherchez n'est pas disponible, il suffit de le rendre disponible, qui est "ne autre façon de concaténer toutes les URL de chaque fichier" (comme dans votre question). Lire la suite pour plus de détails ...
Regardez cet exemple d'une règle (dans le format d'exportation de règles), ce qui est une variante de ce que vous demandez:
{ "rules_show_list_of_fields" : {
"LABEL" : "Show list of fields",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "node_insert" : [], "node_update" : [] },
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } }
],
"DO" : [
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "StartOfList-" },
"PROVIDE" : { "variable_added" : { "email_list" : "List of eMail IDs" } }
}
},
{ "LOOP" : {
"USING" : { "list" : [ "node:field-email-addresses" ] },
"ITEM" : { "current_email" : "Current eMail" },
"DO" : [
{ "data_set" : {
"data" : [ "email-list" ],
"value" : "[email-list:value][current-email:value]-"
}
}
]
}
},
{ "data_set" : { "data" : [ "email-list" ], "value" : "[email-list:value]EndOfList" } },
{ "drupal_message" : { "message" : "The value of the email_list variable is: [email-list:value]." } }
]
}
}
Voici un résumé de ce que cette règle fait:
email_list
.email_list
valeur avec un préfixe.email_list
valeur.Dans mon cas, j'utilise un champ de texte multi-valeurs avec le nom de la machine field_email_addresses
, qui contient des identifiants de messagerie, et je veux simplement envoyer un message d'état avec une concaténation de ces identifiants de messagerie, séparés par un "-
", et avec un préfixe (= StartOfList
)/suffixe (= EndOfList
). et j'utilise également les règles" Mettre à jour le nœud existant ".
Remplacez le nom de la machine de mon champ de liste dans votre champ de liste et remplacez tous les "e-mail" par "Fichier" et vous devriez pouvoir importer cette règle dans votre propre site (si vous avez activé les règles activées).
Pas sûr si vous voulez le préfixe ou le suffixe, et/ou le caractère du séparateur (= "-
"). Adapter ou supprimer l'un de ces besoins pour répondre à vos besoins.
voilà ...
Voici comment fonctionne le message d'état après avoir créé un nouveau nœud ou mettre à jour un nœud existant (de type article):
La valeur de la variable e-mail_list est la suivante: startoflist-user2 @ exemple.com-user4 @ example.com-endoflist.