Quero alterar o valor de um campo para um nó. Usei o seguinte código:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
O problema é o $node->language
retorno es
enquanto print_r($node)
está nele und
. Por que $node->language
é diferente do que está na matriz $ node e como posso obtê-lo?
Tente
field_attach_update()
função.Ele atualizará o valor do campo e terá um desempenho melhor que
node_save
.fonte
fonte
Se você quiser atualizar apenas o valor do campo (sem atualizar os metadados nó sobre o tempo atualizado, revisões) use a função
field_attach_update()
.Exemplo:
Às vezes, adicionalmente, você pode precisar redefinir o cache estático do nó com
resetCache(array($nid))
:Origem: salvando os campos do nó sem salvar o próprio nó
fonte
Acabei de implementar isso e descobri que esse código funcionava para mim.
Observe que ao atualizar field_fieldname, descobri que usando isso na linha 4
não funcionou.
fonte