Quiero cambiar el valor de un campo para un nodo. Utilicé el siguiente código:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
El problema es $node->language
devuelve es
mientras está en print_r($node)
él und
. ¿Por qué $node->language
es diferente de lo que hay en la matriz $ node y cómo puedo obtenerlo?
Prueba la
field_attach_update()
función.Actualizará el valor del campo y funcionará mejor que
node_save
.fuente
fuente
Si desea actualizar solo el valor del campo (sin actualizar los metadatos del nodo sobre el tiempo actualizado, las revisiones) use la función
field_attach_update()
.Ejemplo:
A veces, adicionalmente, es posible que deba restablecer el caché estático del nodo con
resetCache(array($nid))
:Fuente: guardar campos del nodo sin guardar el nodo en sí
fuente
Acabo de implementar esto y descubrí que este código funcionó para mí.
Tenga en cuenta que al actualizar field_fieldname encontré que al usar esto en la línea 4
no funcionó.
fuente