Я хочу изменить значение поля для узла. Я использовал следующий код:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
Проблема в том, что $node->language
возвращается es
в print_r($node)
это und
. Почему $node->language
он отличается от массива $ node и как его получить?
Попробуй
field_attach_update()
функцию.Это обновит значение поля и будет работать лучше, чем
node_save
.источник
источник
Если вы хотите обновить только значение поля (без обновления метаданных узла об обновленном времени, ревизиях), используйте функцию
field_attach_update()
.Пример:
Иногда дополнительно вам может понадобиться сбросить статический кеш узла
resetCache(array($nid))
:Источник: сохранение полей узла без сохранения самого узла
источник
Я только что реализовал это и обнаружил, что этот код работает для меня.
Обратите внимание, что при обновлении field_fieldname я обнаружил, что с помощью этого в строке 4
не работал.
источник