Drupal как переопределить чужую функцию - PullRequest
0 голосов
/ 22 августа 2011

Я скачал чей-то модуль Drupal (не ядро), там я поменял 1 функцию.Я хочу, чтобы мои изменения не были перезаписаны будущими обновлениями модуля, но все еще могли получать новые обновления.

Как вы это делаете?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 августа 2011

Как правило, если вы что-то изменили, это означает, что у вас больше нет версии, которую может поддерживать первоначальный разработчик (если он не применяет такое же изменение в своем модуле).

Но ваши варианты:

  1. делая оригинальный модуль более гибким / расширяя его: Если вы знакомы с концепцией хуков Drupal , вы можете использовать их для создания своего собственного модуля и так изменить способ работы этого модуля. Если у него нет хуков в нужной вам функции, вы можете добавить их и попросить автора объединить изменения, чтобы, когда кто-то устанавливает ваш модуль, он легко интегрировался с его / ее модулем.

  2. с использованием системы контроля версий: В качестве альтернативы вы можете проверять обновления другим способом, не из самого Drupal. Вы можете использовать Git для загрузки этого модуля (каталог модулей drupal.org предоставляет вам доступ к Git) и использовать его для объединения новых версий с вашим кодом - тогда вам нужно быть более знакомым с системой управления версиями Git.

1 голос
/ 22 августа 2011

Лучше использовать хуки, но если других решений нет ...

Самое простое решение: создать diff, применить патч вручную после автоматического обновления модуля.

http://jungels.net/articles/diff-patch-ten-minutes.html

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

1 голос
/ 22 августа 2011

Если ваша измененная функция исправляет ошибку или что-то еще, лучше создать путь и предложить свою модификацию сопровождающему.

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

Другое, но менее изящное решение - клонировать модуль и создать свое собственное с помощью модифицированной функции (например, ваш модуль может не обновляться).).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...