Comment dois-je obtenir la valeur contenue dans un champ particulier d'un Drupal 7 noeud personnalisé?
Quelle est la "bonne" façon d'obtenir la valeur stockée dans un domaine particulier au sein d'un Drupal node? J'ai créé un module personnalisé, avec un noeud personnalisé, avec une coutume URL champ. Les ouvrages suivants:
$result = db_query("SELECT nid FROM {node} WHERE title = :title AND type = :type", array(
':title' => $title,
':type' => 'custom',
))->fetchField();
$node = node_load($result);
$url = $node->url['und']['0']['value'];
...mais est-il une meilleure façon de faire, peut-être en utilisant le nouveau Champ de fonctions de l'API?
OriginalL'auteur Matt V. | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
node_load()
ensuite l'accès au domaine de la propriété est la bonne façon, bien que je le ferais un peu différemment pour éviter de coder en dur les paramètres régionaux:La méthode que vous utilisez pour obtenir le nid est particulièrement encombrants façon de le calculer; j'avais l'accent sur refactoring et l'utilisation
EntityFieldQuery
et entity_load() à la place:Vous voulez le faire, surtout depuis que le titre n'est pas une propriété unique et si le champ s'affiche sur les entités autres que les nœuds. Dans ce cas, il fallait retirer la
entityCondition()
.Je voudrais utiliser
EntityFieldQuery
et l'entité de l'API, en particulier compte tenu de champs peuvent apparaître sur d'autres choses que de nœuds. J'ai mis à jour ma réponse avec un possible moyen de refactoriser.OriginalL'auteur
Ne sais pas pourquoi EntityFieldQuery est en cours de discussion, mais ok. 🙂 Vous êtes réellement allez vouloir utiliser le field_get_items() fonction.
EntityFieldQuery
est en cours de discussion, parce que les conditions de paramètre pournode_load_multiple()
que vous utilisez dans votre code est obsolète en faveur deEntityFieldQuery
. Etfield_get_items()
est le chemin le plus long autour de faire exactement la même chose que pour accéder au domaine de la propriété sur le nœud.Il est vrai que le paramètre a été abandonné, mais il
node_load()
c'est encore de l'utiliser. Il sera probablement pas utilisé sur Drupal 8, mais je pense que c'est sûr à utiliser avec Drupal 7.OriginalL'auteur Dave Reid
propertyCondition('field_order_no', 'valeur', 'recherche', '=')
field_order_no est la limace de champ personnalisé & Clé de Recherche est la valeur à être mis en correspondance avec
OriginalL'auteur Muazzam Alam Nayyar