2011-11-28 5 views
2

나는 퀴즈 모듈을 사용하여 방문자에게 테스트를 관리하는 드루팔 (Drupal) 웹 사이트를 운영하고 있습니다. 이러한 테스트는 익명 사용자가 사용할 수 있어야합니다. 내 문제는 응시자에게 이름과 전자 메일을 입력하여 결과를 보낼 수 있어야한다는 것입니다. 나는이 일을하는 법을 모른다. 나는 Drupal과 PHP의 초보자라고 생각한다. 도움이 될 것입니다.드루팔 (Drupal) 퀴즈 모듈 - 퀴즈 복용 후 이메일로 보내기

+0

어떤 Drupal 버전을 사용하고 있습니까? 이 모듈의 안정 버전은 버전 6에서만 사용하기 때문에 Drupal 6을 사용합니다. – vgardner

+0

Drupal 7을 사용하고 있습니다. 안정 버전에 그런 옵션이 있습니까? – parsimonde

답변

5

- 먼저 custom module을 만듭니다.

- 둘째, 이메일 주소와 이름 입력란을 추가해야합니다. 이 작업은 사용자 정의 모듈에서 hook_form_alter을 통해 두 필드를 추가하거나 퀴즈 모듈에 포함 된 간단한 응답 모듈/필드를 사용 및 사용하고 필요에 따라 필드 스타일을 사용자 정의하여 수행 할 수 있습니다 (왜냐하면 질문처럼 보입니다.) 개인적으로 hook_form_alter를 사용하여 추가하는 것이 좋습니다. 또한 Drupal에서 Hooks에 대해 배울 것을 권장합니다. 그러면 삶이 편하게됩니다.

- 두 필드의 값을 확인하고 검색해야합니다. 이 경우에도 동일한 form_alter 훅을 사용할 수 있습니다. Add a validation and a submission function을 퀴즈 양식 ($form['#validate'][] = 'your_validate_function';$form['#submit'][] = 'your_submit_function';)의 유효성 검사 및 제출 스택에 추가하십시오. Drupal의 함수 valid_email_address을 사용하여 전자 메일의 유효성을 검사 할 수 있으며 물론 다른 필드의 유효성을 검사하고 Drupal의 form_set_error을 호출하여 입력 오류를 사용자에게 알릴 수 있습니다.

- 퀴즈가 제출 된 후 이메일을 보내려면 제출 기능에서 Drupal의 drupal_mail을 호출하십시오. 기본적으로 이메일을 보내는 데 필요한 모든 매개 변수가 필요합니다. 사용자 정의 모듈에 hook_mail을 만들어야합니다. 이 작업을 수행하는 방법의 예를 확인하십시오. here. 로컬 배열 $ form_state [ 'values']에서 양식 값 (이름 및 전자 메일 주소)을 검색하고 drupal_mail 함수에 $ params로 전달하고 hook_mail 함수로 전자 메일 본문에 추가 할 수 있습니다. D

- 대신 사용자가 작업을 작성하고이 퀴즈를 완료 한 후에 수행 할 작업을 지정하여 전자 메일을 보낼 수 있습니다. 퀴즈 모듈은이를 지원합니다. 다음은 how to write an action의 예입니다.

+1

와우, 정말 고마워! 나는 이것을 시도 할 것이다. 잘만되면 나는 그것을 어디인가에서 만들 것이다! – parsimonde

+1

+1 매우 상세한 대답 – Clive

+0

건배, 그것이 당신을 위해 어떻게 잘되었는지 알려주세요. – vgardner

1

양식 제출 콜백 대신 hook_quiz_finished을 사용할 수도 있습니다. 퀴즈 모듈은 퀴즈 모듈을 사용하여 퀴즈가 끝날 때 이메일로 결과를 보내는 것과 같은 작업을 수행합니다. 당신은 당신이 규칙 http://www.yourwebsite.com/admin/config/workflow/rules로 이동하여 퀴즈 모듈은 설정에서 활성으로 이미 제공 한 규칙을 설정, 드루팔 7을 사용하여 여기에 종료하는 경우, 규칙에서 퀴즈 결과를 보내기 "라고

function mymodule_quiz_finished($quiz, $score, $session_data) { 
    //Sending e-mail. 
} 
0

퀴즈의 끝 ". 나는 퀴즈 설정 자체 내에서 이것을 할 수있는 능력을 찾을 수 없었다. 테스트를 거쳐 그 작업. 규칙 모듈 UI를 사용하여 편집 할 수 있는지 확인하십시오.