İki Özellik modülü arasındaki bu çakışmayı nasıl çözerim?


16

İki Feature özel modülü olarak paketlediğim çeşitli menüler, görünümler, menüler vb. İçeren iki içerik türüm var. İki içerik türü hem bir sınıflandırma kullanır hem de veritabanındaki aynı alanların birkaçını kullanır. Bu Özellik modüllerini yeni bir siteye yüklediğimde, bu ortak alanlar ve kelime dağarcığı üzerinde birbirleriyle çatışmalar gösteriyorlar ve çatışmayı çözmenin en iyi yolunun ne olacağından emin değilim.

Feature modüllerinin birlikte çalışması amaçlanmış olsa da, her ikisinin de aynı sitede bulunması gerekmez. Her biri diğer farklı özelliklerle de çalışabilir. Her ikisi de sınıflandırma ve alanları görünüm filtreleme vb. İçin kullanır, böylece her birinin bu bileşenleri Özellik tanımlarına dahil etmeleri mantıklıdır. Yapmalımıyım:

  • Modüllerden birindeki alanları ve sınıflandırmayı kaldırın ve diğerine bağımlılık bildirilsin mi? Her biri diğeri olmadan çalışabileceğinden bu arzu edilmez.
  • Özelliklerin biri bağımsız kullanım ve diğeri işbirliği için olmak üzere iki sürümü oluşturun.
  • Alanlar ve sınıflandırma ayrı bir özellik olarak tanımlansın mı?
  • Çakışmayı yok say ve modülleri etkinleştir? (Eğer yaparsam, ikisi de alanı paylaşacak mı?)
  • Başka bir çözüm?

Bunu henüz test etmedim, ancak iki Özellik modülünden birini devre dışı bırakmak veya kaldırmak, diğer modül gerektirse bile veritabanından alanları kaldıracak mı?

Yanıtlar:


16

Diğer iki bağımsız Unsur tarafından kullanılan bileşenleri (*) tanımlayan üçüncü bir Unsur oluşturun.

Diğer iki Unsurda, şimdi üçüncü Unsur tarafından talep edilen bileşenleri kaldırın ve bunun yerine üçüncü Unsuru bağımlılık olarak listeleyin.

echo 'digraph G {label = "Bağımlılık Grafiği";  yapısal [label = "Yapısal Özellik \ n (Alanlar, Sınıflandırma)"];  "Özellik A \ n (İçerik Türü)" -> yapısal;  "Özellik B \ n (İçerik Türü)" -> yapısal;  };'  |  dot -Tpng> bağımlılık.png

(*) Ancak, Drupal 7 için Özellikler'de bu işlev henüz yerine getirilmemiştir - bkz. Http://drupal.org/node/1064472 ve önerilen kodun burada gözden geçirilmesine yardımcı olun. - Bu düzeltme eki 7.x-2.x özelliklerine bağlanmıştır.


1
Evet, bu kesinlikle işe yarar. Özellikler kullanıcıları bunu yapmaya zorlasa da, bu yetersiz bir çözümdür. Özellikler, bir Özelliğin paketlenmesini sağlar ve ardından bunu tamamen yapmamıza izin vermez. Ayrı Özellik modülleri arasındaki paylaşılan alanlar sorun olmamalıdır. Teşekkürler
Ashlar

3
@Ashlar: Peki ya ilk iki Unsurun her birindeki Alanların tanımları farklıysa - çelişen tanımlar nasıl çözülür? Ayrıca, genel olarak, aynı bilginin birden fazla yetkili tanımına sahip olmak sorunludur . Alanların paylaşılması bir sorun değildir, ancak bu Alanların ne olduğunu belirten birden fazla yetkiliye sahip olmak bir sorundur.
smokris

2
Hayır, yapısal Özellik'te alanı bir kez tanımlamanız (ve böylece alanın olası değerlerini bir kez tanımlamanız ) ve bu özellik özelliklerinin her birinde bu alana başvurmanız gerektiğini söylüyorum. (Ack ... Az önce önerdiğim şeyin drupal.org/node/1064472 üzerindeki yamayı uyguladığını fark ettim, bahsetmeyi unuttum. Düzenlenmiş cevap.)
smokris

1
Teşekkürler smokris. Bağlantı çok yardımcı oldu. Alanın / vakanın nasıl ele alındığına dair yanlış bir varsayım vardı. Cevabınız şimdi bana mantıklı geliyor ve yamanın bağlantısı beni saç
çekmekten

1
D7 Özellikleri için belirtilen yama şimdi dev drupal.org/node/1064472#comment-7235792
danbohea

1

Bu çözüm benim için çok işe yaradı, başka bir ilgisiz sitede yetim alanları oluşturacak üçüncü bir özellik oluşturmaktan çok çeşitli sitelere ihraç edilmek çok daha sağlam.

http://drupal.org/node/1698290


0

Benim için çalışan bir çözüm, iki Özelliği daha büyük bir özelliğe bağlamaktı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.