Chcę zmienić wartość pola dla węzła. Użyłem następującego kodu:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
Problemem jest $node->language
powrót, es
gdy się w print_r($node)
nim znajduje und
. Dlaczego $node->language
różni się od tego, co jest w tablicy $ node i jak mogę go zdobyć?
Wypróbuj
field_attach_update()
funkcję.Zaktualizuje wartość pola i działa lepiej niż
node_save
.źródło
źródło
Jeśli chcesz zaktualizować tylko wartość pola (bez aktualizacji metadanych węzła o zaktualizowanym czasie, wersjach) użyj funkcji
field_attach_update()
.Przykład:
Czasami może być konieczne zresetowanie statycznej pamięci podręcznej węzła za pomocą
resetCache(array($nid))
:Źródło: Zapisywanie pól węzła bez zapisywania samego węzła
źródło
Właśnie to zaimplementowałem i stwierdziłem, że ten kod działa dla mnie.
Zauważ, że podczas aktualizacji nazwa_pola stwierdziłem, że używam tego w wierszu 4
nie działał.
źródło