Come posso risolvere questo conflitto tra due moduli Feature?


16

Ho due tipi di contenuto con vari menu, viste, menu, ecc. Che ho impacchettato come due moduli personalizzati Feature. I due tipi di contenuto utilizzano entrambi una tassonomia e utilizzano molti degli stessi campi nel database. Quando carico questi moduli Feature in un nuovo sito, mostrano conflitti tra loro su questi campi e vocaboli comuni e non sono sicuro di quale sarebbe il modo migliore per risolvere il conflitto.

Sebbene i moduli Feature siano intesi a lavorare insieme, non è necessario che siano entrambi presenti sullo stesso sito. Ognuno può anche funzionare con altre funzionalità diverse. Entrambi usano la tassonomia e i campi per filtrare le viste, ecc. Quindi ha senso che ciascuno di essi includa questi componenti nella loro definizione delle caratteristiche. Dovrei:

  • Rimuovere i campi e la tassonomia da uno dei moduli e dichiarare una dipendenza dall'altro? Questo non è desiderabile poiché ciascuno può funzionare senza l'altro.
  • Crea due versioni delle funzionalità, una per uso indipendente e una per la collaborazione.
  • Definire i campi e la tassonomia come funzionalità separata?
  • Ignorare il conflitto e abilitare i moduli? (Se lo faccio, condivideranno entrambi il campo?)
  • Un'altra soluzione?

Non l'ho ancora provato, ma disabilitare o disinstallare uno dei due moduli Funzionalità rimuoverà i campi dal database anche se l'altro modulo lo richiede?

Risposte:


16

Creare una terza funzione che definisce i componenti (*) utilizzati dalle altre due funzioni indipendenti.

Nelle altre due funzionalità, rimuovere i componenti ora rivendicati dalla terza funzionalità e, invece, elencare la terza funzionalità come dipendenza.

echo 'digraph G {label = "Grafico delle dipendenze";  strutturale [etichetta = "Caratteristica strutturale \ n (Campi, Tassonomia)"];  "Caratteristica A \ n (tipo di contenuto)" -> strutturale;  "Caratteristica B \ n (tipo di contenuto)" -> strutturale;  };'  |  punto -Tpng> dependency.png

(*) In Features for Drupal 7, tuttavia, questa funzionalità non è ancora stata impegnata - vedi http://drupal.org/node/1064472 e aiuta a rivedere lì il codice proposto. - Questa patch è stata dedicata alle funzionalità 7.x-2.x.


1
Sì, sicuramente funzionerebbe. Sebbene questo sia ciò che costringe gli utenti a fare, è una soluzione non elegante. Funzionalità offre la possibilità di impacchettare una funzionalità e quindi non ci consente di farlo completamente. I campi condivisi tra moduli funzione separati non dovrebbero essere un problema. Grazie
Ashlar,

3
@Ashlar: Ma cosa succede se le definizioni dei Campi in ciascuna delle prime due Funzionalità differiscono - come potrebbero essere risolte le definizioni in conflitto? Inoltre, in generale, avere più definizioni autorevoli delle stesse informazioni è problematico . La condivisione dei campi non è un problema, ma avere più autorità che specificano quali sono questi campi è un problema.
smokris,

2
No, sto dicendo che dovresti definire il campo una volta (e quindi definire i possibili valori del campo una volta ) nella Funzione strutturale - e fare riferimento a quel campo in ciascuna delle caratteristiche del tipo di contenuto. (Ack ... Mi sono appena reso conto che ciò che ho proposto presuppone che la patch su drupal.org/node/1064472 sia stata applicata, che ho dimenticato di menzionare. Risposta modificata.)
smokris

1
Grazie smokris. Il link è stato molto utile. Ho avuto un'ipotesi errata su come venivano gestiti il ​​campo / istanza. La tua risposta ora ha senso per me e il link alla patch mi salverà dal tirare fuori i capelli :)
Ashlar,

1
La patch menzionata per D7 Features è stata ora impegnata a dev drupal.org/node/1064472#comment-7235792
danbohea,

1

Questa soluzione ha funzionato benissimo per me, molto più robusta per essere esportata in vari siti rispetto alla creazione di una terza funzione, che avrebbe creato campi orfani in un altro sito non correlato.

http://drupal.org/node/1698290


0

Una soluzione che ha funzionato per me è stata quella di collegare le due funzionalità in una funzionalità più grande, risolvendo i conflitti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.