답변:
가장 쉬운 방법은 규칙을 사용하여 수행하는 것입니다. 다음 단계에 따라 작업을 수행해야합니다.
return $account_unchanged->pass != $account->pass;
이전에는 규칙에서 시도하지 않았지만 아마도 객체 $account
와 $account->original
객체의 값을 비교하는 것이 중요 합니다.
사용자 정의 코드에서이를 수행하는 한 가지 방법은 다음을 구현하는 것입니다 hook_user_presave()
.
function MYMODULE_user_presave(&$edit, $account, $category) {
// Don't show message for registering users.
if (isset($account->is_new) && $account->is_new) {
return;
}
if (!empty($edit['pass']) && $account->pass != $edit['pass']) {
// Password has been changed.
}
}
에서 동일한 작업을 수행 할 수는 hook_user_update()
있지만 이전에는 시도하지 않았습니다. 위의 내용은 실제 프로젝트에서 가져 왔으며 완벽하게 작동합니다.
이미 사용하고 있기 때문에 규칙을 사용하는 것이 더 쉬울 수 있지만 PHP 필터 모듈 을 활성화해야 합니다.
다음과 같은 지침이 있습니다.
admin/modules
admin/config/workflow/rules
After updating an existing user account
이벤트 드롭 다운 목록에서 반응 을 선택해야 합니다.Execute custom PHP code
값 섹션에 다음 PHP 사용자 정의 코드를 추가하십시오.
if(!empty($account->current_pass)) {
return true;
}
그런 다음 액션을 추가하고 Send mail
[account:mail]
제목 필드 및 메시지 필드를 추가 하고 채 웁니다.