Je souhaite modifier la valeur d'un champ pour un nœud. J'ai utilisé le code suivant:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
Le problème est le $node->language
retour es
pendant print_r($node)
qu'il est und
. Pourquoi $node->language
est différent de ce qui est dans le tableau $ node et comment puis-je l'obtenir?
Essayez la
field_attach_update()
fonction.Il mettra à jour la valeur du champ et il fonctionne mieux que
node_save
.la source
la source
Si vous souhaitez mettre à jour uniquement la valeur du champ (sans mettre à jour les métadonnées du nœud sur l'heure mise à jour, les révisions), utilisez la fonction
field_attach_update()
.Exemple:
Parfois, vous devrez également réinitialiser le cache statique du nœud avec
resetCache(array($nid))
:Source: enregistrement des champs du nœud sans enregistrer le nœud lui-même
la source
Je viens de l'implémenter et j'ai constaté que ce code fonctionnait pour moi.
Notez que lors de la mise à jour de field_fieldname, j'ai trouvé que l'utilisation de ceci à la ligne 4
n'a pas fonctionné.
la source