Как избежать проверки обновлений для определенного модуля?


35

В текущем проекте мне пришлось исправлять жизнь из нескольких модулей (иерархия узлов, доступ к рабочему столу и еще несколько). Эти модули сейчас идеально подходят для нужд проекта и вряд ли будут ломаться с будущими обновлениями ядра.

При этом, когда приложение будет передано, клиенты будут иметь полный (пользователь 1) доступ к системе и, следовательно, будут предупреждены, когда эти модули будут иметь доступные обновления. И они будут обновлять их, независимо от того, сколько раз я умоляю их не делать этого (о, как легко будет жить без клиентов!).

Есть ли способ (возможно, в .infoфайлах модулей ), чтобы убедить менеджер обновлений не проверять наличие обновлений для этих модулей?

РЕДАКТИРОВАТЬ

Я знаю о 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переменную.
эмс

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 «большинство случаев» является контрпродуктивным для тех немногих случаев, когда слаг не соответствует имени модуля. Просматривая и используя первый фрагмент, мы одновременно обучаем разработчика и сокращаем количество возможных проблем.
ЕМС

Термин, используемый в Drupal, это не слаг, а название машины . Slug используется в некоторых CMS как эквивалент канонического URL или псевдонима пути ,
kiamlaluno

12

Вы можете сделать это двумя способами.

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

В частности, настройки для каждого проекта для игнорирования определенных проектов или даже определенных выпусков отсутствуют в базовой версии модуля. Модуль «Расширенные настройки статуса обновления» восстанавливает эти настройки и может в конечном итоге предоставить дополнительные функции для основного модуля «Обновление статуса».


команда drush - именно то, что я искал, большое спасибо!
Афр

drush help upcДаст это за --lockпомощью: --lock = <Foo, Bar> Добавить постоянную блокировку , чтобы удалить указанные проекты из рассмотрения в процессе обновления. Блокировки могут быть удалены с помощью параметра --unlock или могут быть переопределены путем специального присвоения имени проекту в качестве параметра pm-update или pm-updatecode. Блокировка не влияет на pm-download.
Измир Рамирес

2

Я получаю ту же проблему с обновлениями модуля, я установил модуль Disable Updates, кажется, работает хорошо.

Это небольшой административный модуль, который позволяет администраторам сайтов отключать проверку обновлений для определенных тем и модулей, предоставляя функциональность hook_update_projects_alter () в форме настроек обновлений (/ admin / reports / updates / settings). Он позволяет произвольно выбирать темы и модули, а также автоматически обнаруживать пользовательские модули, исправленные модули и модули специфических для сайта функций.

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


0

По сути, вы сделали вилку, верно? Итак, вы должны:

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

И последнее, но не менее важное: если он не поддерживается, но не устарел в пользу любого другого модуля, подумайте о том, чтобы попросить стать со-сопровождающим и поделиться своими исправлениями с сообществом.


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