Come posso fare in modo che il mio nuovissimo modulo dipenda da una versione minima di Drupal 7 necessaria per funzionare correttamente?


10

Sto sviluppando un modulo nuovo di zecca (non c'è ancora nessun sito che lo utilizza). Richiede una versione specifica di Drupal, poiché utilizza l' hook_taxonomy_term_view()hook che è stato introdotto nella versione principale di Drupal 7.17 .

Voglio evitare che il mio modulo sia abilitato su un sito utilizzando, ad esempio, Drupal 7.16 o qualsiasi versione precedente di Drupal core. Le versioni più alte di Drupal, sopra 7.17, dovrebbero andare bene.

La mia domanda : Come posso rendere il mio modulo dipendente da quella versione Drupal 7.17, che è un minimo per il mio modulo?

Nota: non ho bisogno (devo preoccuparmi) di una soluzione per i siti in cui il modulo è già installato. Quindi non è necessario che sia disabilitato in qualche modo in tali versioni Drupal precedenti alla 7.17.


La domanda è un hook con tag perché riguarda un hook che dovrei usare nel mio codice. ganci non significa che sto cercando un gancio che potrei usare; Sono aperto a qualsiasi soluzione che mi consenta di evitare che il modulo sia installato su un sito che non utilizza Drupal 7.17 o versioni successive.
kiamlaluno

Puoi richiedere una versione minore di qualche altro modulo dependencies[] = mymodule (1.12)ma sembra che questo non funzioni per core.
AyeshK,

@AyeshK Uh! Ora, potrebbe essere interessante se potessi indicarmi un modulo core Drupal che è sempre abilitato.
kiamlaluno

L'ho provato con dependencies[] = taxonomy (>7.17)alcuni altri possibili numeri di versione ma non ha funzionato.
AyeshK,

Risposte:


11

Il trucco, a quanto pare, è usare il modulo di sistema come:

dependencies[] = system (>=7.17)

4
Questo è quello corretto. Fonte: dww e ho scritto il controllo delle dipendenze con versione. Ho scritto questo blog su drupal4hu.com/node/274 e ora ho aggiunto anche la relativa pagina del manuale su drupal.org/node/542202 .

7

hook_requirements() esiste esattamente per quel tipo di scopo.

Verificare i requisiti di installazione ed eseguire rapporti sullo stato.

È possibile controllare il $phaseparametro per determinare se il modulo viene installato, verificare la versione corrente di Drupal rispetto alla versione richiesta e restituire una severità di REQUIREMENT_ERROR. Ciò impedirà l'installazione del modulo fino a quando non viene soddisfatto il requisito.

La documentazione è piuttosto approfondita, l'unica cosa che vale la pena menzionare qui è che l'hook deve essere implementato nel file .install del modulo.


Questa non è la risposta giusta, non ho idea del perché sia ​​stata votata così pesantemente.

@chx Mi prenderò in parola, ma in tal caso la descrizione della funzione "Controlla i requisiti di installazione ed esegui la segnalazione dello stato". è in qualche modo fuorviante, vero? Dopotutto stiamo parlando in particolare del controllo dei requisiti del modulo al momento dell'installazione :)
Clive

1
@Chapabu Non secondo i documenti :) Parla di moduli in particolare, e sostanzialmente dice di usare quell'hook per tornare REQUIREMENT_ERRORper assicurarsi che un modulo non sia installato se non soddisfa i requisiti. Avevo pensato che il controllo della versione di Drupal fosse un caso d'uso valido (i documenti non menzionano il fatto di non farlo) ma immagino di aver perso qualcosa. Potrebbe essere solo una cattiva pratica o qualcosa che non so
Clive

1
@Clive Weird, non so dove l'ho preso da allora ... forse D8 dovrebbe essere solo un aggiornamento di documenti ;-)
Chapabu

1
@chx Dovrai scusare la mia ignoranza, non l'ho mai fatto prima ... il problema va contro D8 e quindi viene riportato indietro? Secondo te, tutto il testo deve cambiare o ha solo bisogno di una nota che menzioni di non usare questo hook per verificare la versione del modulo / core, solo i requisiti della libreria, ecc. (Con un link ai documenti che hai citato)? Grazie
Clive

2

È possibile utilizzare hook_enabled

Ciò si attiva dopo l'installazione del modulo. È possibile controllare la versione del drupal installato e se non è la versione corretta, utilizzare module_disable e fornire il messaggio di errore richiesto.

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.