[Решено]Темизация Webform

Главные вкладки

Аватар пользователя kopernik21187 kopernik21187 19 сентября 2012 в 20:39

Всем привет!Вопрос такой. У меня есть webform и мне нужно ее темизировать...Скачал файл webform-form.tpl.php в папку с темой и обозвал его webform-form-[id моей ноды].tpl.php. У меня уже есть кусок html-кода, я его туда вставил, теперь нужно просто по местам расставить нужные поля. Пытаюсь вставить как написано тут. Например, у меня есть поле "Ф.И.О" его ключ fio. И я в нужное вместо вставляю

<div class="input"><?=drupal_render($form['submitted']['fio']); ?></div>

но почему-то нужный input не вставляется. Подскажите, пожалуйста, что я неправильно делаю?

Комментарии

Аватар пользователя kopernik21187 kopernik21187 19 сентября 2012 в 22:37

ну на странице по ссылке так указано...тем более что = в данном случае то же что и print, а перед drupal_render он нужен
строки

<?php
// Print out the main part of the form.
  // Feel free to break this up and move the pieces within the array.
  
print drupal_render($form['submitted']);

  

// Always print out the entire $form. This renders the remaining pieces of the
  // form that haven't yet been rendered above.
  
print drupal_render_children($form);
  
?>

выводят всю форму, а отдельные поля формы почему то не выводятся...в самом массиве $form['submitted']['fio'] данные о поле есть print_r проверял...

Аватар пользователя Worth Worth 19 сентября 2012 в 22:53

drupal_render_children($form) отмечает все элементы как отрендеренные, соответсвенно второй раз, когда вы вызываете рендер отдельных элементов, друпал видет что элемент уже отрендерен и пропускает его

Аватар пользователя kopernik21187 kopernik21187 19 сентября 2012 в 23:04

ООО...а вот сейчас закомментил print drupal_render($form['submitted']) и вывелся input)) Причем вывелся вместе с лэйблом "Ф.И.О" а как мне вывести без лэйбла?чисто input?

Аватар пользователя divined divined 19 сентября 2012 в 23:20

Или скрыть лэйбл, или добавит в массив поля формы settings со значением array('lable'=>false). Не помню точно, завтра напишу.

Аватар пользователя kopernik21187 kopernik21187 20 сентября 2012 в 2:23

Спасибо огромное!!!Ваши советы реально помогли!
2 divined скрыл лэйбл...
2 Worth действительно нужно было <?php <?  print drupal_render_children($form); ?> переместить в самый низ...а я что то не догадался и не понял этого...может потому что поздно уже и голова не варит...

Аватар пользователя kopernik21187 kopernik21187 21 сентября 2012 в 0:23

Все отлично!Таким образом даже CAPTCHA успешно интегрировалась. Остался самый последний вопрос, чтобы уже поставить РЕШЕНО. Вот есть шаблон webform-confirmation.tpl.php - здесь настраивается вывод в случае успешного отправления письма. А где шаблон в котором настраивается вывод информации в случае ошибки, я понимаю что данные об ошибке заносятся в переменную $messages, я ее и вывожу, но вместе с тем также выводится и сама webform в область контента , а мне этого не нужно, так как webform у меня в отдельном блоке и получается форма дублируется 2 раза: в блоке и в контенте. Мне нужно настроить так чтобы если происходит ошибка выводилась только переменная $messages а форма нет. Это с помощью какого шаблона настроить? я что то не понял, подскажите плиз!!

Аватар пользователя divined divined 20 сентября 2012 в 19:52

Eto vozmojno s pomosh'u AJAX validacii.

Est' vrode modul "webform ajax" on pomojet vivodit' oshibki srazu v formu.

Forma pri submite iz blocka peredaet znachenia na stranicu s formoi i uje tam pokazivaet oshibki.
Webform AJAX pomojet otpravlyat' dannie napryamu'u.

Ili est' modul AJAX VALIDATION, no ego nado propisivat' v javascript faile.

Аватар пользователя bay bay 22 ноября 2013 в 19:37

Насколько понял, таким способом можно добавит обертку любому элементу формы.
А как просто добавить css-класс к инпутам?