Bagaimana cara menyelesaikan konflik ini antara dua modul Fitur?


16

Saya memiliki dua jenis konten dengan berbagai menu, tampilan, menu, dll. Yang telah saya kemas sebagai dua modul khusus Fitur. Kedua jenis konten keduanya menggunakan taksonomi dan menggunakan beberapa bidang yang sama dalam database. Ketika saya memuat modul Fitur ini di situs baru, mereka menunjukkan konflik satu sama lain dalam bidang umum dan kosa kata ini dan saya tidak yakin apa yang akan menjadi cara terbaik untuk menyelesaikan konflik.

Meskipun modul Fitur dimaksudkan untuk bekerja bersama, mereka tidak perlu keduanya hadir di situs yang sama. Masing-masing juga dapat bekerja dengan fitur berbeda lainnya. Keduanya menggunakan taksonomi dan bidang untuk memfilter tampilan dll, sehingga masuk akal jika masing-masing menyertakan komponen ini dalam definisi Fitur. Haruskah saya:

  • Hapus bidang dan taksonomi dari salah satu modul, dan nyatakan ketergantungan ke yang lain? Ini tidak diinginkan karena masing-masing dapat bekerja tanpa yang lain.
  • Buat dua versi fitur, satu untuk penggunaan independen, dan satu untuk berkolaborasi.
  • Tentukan bidang dan taksonomi sebagai fitur terpisah?
  • Abaikan konflik dan aktifkan modul? (Jika saya melakukannya, akankah mereka berdua berbagi bidang?)
  • Solusi lain?

Saya belum menguji ini, tetapi apakah akan menonaktifkan atau menghapus salah satu dari dua modul Fitur menghapus bidang dari database meskipun modul lain memerlukannya?

Jawaban:


16

Buat Fitur ketiga yang mendefinisikan komponen (*) yang digunakan oleh dua Fitur independen lainnya.

Di dua Fitur lainnya, hapus komponen yang sekarang diklaim oleh Fitur ketiga, dan sebagai gantinya, daftarkan Fitur ketiga sebagai ketergantungan.

echo 'digraph G {label = "Grafik Ketergantungan";  struktural [label = "Fitur Struktural \ n (Bidang, Taksonomi)"];  "Fitur A \ n (Tipe Konten)" -> struktural;  "Fitur B \ n (Tipe Konten)" -> struktural;  }; '  |  dot -Tpng> dependency.png

(*) Dalam Fitur untuk Drupal 7, fungsi ini belum berkomitmen - lihat http://drupal.org/node/1064472 , dan bantu tinjau kode yang diusulkan di sana. - Patch ini telah dikomit ke Fitur 7.x-2.x.


1
Ya, itu pasti akan berhasil. Meskipun jika itulah yang memaksa Fitur untuk dilakukan pengguna, itu adalah solusi yang tidak berlaku. Fitur menyediakan kemampuan untuk mengemas Fitur, dan kemudian tidak membiarkan kami melakukannya sepenuhnya. Bidang yang dibagikan antara modul Fitur yang terpisah seharusnya tidak menjadi masalah. Terima kasih
Ashlar

3
@Ashlar: Tapi bagaimana jika definisi Fields di masing-masing dari dua Fitur pertama berbeda - bagaimana definisi yang saling bertentangan diselesaikan? Juga, secara umum, memiliki beberapa definisi otoritatif dari informasi yang sama bermasalah . Berbagi Fields bukan masalah, tetapi memiliki banyak otoritas yang menentukan apa Field itu adalah masalah.
smokris

2
Tidak, saya mengatakan bahwa Anda harus mendefinisikan bidang satu kali (dan dengan demikian menentukan nilai-nilai kemungkinan bidang itu sekali ) di Fitur struktural - dan referensi bidang itu di masing-masing Fitur tipe konten. (Ack ... Saya baru menyadari bahwa apa yang saya usulkan mengasumsikan tambalan di drupal.org/node/1064472 telah diterapkan, yang saya lupa sebutkan. Jawaban yang diedit.)
smokris

1
Terima kasih smokris. Tautan itu sangat membantu. Saya memiliki asumsi yang salah tentang bagaimana bidang / contoh ditangani. Jawaban Anda sekarang masuk akal bagi saya, dan tautan ke tambalan akan menyelamatkan saya dari mencabut rambut :)
Ashlar


1

Solusi ini bekerja sangat bagus untuk saya, jauh lebih kuat untuk diekspor ke berbagai situs daripada membuat fitur ketiga, yang akan membuat bidang yatim di situs lain yang tidak terkait.

http://drupal.org/node/1698290


0

Satu solusi yang berhasil bagi saya adalah melampirkan dua Fitur ke dalam satu fitur yang lebih besar. Ini menyelesaikan konflik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.