Jak uniknąć sprawdzania dostępności aktualizacji dla określonego modułu?

35

W bieżącym projekcie musiałem załatać życie z kilku modułów (hierarchii węzłów, dostępu do środowiska roboczego i kilku innych). Moduły te są teraz absolutnie idealne dla potrzeb projektu i jest mało prawdopodobne, że zepsują się przy przyszłych aktualizacjach rdzenia.

Biorąc to pod uwagę, po przekazaniu aplikacji klienci będą mieli pełny (użytkownik 1) dostęp do systemu i dlatego zostaną ostrzeżeni, gdy moduły te będą dostępne aktualizacje. I będą je aktualizować, bez względu na to, ile razy błagam, aby tego nie robili (och, jak łatwe byłoby życie bez klientów!).

Czy istnieje sposób (być może w .infoplikach modułów ), aby przekonać menedżera aktualizacji, aby nie sprawdzał dostępności aktualizacji dla tych modułów?

EDYTOWAĆ

Zdaję sobie sprawę z project status urlklucza dostępnego dla .infopliku, więc myślę, że mógłbym ustawić go na nieistniejący adres URL, ale wolałbym to zrobić w czysty sposób, jeśli to możliwe.

Clive
źródło

Odpowiedzi:

31

Musisz wdrożyć hook_update_projects_alter().

Zmień listę projektów przed pobraniem danych i porównaniem wersji.

Większość modułów nigdy nie będzie musiała implementować tego haka. Służy do zaawansowanej interakcji z modułem statusu aktualizacji: zwykli śmiertelnicy nie muszą się stosować. Podstawowym przypadkiem użycia tego haka jest dodanie projektów do listy, na przykład w celu dostarczenia danych statusu aktualizacji wyłączonych modułów i motywów. Współpracujący moduł może chcieć ukryć projekty z listy, na przykład jeśli istnieje moduł specyficzny dla witryny, który nie ma żadnych oficjalnych wydań, moduł ten mógłby usunąć się z tej listy, aby uniknąć ostrzeżeń „Nie znaleziono dostępnych wydań” na raport o dostępnych aktualizacjach. W rzadkich przypadkach moduł może chcieć zmienić dane powiązane z projektem znajdującym się już na liście.

Chapabu
źródło
19

projectKlucz od .info pliku jest dodawany przez skrypt opakowań na drupal.org zidentyfikować co wystawać moduł wynosi od. Podstawowym zastosowaniem modułu aktualizacji stanu jest monitorowanie wersji zainstalowanych pakietów i powiadamianie administratorów o dostępności nowych wersji.

Wystarczy usunąć lub skomentować ten wiersz w pliku .info , a Drupal przestanie sprawdzać dostępność aktualizacji tego modułu.

smartinm
źródło
Czy zostało to odrzucone, ponieważ jest niepoprawne lub z innego powodu?
mpdonadio
To jest IMO, najlepszy i najprostszy sposób!
AyeshK,
1
@MPD projectW dokumentach nie zaleca się używania ręcznego - może to być przyczyną głosów negatywnych.
Mołot
To był jedyny sposób, w jaki mogłem przestać sprawdzać niestandardową wersję motywu. Oczywiście chciałbym to zrobić „we właściwy sposób”, ale to zadziałało i ponowne użycie kodu NPC jest zakodowane, ale THEMENAME_update_projects_alter nie.
nedwardss
3
@nedwardss używa MYMODULE_lub THEMENAME_wskazuje tylko lokalizację, w której należy umieścić ten kod. Dzięki użyciu tego kodu w pliku funkcji motywu zamiast w module niestandardowym może on być przetwarzany na innym etapie i może nie działać zgodnie z oczekiwaniami. Tematy powinny być zawarte w $projectszmiennej.
emc
14

Wystarczy podać przykładowy kod, aby pomóc wybranej odpowiedzi:

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

Wprowadź nazwę modułu w $projects[]zmiennej, aby wyłączyć. Jeśli nie masz pewności, co to jest ślimak (będzie pisane małymi literami i podkreślone), użyj tego dsm()wywołania lub print_r()wydrukuj listę modułów.

emc
źródło
1
Jedna uwaga - slugto po prostu techniczna nazwa modułu, która jest taka sama jak nazwa .infopliku modułu . Więc nie musisz zrzucać tablicy projektów, po prostu zajrzyj do folderu modułu. W większości przypadków nazwa jest taka sama jak nazwa folderu modułu.
Nux,
1
@Nux „większość przypadków” przynosi efekt przeciwny do zamierzonego, ponieważ ślimak nie pasuje do nazwy modułu. Przeglądając i używając ślimaka po raz pierwszy, edukujemy programistę i ograniczamy liczbę możliwych problemów.
emc
Termin użyty w Drupal nie jest ślimakiem, ale nazwą maszyny . Slug jest używany z niektórych CMS-ów jako odpowiednik kanonicznego adresu URL lub aliasu ścieżki ,
kiamlaluno
12

Możesz to zrobić na dwa sposoby.

  • drush pm-updatecode --lock = module_to_ignore
  • Użyj modułu update_advanced . Umożliwia oznaczenie modułów, które chcesz zignorować na stronie administracyjnej modułu.

W szczególności ustawienia dla poszczególnych projektów, aby ignorować niektóre projekty, a nawet określone wersje, są nieobecne w podstawowej wersji modułu. Moduł „Ustawienia zaawansowane stanu aktualizacji” przywraca te ustawienia i może ostatecznie zapewnić dodatkową funkcjonalność dla podstawowego modułu „Stan aktualizacji”.

4life
źródło
polecenie drush jest dokładnie tym, czego szukałem, dziękuję bardzo!
Afr
drush help upcDa to za --lockpomocą: --lock = <foo, bar> Dodaj trwałą blokadę do usuwania określonych projektów od uwagę w trakcie aktualizacji. Blokady można usunąć za pomocą parametru --unlock lub przesłonić, nazywając projekt konkretnie parametrem parametru pm-update lub pm-updatecode. Blokada nie wpływa na pobieranie po południu.
Yzmir Ramirez
2

Mam ten sam problem z aktualizacjami modułu, zainstalowałem moduł Wyłącz aktualizacje wydaje się działać dobrze.

Jest to mały moduł administracyjny, który pozwala administratorom witryn wyłączyć sprawdzanie aktualizacji niektórych tematów i modułów, ujawniając funkcję hook_update_projects_alter () w formularzu ustawień aktualizacji (/ admin / raporty / aktualizacje / ustawienia). Pozwala na dowolny wybór motywów i modułów, a także automatyczne wykrywanie modułów niestandardowych, modułów załatanych i modułów funkcji specyficznych dla witryny.

wprowadź opis zdjęcia tutaj

Krishna Mohan
źródło
0

Zasadniczo zrobiłeś widelec, prawda? Więc powinieneś:

  1. Zmień nazwę, aby uwzględnić znak widelca
  2. W pliku informacyjnym ustaw project status urlrepozytorium tego modułu.

Last but not least, jeśli nie jest obsługiwany, ale nie był przestarzały na rzecz jakiegokolwiek innego modułu, zastanów się, czy nie zostać współautorem i udostępnij swoje poprawki społeczności.

Mołot
źródło
2
Donschoe: opiekun tutaj. Byłbym bardzo chętny, aby pomóc ci przyśpieszyć, jeśli chcesz.
berkes