Wie löse ich diesen Konflikt zwischen zwei Feature-Modulen?


16

Ich habe zwei Inhaltstypen mit verschiedenen Menüs, Ansichten, Menüs usw., die ich als zwei benutzerdefinierte Feature-Module verpackt habe. Die beiden Inhaltstypen verwenden beide eine Taxonomie und mehrere der gleichen Felder in der Datenbank. Wenn ich diese Featuremodule in eine neue Site lade, werden Konflikte zwischen diesen gemeinsamen Feldern und dem gemeinsamen Vokabular angezeigt, und ich bin nicht sicher, wie der Konflikt am besten gelöst werden kann.

Die Funktionsmodule sollen zwar zusammenarbeiten, müssen jedoch nicht auf derselben Site vorhanden sein. Jeder kann auch mit anderen Funktionen arbeiten. Beide verwenden die Taxonomie und Felder zum Filtern von Ansichten usw., sodass es sinnvoll ist, diese Komponenten jeweils in ihre Feature-Definition aufzunehmen. Sollte ich:

  • Entfernen Sie die Felder und die Taxonomie aus einem der Module und deklarieren Sie eine Abhängigkeit zum anderen. Dies ist nicht wünschenswert, da jeder ohne den anderen arbeiten kann.
  • Erstellen Sie zwei Versionen der Funktionen, eine für die unabhängige Verwendung und eine für die Zusammenarbeit.
  • Felder und Taxonomie als separates Feature definieren?
  • Konflikt ignorieren und Module aktivieren? (Wenn ich das tue, teilen sich die beiden das Feld?)
  • Eine andere Lösung?

Ich habe dies noch nicht getestet, aber werden durch Deaktivieren oder Deinstallieren eines der beiden Funktionsmodule die Felder aus der Datenbank entfernt, obwohl das andere Modul dies erfordert?

Antworten:


16

Erstellen Sie ein drittes Feature, das die Komponenten (*) definiert, die von den beiden anderen unabhängigen Features verwendet werden.

Entfernen Sie in den beiden anderen Features die Komponenten, die jetzt vom dritten Feature beansprucht werden, und listen Sie stattdessen das dritte Feature als Abhängigkeit auf.

echo 'digraph G {label = "Abhängigkeitsgraph";  strukturell [label = "Strukturelles Merkmal \ n (Felder, Taxonomie)"];  "Merkmal A \ n (Inhaltstyp)" -> strukturell;  "Merkmal B \ n (Inhaltstyp)" -> strukturell;  }; '  |  dot -Tpng> dependency.png

(*) In Features für Drupal 7 ist diese Funktionalität jedoch noch nicht festgeschrieben. Weitere Informationen finden Sie unter http://drupal.org/node/1064472. Dort können Sie den vorgeschlagenen Code überprüfen. - Dieser Patch wurde für Features 7.x-2.x übernommen.


1
Ja, das würde sicherlich funktionieren. Obwohl Features die Benutzer dazu zwingt, ist dies eine unelegante Lösung. Features bietet die Möglichkeit, ein Feature zu packen, und lässt es uns dann nicht vollständig tun. Gemeinsame Felder zwischen verschiedenen Feature-Modulen sollten kein Problem darstellen. Vielen Dank
Ashlar

3
@Ashlar: Was ist, wenn sich die Definitionen der Felder in den beiden ersten Features unterscheiden - wie würden sich die widersprüchlichen Definitionen auflösen? Außerdem ist es im Allgemeinen problematisch, mehrere maßgebliche Definitionen derselben Informationen zu haben . Das Freigeben von Feldern ist kein Problem, es ist jedoch problematisch, wenn mehrere Berechtigungen angeben, um welche Felder es sich handelt.
Smokris

2
Nein, ich sage , dass Sie sollten definieren das Feld einmal (und damit das Feld der möglichen Werte definieren einmal ) in der Strukturmerkmal - und Referenz das Feld in jedem der Inhaltstyp Eigenschaften. (Ack ... Ich habe gerade festgestellt, dass das, was ich vorgeschlagen habe, davon ausgeht, dass der Patch auf drupal.org/node/1064472 angewendet wurde, den ich vergessen habe. Bearbeitete Antwort.)
smokris

1
Vielen Dank Smokris. Der Link war sehr hilfreich. Ich hatte eine falsche Annahme darüber, wie mit dem Feld / der Instanz umgegangen wurde. Ihre Antwort macht jetzt Sinn für mich, und der Link zum Patch wird mich davor bewahren, Haare
auszureißen

1
Der erwähnte Patch für D7-Funktionen wurde nun an dev drupal.org/node/1064472#comment-7235792
danbohea am

1

Diese Lösung hat sich für mich als großartig erwiesen, da sie für den Export an verschiedene Sites weitaus robuster ist als die Erstellung einer dritten Funktion, mit der verwaiste Felder an einer anderen, nicht verwandten Site erstellt werden.

http://drupal.org/node/1698290


0

Eine Lösung, die für mich funktionierte, bestand darin, die beiden Features zu einem größeren Feature zusammenzufügen. Dadurch wurden die Konflikte gelöst.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.