Ich möchte den Wert eines Feldes für einen Knoten ändern. Ich habe den folgenden Code verwendet:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
Das Problem ist die $node->language
Rückkehr, es
während print_r($node)
es ist und
. Warum $node->language
ist anders als in $ node array und wie kann ich es bekommen?
field_attach_update()
Funktion ausprobieren .Der Feldwert wird aktualisiert und die Leistung ist besser als
node_save
.quelle
quelle
Wenn Sie nur den Feldwert aktualisieren möchten (ohne die Metadaten des Knotens zur aktualisierten Zeit und zu Revisionen zu aktualisieren), verwenden Sie die Funktion
field_attach_update()
.Beispiel:
Manchmal müssen Sie zusätzlich möglicherweise den statischen Cache des Knotens zurücksetzen mit
resetCache(array($nid))
:Quelle: Speichern der Felder des Knotens, ohne den Knoten selbst zu speichern
quelle
Ich habe dies gerade implementiert und festgestellt, dass dieser Code für mich funktioniert.
Beachten Sie, dass ich bei der Aktualisierung von field_fieldname festgestellt habe, dass dies in Zeile 4 verwendet wird
funktioniert nicht.
quelle