Obtenir par programme des nœuds par titre dans Drupal 7
J'ai un module de programme ajoute un tas de nœuds à mon site Drupal 7 site. Pour éviter les doublons, je veux vérifier si le titre de mon nouveau noeud créé n'existe pas déjà dans le système. Il n'y aura jamais un cas où deux nœuds ont le même nom. J'ai essayé d'utiliser node_load()
mais qui ne semble pas me permettre de charger nœuds basé sur un titre.
Je suis perplexe sur la façon de procéder, donc je me demandais si quelqu'un ici pouvait m'aider.
Pour résumer: Comment puis-je vérifier si un nœud avec un titre qui existe déjà?
Grâce.
source d'informationauteur Eruonen
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir tous le nœud de titres avec une requête SQL comme:
Et si il n'y a pas de résultats retourné alors vous pouvez supposer que vous êtes bon pour aller.
Ou vous pouvez également modifier le nœud de la table pour faire le champ titre UNIQUE et gérer l'erreur renvoyée par MySQL. Ne sais pas vraiment si c'est faisable c'est bien.
Nœud sont des entités, de sorte que vous pouvez utiliser le EntityFieldQuery classe de requête pour eux. De cette façon, vous n'avez pas à déranger la façon dont l'information est stockée dans la base de données. Et, vous devez ajouter des filtres basés sur les valeurs de champ, code de l'évolution va être facile.
Voici ce D7 approche utilisant l'API et de la fonction count.
Source: Les entrailles de DrupalWebTestCase::DrupalGetNodeByTitle
Juste un match amical headsup. Pour plus de sécurité, vous devriez TOUJOURS utilisez des accolades autour des tables dans drupal sql des requêtes sur! Il empêche les attaques par injection SQL.
de sorte qu'il devrait être: (avis {noeud} )
La bonne façon est d'ajouter un index UNIQUE à la base de données.
Ensuite, vous serez sûr que tous les titres sont uniques.
Est facile: