Comment éviter de rechercher des mises à jour pour un module spécifique?

35

Dans un projet en cours, j'ai dû corriger la vie de quelques modules (hiérarchie de nœuds, accès au workbench et quelques autres). Ces modules sont maintenant absolument parfaits pour les besoins du projet et sont très peu susceptibles de rompre avec les futures mises à jour du noyau.

Cela étant dit, lorsque l'application sera remise, les clients auront un accès complet (utilisateur 1) au système et seront donc avertis lorsque ces modules auront des mises à jour disponibles. Et ils les mettront à jour, peu importe le nombre de fois où je les prie de ne pas le faire (oh, comme la vie serait facile sans clients!).

Existe-t-il un moyen (peut-être dans les .infofichiers des modules ) de persuader le gestionnaire de mise à jour de ne pas rechercher les mises à jour de ces modules?

MODIFIER

Je suis au courant de la project status urlclé disponible pour le .infofichier, je suppose donc que je pourrais définir cette adresse sur une URL inexistante, mais je préférerais de loin le faire de manière propre, si possible.

Clive
la source

Réponses:

31

Vous devez implémenter hook_update_projects_alter().

Modifiez la liste des projets avant d'extraire des données et de comparer des versions.

La plupart des modules n'auront jamais besoin d'implémenter ce hook. C'est pour une interaction avancée avec le module d'état de la mise à jour: les simples mortels n'ont pas besoin de s'appliquer. Le principal cas d'utilisation de ce raccordement consiste à ajouter des projets à la liste, par exemple, à fournir des données de statut de mise à jour sur des modules et des thèmes désactivés. Un module ajouté peut souhaiter masquer des projets de la liste. Par exemple, si un module spécifique au site ne comporte aucune version officielle, ce module peut se supprimer de cette liste pour éviter les avertissements "Aucune version disponible trouvée". le rapport de mises à jour disponibles. Dans de rares cas, un module peut vouloir modifier les données associées à un projet déjà dans la liste.

Chapabu
la source
19

La projectclé du fichier .info est ajoutée par le script de packaging sur drupal.org pour identifier le projet d'origine du module. Le module d'état de la mise à jour est principalement utilisé pour surveiller les versions des packages installés et avertir les administrateurs lorsque de nouvelles versions sont disponibles.

Vous venez de supprimer ou de commenter cette ligne dans le fichier .info et Drupal cesse de rechercher les mises à jour de ce module.

smartinm
la source
Est-ce que cela a été rejeté parce qu'il est incorrect ou pour une autre raison?
mpdonadio
Ceci est IMO, la meilleure et la plus simple!
AyeshK
1
@MPD Il projectest déconseillé d' utiliser manuellement la documentation - cela pourrait être la raison des votes négatifs.
Mołot
C’est la seule façon pour moi d’arrêter de chercher une version personnalisée d’un thème. Bien sûr, je voudrais le faire "de la bonne façon", mais cela a fonctionné et la réutilisation du code NPC mais pas avec THEMENAME_update_projects_alter.
Nedwardss
3
@nedwardss using MYMODULE_ou THEMENAME_indique uniquement l'emplacement où ce code doit être placé. En utilisant ce code dans un fichier de fonction de thème au lieu d'un module personnalisé, il peut être traité à une étape différente et peut ne pas fonctionner comme prévu. Les thèmes doivent être inclus dans la $projectsvariable.
emc
14

Il suffit de fournir un exemple de code pour aider la réponse choisie:

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

Entrez le nom du module dans la $projects[]variable à désactiver. Si vous n'êtes pas sûr de la nature du slug (sera en minuscule et souligné), utilisez cet dsm()appel ou print_r()imprimez une liste des modules.

emc
la source
1
Une note - slugest simplement un nom technique du module qui est identique au nom du .infofichier de module . Ainsi, vous n'avez pas besoin de vider les tableaux de projets, mais de regarder dans le dossier du module. Dans la plupart des cas, le nom est identique au nom du dossier du module.
Nux
1
@Nux "la plupart des cas" est contre-productif pour les quelques fois où le slug ne correspond pas au nom du module. En visualisant et en utilisant le slug pour la première fois, nous sensibilisons le développeur et réduisons le nombre de problèmes possibles.
emc
Le terme utilisé par Drupal n’est pas slug, mais le nom de la machine . Slug est utilisé à partir de certains CMS comme équivalent d' URL canonique ou d' alias de chemin ,
kiamlaluno
12

Vous pouvez le faire de deux manières.

  • drush pm-updatecode --lock = module_to_ignore
  • Utilisez le module update_advanced . Il vous permet de marquer les modules que vous souhaitez ignorer sur la page d'administration du module.

En particulier, les paramètres par projet pour ignorer certains projets, voire des versions spécifiques, sont absents de la version principale du module. Le module "Paramètres avancés du statut de mise à jour" restaure ces paramètres et peut éventuellement fournir des fonctionnalités supplémentaires au module principal "Statut de la mise à jour".

4 vie
la source
la commande drush est exactement ce que je cherchais, merci beaucoup!
Afr
Le drush help upcléguerons pour l' --lockaide: --lock = <foo, bar> Ajouter un verrouillage persistant pour supprimer les projets spécifiques de l' examen au cours des mises à jour. Les verrous peuvent être supprimés avec le paramètre --unlock ou remplacés en nommant spécifiquement le projet en tant que paramètre pour pm-update ou pm-updatecode. Le verrou n'affecte pas pm-download.
Yzmir Ramirez
2

J'ai le même problème avec les mises à jour du module, j'ai installé le module Disable Updates qui semble bien fonctionner.

Il s'agit d'un petit module administratif qui permet aux administrateurs de site de désactiver la recherche de mises à jour sur certains thèmes et modules en exposant les fonctionnalités de hook_update_projects_alter () dans le formulaire des paramètres de mise à jour (/ admin / reports / updates / settings). Il permet la sélection arbitraire de thèmes et de modules, ainsi que la détection automatique de modules personnalisés, de modules corrigés et de modules de fonctionnalités spécifiques à un site.

entrez la description de l'image ici

Krishna Mohan
la source
0

En gros, vous avez fabriqué une fourchette, non? Donc tu devrais:

  1. Renommez-le pour inclure votre marque de fourche
  2. Dans le fichier d'informations, définissez project status urlvotre référentiel de ce module.

Dernier point mais non le moindre, s'il n'est pas pris en charge mais qu'il n'est pas obsolète au profit d'un autre module, envisagez de demander à devenir co-responsable et de partager vos correctifs avec la communauté.

Mołot
la source
2
Donschoe: mainteneur ici. Je serais très disposé à vous aider à vous mettre à niveau si vous voulez.
Berkes