Bagaimana cara menerapkan referensi simpul dua arah?

20

Modul referensi-simpul (komponen CCK) menyediakan cara hebat untuk membuat referensi satu simpul dari yang lain. Apa cara terbaik untuk mengekspos hubungan dua arah antara keduanya? Contoh di bawah ini:

Misalnya, dalam sistem pelacakan tiket dengan dua tiket (node) A & B, Anda bisa membuat referensi simpul dari tiket A -> B dan menandai B sebagai anak. Saat melihat tiket A, akan sepele untuk menampilkan informasi ini. Namun, saya juga ingin menampilkan hubungan ini ketika melihat tiket B dan menunjukkan tiket A sebagai induknya.

Persyaratan yang sama ini juga berlaku dalam situasi non-hierarkis (tiket C & D) dengan referensi dari C -> D, hubungannya harus diekspos pada tiket D serta pada C.

markdorison
sumber

Jawaban:

4

Untuk Drupal 6, opsi terbaik mungkin adalah modul NodeReferrer . Untuk Drupal 7, Relation cocok dengan tagihan tetapi belum siap.

Pierre Buyle
sumber
Saya selalu menggunakan modul NodeReferrer, untuk apa nilainya
electblake
1
Modul Relation sekarang siap, sejak Juli '12
ted.strauss
Ya, Relation tampaknya menjadi opsi yang sangat kuat. Kalau tidak, CER juga merupakan pilihan ringan yang bagus.
shivams
4

Jika Anda menggunakan Drupal 7 / Views, Anda bisa membangun hubungan 'terbalik' untuk mendapatkan daftar node yang merujuk ke node yang diberikan (atau, mungkin, pengguna yang merujuk ke node yang diberikan). Lihat tambalan dalam masalah ini: http://drupal.org/node/1043260

Menurut pendapat saya, kecuali Anda memerlukan hubungan terbalik eksplisit yang dibuat sebelumnya yang disimpan dalam database (ini kadang-kadang bisa membantu karena alasan kinerja), menggunakan salah satu solusi lain adalah berlebihan. Anda selalu dapat mencari hubungan di kueri SQL Anda sendiri jika Anda perlu ...

[Sunting: Sejak semula menulis posting ini, tambalan dalam masalah di atas telah dikomit ke Referensi untuk D7, dan harus menjadi cara yang disukai untuk mereferensi-ulang (berfungsi dengan baik ketika hanya membutuhkan daftar node atau pengguna yang mereferensikan node atau pengguna tertentu) .]

[Sunting 2: Jika Anda menggunakan Referensi Entitas, sepertinya solusi yang disukai adalah menggunakan Referensi Entitas Terkait , dan ada juga Sinkronisasi Bidang Entitas Referensi yang kurang banyak digunakan .]

geerlingguy
sumber
Sepertinya Referensi akan menjadi usang demi Referensi Entitas. Tidak yakin di mana meninggalkan jawaban ini.
Jay
1
Referensi masih akan tetap ada sampai D7 adalah memori yang jauh ... tetapi jika Anda menggunakan ER, Anda dapat menggunakan Referensi Entitas Terkait untuk melakukan hal yang sama seperti yang disediakan Referensi di luar kotak.
geerlingguy
3

Dalam Drupal 7 (yang Anda tunjukkan) tampaknya solusinya adalah dengan menggunakan Modul Referensi Entitas bersama dengan modul Sinkronisasi Bidang Referensi (Entitas) yang menambahkan fungsionalitas yang diperlukan untuk menjaga hubungan tetap sinkron .

Hal yang sama dapat dicapai dengan Modul Referensi dengan modul cnr - solusi ini berfungsi (saya menggunakannya di satu situs Drupal 7 saat ini), tetapi menjadi usang / usang karena mendukung solusi pertama yang saya berikan.

Semua solusi lain yang disebutkan dalam jawaban di atas hanya relevan untuk Drupal 6 (kecuali untuk Relation yang berpotensi menjadi modul hebat, tetapi saat ini, tidak benar-benar melakukan banyak hal dan memiliki banyak masalah).

Moshe Eshel
sumber
Memilih jawaban ini karena ini baru dan Moshe adalah anggota senior komunitas Drupal. Dalam jawaban yang diterima, satu-satunya modul D7 yang stabil adalah CNR, dan itu disusutkan untuk CER (yang belum memiliki rilis stabil hingga saat ini).
aendrew
1
Relation belum memiliki banyak masalah bahkan di bulan Maret. Dan Moshe Eshel drupal.org/user/168876 ! = Moshe Weitzman drupal.org/user/23 (lihat uid itu ...) btw.
@ chx Saya sendiri terkejut melihat saya tampil sebagai anggota senior ... Saya mencoba untuk menjadi kontributor yang lebih baik tetapi saya tidak berpikir saya akan pernah naik ke level Moshe Asli. Mengenai modul Relation, saya mendasarkannya pada umpan balik dari seseorang yang tahu (saya tidak akan menyebutkan nama) - Saya belum memiliki kesempatan untuk benar-benar mengujinya pada saat itu, dan mengandalkan pendapat itu. Saat ini saya sedang mengerjakan proyek D7 - Saya pikir saya membutuhkannya, jadi saya akan memberikan pendapat saya yang diperbarui di sini setelah selesai.
Moshe Eshel
2

Sebagai alternatif, jika Anda bekerja pada implementasi kustom dan ingin cara referensi balik yang lurus ke depan, Anda dapat terhubung nodeapi, mendengarkan saveoperasi dan daripada memutakhirkan node yang direferensikan secara terprogram.

enikola
sumber
0

Anda dapat menggunakan modul Ketergantungan Konten .

Ini memberi Anda membalikkan referensi melalui tab dan mendukung modul berikut: referensi simpul / referensi entitas .

drupal
sumber
1
Tidak begitu yakin bagaimana ini dapat digunakan untuk membuat referensi bersama?
mpdonadio