Нашел очень хороший пост о расширении модуля в drupal. Основные части:
Если модуль использует код для обратного вызова страницы, который вы хотите изменить, измените обратный вызов страницы с помощью hook_menu_alter ().
Если модуль реализует функцию темы, которую вы хотите изменить, измените функцию, связанную с hook_theme_registry_alter (). В качестве альтернативы, если достаточно изменить переменные, которые получает функция темы, вы можете реализовать функцию предварительной обработки для этой функции темы (например, hook_preprocess_rdf_metadata () для theme_rdf_metadata (), и изменить переменные, которые получит функция темы.
Если модуль выполняет запрос SQL с помощью db_select () и назначает тег запросу, измените выполненный запрос с помощью hook_query_alter ().
Если модуль реализует ловушку, которую вы не хотите, чтобы она выполнялась, вы можете реализовать hook_module_implements_alter (), чтобы избежать ее выполнения.
Если в модуле реализован хук alter (например, hook_page_alter ()), и вы хотите изменить то, что изменил этот хук, реализуйте тот же хук alter, убедившись, что он выполняется после того, который реализован из этого модуля.
Если функция, которую вы хотите изменить, не является ловушкой, то:
Убедитесь, что функция использует хуки, реализованные из другого модуля. Например, node_save () вызывает hook_node_presave (); если я захочу изменить свойство «change» узла, я не взламываю node_save (), а скорее использую hook_node_presave (), чтобы изменить его.
Убедитесь, что на функцию ссылаются / используют с крючка; в этом случае вы можете сделать что-то для этого хука, как я ранее описал.
Если что-то, что я сказал до сих пор, не применимо, тогда лучше создать собственный модуль и использовать код другого модуля для его создания. Я также попытался бы запросить функцию для существующего модуля, надеясь, что эта функция реализована.
Взлом стороннего модуля никогда не является хорошей идеей, особенно потому, что автоматическое обновление модуля (через Менеджер обновлений или Drush) больше не будет возможно для этого модуля.
Подробнее о расширении существующего модуля путем создания нового можно найти в этом простом примере здесь .