Saya memiliki situasi di mana saya ingin dapat membuat node dan referensi node pada saat yang sama. Apakah ada solusi untuk ini yang bekerja dengan baik untuk ini?
Untuk memperjelas apa yang saya bicarakan, pertimbangkan situasi berikut ( sangat disederhanakan demi penjelasan):
Ada kelas tipe konten yang memiliki bidang referensi simpul, Siswa . Saya ingin agar pengguna dapat membuat simpul Kelas dan simpul Siswa pada saat yang sama. Saya juga ingin mereka dapat menggunakan referensi simpul normal otomatis untuk memilih seorang Siswa yang kebetulan sudah ada.
Idealnya, saya ingin semua ini bekerja dari satu halaman, dan juga bekerja dalam batas-batas sistem izin Drupal sehingga saya dapat memiliki berbagai peran dan berbagai izin.
Ya, saya tahu bahwa dalam hal ini Siswa akan lebih baik dilayani sebagai pengguna (daripada simpul), tetapi Kelas dan Siswa hanya untuk menggambarkan situasi. Skenario sebenarnya benar-benar membutuhkan referensi simpul.
Ada pertanyaan yang mirip dengan ini, Membuat node yang direferensikan bersama-sama dengan node induk , tetapi saya secara khusus tertarik pada solusi Drupal 7 saja.
EDIT:
Tidak hanya mencari modul yang ada, tetapi juga memulai kode kustom.
Jawaban:
Saya menggunakan dialog Referensi , yang menempatkan "+" kecil pada bidang referensi yang ada yang memungkinkan pengguna untuk membuat siswa baru langsung dari formulir edit simpul kelas .
sumber
Untuk beberapa situs berbeda sekarang, saya telah melakukan ini menggunakan modal ctools, dan inilah garis besar dasar bagaimana saya mengimplementasikannya (sangat sederhana):
Buat panggilan balik halaman khusus di hook_menu () modul Anda yang menampilkan bentuk simpul dasar untuk simpul yang ingin Anda rujuk (untuk simpul 'pelajar', cukup isi bidang nama dan mungkin bidang tahun kelulusan). Pada formulir itu, di dalam panggilan balik Anda, simpan simpul menggunakan node_save () , dan simpan ID simpul (yang seharusnya berada di $ node-> nid setelah Anda meneruskan objek simpul baru ke node_save ()) di formulir itu
$form_state['storage']['student_id']
.Ubah bentuk master / Class node menggunakan hook_form_alter () . Anda perlu melakukan beberapa hal di sini:
Pertama, Anda perlu menambahkan javascript dan fungsi modal ctools agar ctool tahu apa yang harus dilakukan dengan tautan khusus Anda:
Kedua, Anda perlu menambahkan tautan ke halaman panggilan balik yang Anda buat pada langkah 1 di menu kait, dan dengan tautan itu, tambahkan kelas 'ctools-use-modal'. Jadi, misalnya:
Berikut ini contoh panggilan balik:
Di
mymodule_create_student_form($form, $form_state)
, buat formulir Anda seperti biasanya, dan kemudian dalam fungsimymodule_create_student_form_submit(form, &$form_state)
(kirim), setel nilai NID simpul siswa yang baru dibuat di$form_state['storage']['student_id']
. Ini adalah bagaimana Anda akan mendapatkan ctools / AJAX untuk mengembalikan nid baru ke bentuk Kelas asli Anda.Dalam situasi saya, saya menggunakan modal untuk meludah kembali beberapa markup ke halaman asli, jadi saya melewati markup ke dalam placeholder div menggunakan
ajax_command_append()
, kemudian saya punya beberapa jQuery di halaman asli memonitor div placeholder, dan ketika menemukan konten di itu, itu akan memindahkan HTML ke tempat yang tepat di tempat lain pada bentuk simpul. Dalam kasus Anda, Anda harus mengisi bidang referensi simpul tunggal atau multi-nilai, yang mungkin sedikit lebih kompleks. Saya belum perlu melakukan itu ... jadi saya tidak punya saran lagi untuk ditawarkan untuk bagian dari persamaan.sumber
Opsi mungkin untuk menambahkan dukungan simpul ke modul Formulir Entitas Inline .
EDIT: Formulir Entitas Inline memiliki dukungan simpul saat ini.
sumber
Modul berikut dapat digunakan di Drupal 7:
Noderefcreate hanya membuat simpul baru jika tidak ada dengan menggunakan wisaya autocomplete. Nodeconnect dan entitasconnect menyediakan tombol add / edit pada referensi node, jika wizard autocomplete digunakan. Nodeconnect hanya menyediakannya untuk referensi simpul sedangkan entitasconnect menyediakannya untuk referensi simpul, referensi entitas, referensi istilah dan referensi pengguna.
Inline_entity_form menyediakan dua widget tambahan untuk referensi entitas (hanya).
sumber
Jika ini benar-benar mirip dengan skenario Sekolah dan Siswa Anda dapat bergabung dengan beberapa Kelas yang akan saya gunakan:
Ini juga akan memerlukan menggunakan Token , memfilter tampilan tergantung pada Kelas nid dan menyiapkan nilai default untuk bidang referensi simpul Kehadiran sebagai Kelas nid saat ini.
Akhirnya Anda bisa memetakan jenis konten Siswa Anda ke Pengguna dengan referensi pengguna.
sumber