Як уникнути перевірки оновлень для конкретного модуля?


35

У поточному проекті мені довелося виправити життя з декількох модулів (ієрархія вузлів, доступ до робочого столу та ще декілька). Ці модулі зараз абсолютно ідеальні для потреб проекту і навряд чи можуть розірватися з майбутніми оновленнями до основної роботи.

При цьому, коли додаток буде передано, клієнти матимуть повний (користувач 1) доступ до системи, і тому вони будуть попереджені, коли ці модулі матимуть доступні оновлення. І вони НЕ будуть оновлювати їх, незалежно від того , скільки разів я прошу їх не (про те , як легко було б життя без клієнтів!).

Чи є спосіб (можливо, у .infoфайлах модулів ) переконати менеджера оновлень не перевіряти наявність оновлень для цих модулів?

EDIT

Мені відомо про project status urlключ, доступний для цього .infoфайлу, тому я думаю, що міг би встановити його на неіснуючу URL-адресу, але я скоріше зроблю це чистим способом, якщо це можливо.

Відповіді:


31

Вам потрібно реалізувати hook_update_projects_alter().

Змініть список проектів перед отриманням даних та порівнянням версій.

Більшість модулів ніколи не знадобиться реалізувати цей гачок. Це для розширеної взаємодії з модулем статусу оновлення: простих смертних не потрібно застосовувати. Основним випадком використання цього гака є додавання проектів до списку, наприклад, надання даних про стан оновлення про відключені модулі та теми. Модуль, що надав внесок, може захотіти приховати проекти зі списку, наприклад, якщо є модуль, специфічний для сайту, який не має жодних офіційних релізів, цей модуль може видалити себе зі цього списку, щоб уникнути попереджень "Немає доступних випусків" доступний звіт про оновлення У рідкісних випадках модуль може захотіти змінити дані, пов'язані з проектом, які вже є у списку.


19

projectКлюч з .info файлу додається пакувальним скрипт на drupal.org , щоб визначити , який проект модуль з. Основне використання - це модуль стану оновлення для моніторингу версій встановлених пакетів та сповіщення адміністраторів про наявність нових версій.

Ви просто видаліть або прокоментуйте цей рядок у файлі .info та Drupal зупинить перевірку оновлень цього модуля.


Це було знято з огляду на те, що це неправильно або з якоїсь іншої причини?
mpdonadio

Це ІМО, найкращий і найпростіший спосіб!
АйешК

1
@MPD Використання projectвручну заборонено в документах - це може бути причиною зворотних подій.
Молот

Це був єдиний спосіб, який я міг знайти, щоб зупинити перевірку спеціалізованої версії теми. Я, звичайно, хотів би зробити це "правильним способом", але це спрацювало і повторно використовувати кодований npc, але з THEMENAME_update_projects_alter цього не зробили.
nedwardss

3
@nedwardss використовує MYMODULE_або THEMENAME_лише вказує місце розташування цього коду. Використовуючи цей код у файлі функції теми замість спеціального модуля, він може бути оброблений на іншому етапі та може не виконуватись так, як очікувалося. Теми повинні бути включені до $projectsзмінної.
emc

14

Просто надайте зразок коду, щоб допомогти обраній відповіді:

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

Введіть ім'я модуля в $projects[]змінну, щоб відключити. Якщо ви не впевнені, що таке слизька (буде малі та підкреслені), використовуйте цей dsm()виклик або print_r()роздруковуйте список модулів.


1
Одна примітка - slugце просто технічне ім'я модуля, яке є тим самим, як ім'я .infoфайлу модуля . Тому вам не доведеться скидати масив проектів, просто загляньте в папку модулів. У більшості випадків ім'я - це та сама назва папки модуля.
Nux

1
@Nux "більшість випадків" є контрпродуктивним для кількох разів, коли слуг не відповідає назві модуля. Переглядаючи та використовуючи слизьку вперше, ми обидва навчаємо розробника та зменшуємо кількість можливих проблем.
emc

Термін, що використовується від Drupal, - це не слима, а назва машини . Slug використовується в деяких CMS як рівноцінні з канонічного URL або шлях псевдоніма ,
kiamlaluno

12

Зробити це можна двома способами.

  • drush pm-updatecode --lock = module_to_ignore
  • Використовуйте модуль update_advanced . Це дозволяє позначити модулі, які ви хочете ігнорувати на сторінці адміністрування модуля.

Зокрема, параметри проекту для ігнорування певних проектів або навіть конкретних випусків відсутні в основній версії модуля. Модуль "Оновлення розширених налаштувань статусу" відновлює ці параметри і, зрештою, може забезпечити додаткову функціональність для основного модуля "Оновити статус".


команда "барабан" - саме те, що я шукав, спасибі багато!
Афр

Це drush help upcдопоможе надати --lockдопомогу: --lock = <foo, bar> Додати стійкий замок, щоб видалити вказані проекти з розгляду під час оновлень. Блоки можуть бути видалені за допомогою параметра --unlock або відмінено, конкретно назвавши проект як параметр pm-update або pm-update code. Блокування не впливає на завантаження вечора.
Ізмір Рамірес

2

У мене виникає така ж проблема з оновленнями модуля, я встановив, що модуль « Відключити оновлення» працює добре.

Це невеликий адміністративний модуль, який дозволяє адміністраторам сайтів відключати перевірку оновлень на певні теми та модулі, викриваючи функціональність ho_update_projects_alter () у формі налаштувань оновлення (/ admin / звітів / оновлень / налаштувань). Він дозволяє проводити довільний вибір тем і модулів, а також автоматичне виявлення користувацьких модулів, виправлених модулів та модулів, що відповідають певним сайтам.

введіть тут опис зображення


0

В основному, ви зробили виделку, правда? Тож вам слід:

  1. Перейменуйте його, щоб включити позначку виделки
  2. В інформаційному файлі встановіть project status urlу ваше сховище цього модуля.

І останнє, але не менш важливе значення, якщо воно не підтримується, але не застаріло на користь будь-якого іншого модуля, подумайте про те, щоб стати співавтором і поділитися своїми виправленнями з громадою.


2
Donschoe: тут утримувач. Я б дуже хотів допомогти вам швидше, якщо хочете.
berkes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.