Темизация Webform

Очень просто решается задача с любой веб-формой на Drupal, так как её можно решить зачастую не прибегая к написанию кода. Самостоятельно при помощи конструктора добавляются поля формы, а затем выставляются их свойства.
Но как быть в случае сложной формы, в которой принципиальное значение имеет расположение полей ввода.
К примеру, это таблица, в ячейках которой имеются поля для ввода и, кроме того, при изменении полей должен выполняться наш javascript.

Требуется скопировать из папки (директории): sites/all/modules/webform/templates
файл webform-form.tpl.php
в папку (директорию): sites/all/themes/mytheme
где mytheme — это ваша тема.

Теперь переименуйте его в webform-form-[nid].tpl.php где [nid] — id ноды, в которой будет стилизована форма.

Всё что есть в этом файле оставляем как есть, лишь добавляем в верхнюю его часть до <?php ваш html-код, а в местах где нужно вставить поле ввода помещаем такую конструкцию: <?=drupal_render($form['submitted']['test1'])?>

где test1 — это название вашего поля

В случае с таблицей выглядит так:

  1. <table>
  2. 	<tbody>
  3. 		<tr>
  4. 			<td>
  5. 				Test#1</td>
  6. 			<td>
  7. 				Test#2</td>
  8. 			<td>
  9. 				<?=drupal_render($form['submitted']['test1'])?></td>
  10. 			<td>
  11. 				<?=drupal_render($form['submitted']['test2'])?></td>
  12. 		</tr>
  13. 	</tbody>
  14. </table>

Не забудьте очистить кэш Drupal-а .

Выполнение javascript по нажатию на поле ввода.
В функцию mymodule_form_webform_client_form_[nid]_alter, где mymodule — название вашего модуля, а [nid] — как обычно id ноды добавляю аттрибуты к полям:

  1. function mymodule_form_webform_client_form_34_alter(&$form, &$form_state, $form_id) {
  2.     $form["submitted"]["servers_quantity"]["#attributes"]['onkeyup']='alert("test");';
  3. }

Сработает javascript: alert(‘test’);

 

Источник статьи

Теги: