web-dev-qa-db-fra.com

Comment vérifier si l'utilisateur a créé un nœud d'un type de contenu dans des règles?

J'aimerais vérifier si un utilisateur a déjà écrit un nœud à partir d'un type de contenu avant de la créer un pour l'utilisateur dans les règles. Comment créer une condition pour cela? Merci!

2
Dee

Après avoir vu ces grandes réponses pour les règles, je pense que vous pouvez essayer de faire la même chose via le code. C'est beaucoup plus petit et extrêmement plus rapide que les règles!

/**
 * Implements hook_node_prepare()
 * @param type $node 
 */
function mymodule_node_prepare($node) {
  if ($node->type == "my_type") {
    if (!isset($node->nid)) {
      $existing_nid = db_query("SELECT nid FROM {node} WHERE (type = :type1) AND uid = :uid", array("type1" => "my_type, "uid" => $node->uid))->fetchField();
      if ($existing_nid != FALSE) {
        drupal_goto("node/$existing_nid/edit");
      }
    }
  }
}

Ce code vérifie si l'utilisateur a déjà créé un nœud, si oui, au lieu de lui permettre de créer une nouvelle, nous le redirigeons sur la forme d'édition du nœud existant.

Si vous souhaitez cette fonctionnalité sans règles ni code, vous pouvez essayer le module de profil. Il a cette fonctionnalité magique pour configurer tout type de contenu comme "profil". Et lorsqu'un type de contenu est configuré comme "profil", les utilisateurs ne sont pas autorisés à avoir plus d'un nœud de ce type particulier.

Merci!

2
Amrit Bera