6
votes

Comment créer une règle drupale pour vérifier (sur cron) un champ de date et s'il est passé sur le champ Set "Statut" sur "Terminé"?

J'essaie de créer une règle personnalisée (à l'aide de Règles module) afin que Chaque fois que le cron fonctionne, cette règle vérifie un champ de date dans un type de contenu personnalisé que j'ai créé. Si cette date a passé, je souhaite définir un widget de liste de actif sur terminé .

C'est la distance que je reçois lorsque j'essaie de créer cette règle:

  1. SET réacteur sur l'événement à Les tâches de maintenance cron sont effectuées
  2. Ajouter une condition > SET Sélectionnez la condition pour ajouter à Comparaison de données > Continuer

    Voici le problème: Sélection de données n'a que site et aucun accès aux données de champ.

    Des idées où je vais mal ici?


0 commentaires

3 Réponses :


0
votes

Vous devez d'abord créer un composant de règles:

  1. Allez à Rules> Composants (admin / config / Filfflow / Rules / Composants)
  2. Créez ensuite un nouveau composant et sélectionnez 'RÈGLE' de SELECT LISTE
  3. Définissez un nom pour ce composant et dans le tableau ci-dessous Sélectionnez:
    1. Type de données: Jeton de texte
    2. Étiquette: un nom que vous souhaitez
    3. Nom de la machine: Utilisez le même nom de l'étiquette, mais défini ici uniquement des minuscules et un soulignement
    4. Utilisation: paramètre
    5. Dans le composant Ajoutez la condition 'Comparaison des données' et sélectionnez NODE: TYPE
    6. Ajoutez d'autres conditions que vous souhaitez
    7. Définissez les actions que vous souhaitez et enregistrez
    8. Allez maintenant à règles (admin / configuration / flux de travail / règles) et créez la règle avec action sur la maintenance cron (comme vous l'avez déjà fait)
    9. Sauter la section Conditions et dans les actions:
      1. Nouvelle action: Ajoutez une variable
      2. Valeur: texte
      3. Ensuite, écrivez la valeur de cette variable, comme le nom de la machine du type de contenu que vous souhaitez sélectionner (si vous souhaitez que vous puissiez modifier le nom et le nom de cette machine de cette variable dans la section ci-dessous)
      4. ajoutez maintenant une autre action 'Fetch Entity de la propriété'
        1. Type d'entité Valeur: nœud
        2. Valeur de la propriété: type
        3. Sélecteur de données: la variable créée au point 8
        4. MAINTENANT Ajoutez une boucle dans la liste des paramètres Utilisez la variable fournie par 'Fetch Entity par Propriété'
        5. Ajoutez une action dans la boucle (cliquez sur le lien vers la droite de la ligne de boucle) et sélectionnez le composant créé dans le point 2 et passez la variable fournie par la boucle

          Je déclare: Je ne sais pas si cela fonctionne, mais au moins cela devrait vous diriger vers le chemin droit

          Désolé pour mon anglais, j'espère que vous comprenez tout :)


0 commentaires

0
votes

Le problème de la condition de règles "Les tâches de maintenance cron sont effectuées" est qu'à ce point, il n'y a pas d'accès à l'objet de nœud afin que des chèques / manipulations sur le nœud ne soient pas possibles. En tant que solution, au lieu de Event = Cron Maintenance Tâches est effectuée , utilisez Event = Node: le contenu est visualisé . Vous pouvez le laisser libre pour tout type de contenu afin que lorsque quelqu'un visite le site Web et ouvre au moins une page, une action sera déclenchée.


0 commentaires

0
votes

Oui, vous devriez pouvoir obtenir cela pour travailler à l'aide du Règles Module pour mettre en œuvre quoi Vous cherchez, mais je vous recommande de combiner aussi que avec le Vues Règles Module. Quelques détails sur ce module (à partir de sa page de projet):

offre des points de vue directement comme des actions de règles et des boucles pour utiliser de manière transparente les données de résultat de la vue.

La citation précédente peut sembler un peu cryptique (cela peut vous faire penser comme «alors quoi, comment cela peut-il m'aider?»). Parmi les autres détails sur la façon d'aller de l'avant à l'aide de ces modules:

  1. Créez une vue (en utilisant Vues ) afin que vous ayez 1 résultat des vues (rangée) Avec tous les nœuds que vous souhaitez être traités (liés à votre type de contenu personnalisé et si un filtre possible en quelque sorte à l'aide de votre champ de date). ATTENDU QUE cette vue a des champs (colonnes) pour tout ce qui est nécessaire dans les étapes suivantes, par exemple l'ID de nœud, le champ Date et éventuellement d'autres champs. Vous aurez besoin de ces champs d'affichage ultérieurement sous forme de valeurs à traiter par votre règle, "pour définir un widget de liste de actif sur terminé *" (comme dans votre question) . Important: Utilisez un type d'affichage des vues de "règles".
  2. Supprimer cette "condition ajoute" (dans la règle personnalisée que vous avez démarré) et utilisez plutôt le Les règles Module à itérer sur chacune de ces vues entraînent une action de règles, en utilisant la technique de règles appelée "boucle de règles".
  3. Pour chaque étape d'itération dans votre boucle de règles, effectuez une action de règles sur " faire votre chose " (= Pour définir un widget de liste de actif sur sur terminé ). À ce moment-là, vous aurez toutes les données de chaque colonne de vos résultats de vues disponibles comme des paramètres de règles. Donc, à ce stade, c'est un morceau de gâteau d'adapter la valeur de ce widget de liste pour le nœud que vous traitez dans cette boucle.
  4. éventuellement, vous pouvez également ajouter toutes les conditions de règles supplémentaires, également à votre guise. Typiquement, les choses que vous ne pouvez pas, ni ne sont pas encore exprimées en tant que filtre de vues. Toutefois, si vous avez le choix entre utiliser un filtre de vues et une condition de règles supplémentaire, je vous recommande d'aller pour le filtre de vues, car cela réduira le nombre de vos itérations dans votre boucle de règles (performances!).

    facile, non?


0 commentaires