Иногда простому друпалеру требуется создать форму, например как мне, собрать голоса посетителей по определённому вопросу. Все знают модуль WEBFORMS и лучше него пока ничего не придумали. Но в моём случае это не подходило. Форму нужно было сделать быстро, WEBFORMS среди установленных модулей не было, а до очередного подъёма новой версии могло пройти долго. В таком случае на помощь приходит смекалка.:
зы: можно попробовать экспериметировать дальше в сторону, например добавления hook_menu. Кто смелый!
<?php echo drupal_get_form('pit_survey1'); flood_register_event('survey_submit'); function pit_survey1($formstate) { ....... foreach ($questions as $quest=>$answ) { $form['q'.$i++] = array('#type'=>'radios','#options'=>$answ,'#title'=>$quest); } $form['email'] = array('#type'=>'textfield','#title'=>'Email Address','#prefix'=>'<div id="emailh">','#suffix'=>'</div>'); $form['email1'] = array('#type'=>'textfield','#title'=>'Email Address'); $form['agree'] = array('#type'=>'checkbox','#title'=>'I agree to use my email box for your selfish needs, Admin!.'); $form['submit'] = array('#type'=>'submit','#value'=>t('Submit your answer')); $form['#redirect'] = 'thankupage.html'; return $form; } function pit_survey1_validate($form,&$formstate) { if ($formstate['values']['email']) form_set_error('email',t('You was treated as a spam robot. Get out!')); if (!flood_is_allowed('survey_submit',10)) form_set_error(null,t('You seems to be a flooder. Get Out!')); } function pit_survey1_submit($form,&$formstate) { foreach ($formstate['values'] as $key=>$value) { if (preg_match('~^q\d+$',$key)) { $out[] = $form[$key]['#title'] . ":\t\t\t" . $form[$key]['#options'][$value]; } else { $out[] = $form[$key]['#title'] . ":\t\t\t" . $value; } } $body = join("\n",$out); $msg = array( 'id'=>'pit_survey', 'header'=>array('From'=>'survey@sdfsdfsfsd.dd'), 'to'=>'info+survey@sdfsdfds.dd', 'subject'=>'survey results', 'body'=>$body, ); if (drupal_mail_send($msg)) { //drupal_set_message(t('Your submission was sent. Thank you.')); закомменчено потому, что по сабмиту юзера переводят на страницу со спасибо. } }И чтобы уж нас совсем не нашли, эту систему сделаем блоком и поставим на страницу с предваряющим текстом.Хотя, конечно, можно и в сайд бар какой нибудь, очень эффектно. И QA с code review team не заметят. ;-)
зы: можно попробовать экспериметировать дальше в сторону, например добавления hook_menu. Кто смелый!