Saya memiliki tipe konten yang ada dengan sejumlah node. Saya baru saja menambahkan bidang boolean baru dengan nilai default "off."
Namun, hingga saya menyimpan kembali setiap node nilai default tidak diatur, sehingga tampilan yang seharusnya hanya menunjukkan node-node di mana bidang baru menggunakan nilai default saat ini kosong.
Bagaimana saya bisa memperbarui node yang ada, dibuat sebelum bidang telah ditambahkan, untuk mengatur bidang itu ke nilai default?
Jawaban:
Sayangnya, tidak ada cara yang sangat sederhana untuk melakukan ini (selain VBO / aturan), tapi inilah kode yang saya gunakan dalam fungsi pembaruan di file modul kustom saya menginstal file ketika saya perlu mempopulasikan nilai bidang untuk jenis simpul tertentu setelah menambahkan bidang baru ( dalam hal ini, 'halaman' node):
Metode manual lain yang disebutkan dalam jawaban ini menggunakan EntityFieldQuery dan memuat / menyimpan setiap node. Lebih banyak Drupal-y, tetapi jauh lebih sedikit performan ... (membutuhkan muatan simpul penuh dan menghemat operasi untuk setiap simpul!).
sumber
entity_get_controller('node')->resetCache($nids);
- jika tidak, berikutnyanode_load()
dapat memuat data basi dari cache, dan objek mana punnode_save()
yang akan menulis data basi itu kembali ke database.Taruhan terbaik adalah langsung di MySQl. Tabel akan terlihat seperti:
Jika Anda melihat mereka itu cukup mudah - apakah Anda perlu saya untuk mulai dengan apa yang akan terlihat seperti query atau apakah Anda baik-baik saja dari sini?
sumber
Coba saja logika di bawah ini. jauh lebih cepat dan dengan melewati semua implementasi hook juga. lebih detail . Anda dapat menulis kueri db_select langsung sederhana untuk mendapatkan semua nid's dan loop dengan kode sampel ini.
sumber
menggunakan sql, mengingat bahwa node dengan nilai field tidak diset adalah
field_data_field_pr_choix_du_document menjadi tabel yang sesuai dengan bidang saya dan berisi satu nilai par nilai entri yang ditetapkan dengan entitas id yang merujuk node
saya menggunakan SQL insert ... select syntax
https://dev.mysql.com/doc/refman/5.5/id/insert-select.html
sumber
Instal dan aktifkan modul Operasi Massal Views dan buat tampilan dengan tampilan halaman.
Tambah => Operasi massal: Bidang Konten (Konten) yang terlihat.
Lihat
Pilih Bidang yang ingin Anda tetapkan nilai default.
Simpan tampilan, dan buka halaman yang dibuatnya. Jika Anda memiliki lebih dari satu halaman hasil, Anda dapat memilih untuk memilih semua item pada halaman saat ini, semua item pada semua halaman, atau Anda dapat secara manual menandai kotak yang sesuai dengan masing-masing node. Setidaknya satu kotak centang harus dicentang untuk melanjutkan.
Sekarang Anda menetapkan nilai default dan menyimpannya.
sumber
Saya menemukan cara mudah untuk memperbarui bidang dalam tipe konten dengan modul ini: Field Defaults
Lihat tangkapan layar. Anda dapat memperbarui konten yang ada dengan nilai default atau mempertahankan nilai yang ada.
Saya sudah mengujinya pada D7 dan berfungsi.
sumber