Come evitare il controllo degli aggiornamenti per un modulo specifico?


35

In un progetto attuale ho dovuto rattoppare la vita di alcuni moduli (gerarchia dei nodi, accesso al workbench e pochi altri). Questi moduli sono ora assolutamente perfetti per le esigenze del progetto e molto probabilmente non si rompono con futuri aggiornamenti al core.

Detto questo, quando l'app viene consegnata i client avranno pieno (utente 1) accesso al sistema e verranno quindi avvisati quando questi moduli hanno aggiornamenti disponibili. Ed essi saranno aggiornarli, non importa quante volte li prego di non (oh come vita facile sarebbe senza clienti!).

Esiste un modo (forse nei .infofile dei moduli ) per convincere il gestore aggiornamenti a non verificare la presenza di aggiornamenti per questi moduli?

MODIFICARE

Sono a conoscenza della project status urlchiave disponibile per il .infofile, quindi credo di poterlo impostare su un URL inesistente, ma preferirei farlo in modo pulito, se possibile.

Risposte:


31

Devi implementare hook_update_projects_alter().

Modifica l'elenco dei progetti prima di recuperare i dati e confrontare le versioni.

La maggior parte dei moduli non dovrà mai implementare questo hook. È per l'interazione avanzata con il modulo di stato di aggiornamento: non è necessario applicare i semplici mortali. Il caso d'uso principale di questo hook è l'aggiunta di progetti all'elenco, ad esempio per fornire dati sullo stato di aggiornamento su moduli e temi disabilitati. Un modulo contribuito potrebbe voler nascondere i progetti dall'elenco, ad esempio, se esiste un modulo specifico del sito che non ha versioni ufficiali, quel modulo potrebbe rimuoverlo da questo elenco per evitare avvisi "Nessuna versione disponibile trovata" il rapporto sugli aggiornamenti disponibili. In rari casi, un modulo potrebbe voler modificare i dati associati a un progetto già presente nell'elenco.


19

La projectchiave del file .info viene aggiunta dallo script di packaging su drupal.org per identificare da quale progetto proviene il modulo. L'uso principale è per il modulo di stato di aggiornamento per monitorare le versioni dei pacchetti installati e avvisare gli amministratori quando sono disponibili nuove versioni.

Basta rimuovere o commentare questa riga nel file .info e Drupal smette di controllare gli aggiornamenti di questo modulo.


È stato annullato il downgrade perché non è corretto o per qualche altro motivo?
mpdonadio

Questo è l'IMO, il modo migliore e più semplice!
AyeshK,

1
@MPD L'uso di documenti projectmanuali è sconsigliato nei documenti - questo potrebbe essere il motivo dei voti negativi.
Mołot,

Questo è stato l'unico modo in cui sono riuscito a trovare per smettere di cercare una versione personalizzata di un tema. Ovviamente, vorrei farlo nel "modo giusto", ma questo ha funzionato e riutilizzato il codice npc ma con THEMENAME_update_projects_alter no.
nedwardss,

3
@nedwardss utilizzando MYMODULE_o THEMENAME_indica solo la posizione in cui inserire questo codice. Utilizzando questo codice in un file di funzione del tema anziché in un modulo personalizzato, potrebbe essere elaborato in una fase diversa e potrebbe non funzionare come previsto. I temi dovrebbero essere inclusi nella $projectsvariabile.
emc

14

Basta fornire un esempio di codice per aiutare la risposta scelta:

function MYMODULE_update_projects_alter(&$projects){
    unset($projects['slug_of_the_module_you_want_to_disable']);
    //dsm($projects);  // view a list of projects
}

Immettere il nome del modulo nella $projects[]variabile da disabilitare. Se non sei sicuro di cosa sia la lumaca (sarà minuscola e sottolineata), usa quella dsm()chiamata o print_r()per stampare un elenco dei moduli.


1
Una nota - slugè semplicemente un nome tecnico del modulo che è lo stesso del nome del .infofile del modulo . Quindi non devi scaricare l'array dei progetti, basta guardare nella cartella del modulo. Nella maggior parte dei casi il nome è lo stesso del nome della cartella del modulo.
Nux,

1
@Nux "la maggior parte dei casi" è controproducente per le poche volte in cui la lumaca non corrisponde al nome del modulo. Visualizzando e utilizzando la lumaca la prima volta, entrambi istruiamo lo sviluppatore e riduciamo il numero di possibili problemi.
emc

Il termine usato da Drupal non è lumaca ma nome della macchina . La lumaca è usata da alcuni CMS come equivalente di URL canonico o alias di percorso ,
kiamlaluno

12

Puoi farlo in due modi.

  • drush pm-updatecode --lock = module_to_ignore
  • Usa il modulo update_advanced . Consente di contrassegnare i moduli che si desidera ignorare nella pagina di amministrazione del modulo.

In particolare, le impostazioni per progetto per ignorare determinati progetti o anche rilasci specifici, sono assenti nella versione principale del modulo. Il modulo "Impostazioni avanzate stato aggiornamento" ripristina queste impostazioni e potrebbe eventualmente fornire funzionalità aggiuntive per il modulo principale "Stato aggiornamento".


il comando drush è esattamente quello che stavo cercando, grazie mille!
Afr

Il drush help upcdarà questo per l' --lockaiuto: --lock = <foo, bar> Aggiungi un blocco permanente per rimuovere i progetti specifici dalla considerazione durante gli aggiornamenti. I blocchi possono essere rimossi con il parametro --unlock o sovrascritti specificando il progetto come parametro in pm-update o pm-updatecode. Il blocco non influisce su pm-download.
Yzmir Ramirez,

2

Ottengo lo stesso problema con gli aggiornamenti del modulo, ho installato il modulo Disabilita aggiornamenti sembra funzionare bene.

Questo è un piccolo modulo amministrativo che consente agli amministratori del sito di disabilitare il controllo degli aggiornamenti su determinati temi e moduli, esponendo la funzionalità di hook_update_projects_alter () nel modulo delle impostazioni di aggiornamento (/ admin / reports / updates / settings). Consente la selezione arbitraria di temi e moduli, nonché il rilevamento automatico di moduli personalizzati, moduli con patch e moduli di funzionalità specifici del sito.

inserisci qui la descrizione dell'immagine


0

Fondamentalmente, hai fatto una forchetta, giusto? Quindi dovresti:

  1. Rinominalo per includere il segno della forcella
  2. Nel file di informazioni, imposta project status urlil repository di quel modulo.

Ultimo ma non meno importante, se non è supportato ma non è stato deprecato a favore di qualsiasi altro modulo, considera di chiedere di diventare co-manutentore e condividere le tue correzioni con la community.


2
Donschoe: manutentore qui. Sarei molto disposto ad aiutarti ad accelerare se vuoi.
Berkes,
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.