Saya ingin mengubah nilai bidang untuk sebuah simpul. Saya menggunakan kode berikut:
$node = node_load($nid); // $nid is the function's parameter
$node->field['field_myfield'][$node->language][0]['value'] = 1;
node_save($node);
Masalahnya adalah $node->language
kembali es
saat berada di print_r($node)
dalamnya und
. Mengapa $node->language
berbeda dari apa yang ada di array $ node dan bagaimana saya bisa mendapatkannya?
Coba
field_attach_update()
fungsinya.Ini akan memperbarui nilai bidang dan berkinerja lebih baik daripada
node_save
.sumber
sumber
Jika Anda ingin memperbarui hanya nilai bidang (tanpa memperbarui metadata simpul tentang waktu yang diperbarui, revisi) gunakan fungsi
field_attach_update()
.Contoh:
Kadang-kadang tambahan Anda mungkin perlu mengatur ulang cache statis node dengan
resetCache(array($nid))
:Sumber: Menyimpan bidang simpul tanpa menyimpan simpul itu sendiri
sumber
Saya baru saja mengimplementasikan ini dan menemukan bahwa kode ini bekerja untuk saya.
Perhatikan bahwa saya ketika memperbarui field_fieldname saya menemukan bahwa menggunakan ini di baris 4
tidak bekerja.
sumber