web-dev-qa-db-ja.com

2つの機能モジュール間のこの競合を解決するにはどうすればよいですか?

さまざまなメニュー、ビュー、メニューなどを備えた2つのコンテンツタイプがあり、2つのFeatureカスタムモジュールとしてパッケージ化しています。 2つのコンテンツタイプは両方とも分類法を使用し、データベース内の同じフィールドのいくつかを使用します。これらの機能モジュールを新しいサイトにロードすると、これらの共通のフィールドと語彙で互いに競合が発生し、競合を解決するための最良の方法が何であるかわかりません。

機能モジュールは連携して動作することを目的としていますが、両方が同じサイトに存在する必要はありません。それぞれが他の異なる機能でも動作する場合があります。どちらも、ビューのフィルタリングなどに分類法とフィールドを使用しているため、それぞれのフィーチャー定義にこれらのコンポーネントが含まれているのは理にかなっています。したほうがいい:

  • モジュールの1つからフィールドと分類法を削除し、他への依存関係を宣言しますか?これは、お互いがなくても機能するため、望ましくありません。
  • 機能の2つのバージョンを作成します。1つは独立して使用するため、もう1つは共同作業のためです。
  • フィールドと分類法を別の機能として定義しますか?
  • 競合を無視してモジュールを有効にしますか? (私が行う場合、両方がフィールドを共有しますか?)
  • 別の解決策?

私はまだこれをテストしていませんが、2つの機能モジュールの1つを無効にするかアンインストールすると、他のモジュールで必要な場合でも、データベースからフィールドが削除されますか?

16
Ashlar

他の2つの独立したフィーチャーで使用されるコンポーネント(*)を定義する3番目のフィーチャーを作成します。

他の2つの機能では、3番目の機能によって要求されているコンポーネントを削除し、代わりに3番目の機能を依存関係としてリストします。

echo 'digraph G {label="Dependency Graph"; structural [label="Structual Feature\n(Fields, Taxonomy)"]; "Feature A\n(Content Type)" -> structural; "Feature B\n(Content Type)" -> structural; };' | dot -Tpng > dependency.png

(*) Drupal 7の機能)では、この機能はまだコミットされていません— http://drupal.org/node/1064472 を参照して、提案されたレビューを確認してくださいそこにコード。 —このパッチは、機能7.x-2.xにコミットされています。

16
smokris

このd.oのソリューションはうまく機能しました。さまざまなサイトにエクスポートする方が、別の無関係なサイトに孤立したフィールドを作成する3番目の機能を作成するよりもはるかに堅牢です。

http://drupal.org/node/169829

1
frazras

私にとってうまくいった解決策の1つは、2つの機能を1つの大きな機能に接続することでした。これにより、競合が解決されました。

0
sokratis