it-swarm-ko.tech

다른 모듈에 의한 후크 구현이 호출되는 순서를 변경할 수 있습니까?

D6에서는 contrib 모듈을 사용하지만 약간의 동작을 무시하고 싶습니다. 이를위한 사용자 정의 모듈이 있지만 contrib 모듈에서 구현하기 전에 관련 후크의 구현이 호출되므로 contrib 모듈의 버전이 "wins"입니다.

그것을 바꾸고 내 자신의 후크를 마지막으로 호출하도록 할 수있는 방법이 있습니까?

구체적인 내용은 다음과 같습니다.

댓글 양식에서 등록되지 않은 사용자의 기본 "익명"사용자 이름을 제거하고 싶습니다. form_alter 후크를 구현하고 이름 필드에서 기본값을 제거하는 작은 사용자 정의 모듈 Tweak_comment_form을 만들었습니다 ( 이에 대한 이전 질문에 대한 답변 참조 ).

그러나 RealName 이라는 contrib 모듈도 사용하며 form_alter도 구현합니다. RealName은 등록 된 사용자에게 원하는 것을 수행하지만 (사용자 이름을 "실제 이름"으로 대체) 기본값을 이름 필드에 다시 할당합니다.

7
daphshez

예, 매우 간단하게 모듈의 무게를 더 무겁게 설정해야합니다. 이를 수행 할 수있는 몇 가지 방법이 있지만 모듈이 Drupal.org로 다시 배포되는 contrib 모듈 인 경우 가장 좋은 방법은 다음과 같은 코드를 사용하여 hook_install()에 설정하는 것입니다.

db_query("UPDATE {system} SET weight = 100 WHERE name = 'MYMODULE'");

또는 유틸리티 모듈 을 사용하여 모듈 페이지에서 모듈 무게를 설정할 수 있지만 이것은 개인 설치에만 해당됩니다.

7
Decipher

Drupal7에 유용한 추가 정보가있는 것처럼 hook_module_implements_alter가 있습니다.

다른 모듈의 후크도 변경할 수 있습니다. 예를 들어 모듈을 끝/시작으로 이동하십시오.

4
Daniel Wehner
function my_module_module_implements_alter(&$implementations, $hook) {
  if ($hook != 'the_hook_to_change') {
    return;
  }
  $module = 'my_module';
  $group = array($module => $implementations[$module]);
  unset($implementations[$module]);

  $implementations = $group + $implementations; // If you want your implementation to run first.
  //$implementations = $group + $implementations; If you want your implementation to run last.
}

을 기반으로하는 작은 수정 https://api.drupal.org/comment/48623#comment-48623

1
Gokul N K