Добавляем placeholder в формы webforms drupal 7 [html 5]

Что такое placeholder? єто новый атрибут поля для ввода  в html 5. Очень удобная штука однако.


Это поле имеет именно такой атрибут. 
В html это выглядит вот так:
<input type="text" class="form-text required" maxlength="128" size="60" value="" name="submitted[pole1]" id="edit-submitted-pole1" placeholder="Поле1">
Удобная штука. Теперь не нужно писать JavaScript.. ну вернее не нужно будет лет через 5)) 
Итак. Первым делом оприделимся, что мы будем менять способ вывода полей в модуле webform
Все "телодвижения" будут проходить в пределах файла webform-form.tpl.php, который следует скопировать из папки дополнения (чтобы весь не переписывать) в папку с вашей темой.
Приступим к редактированию. В файле есть несколько переменных, которые служат для вывода данных. Мы будем работать с $form['submitted'].
Изменим все поля c типом "textfield".
Добавим в самый верх:
foreach ($form["submitted"] as $key => $value) {
    if ("textfield" == $value["#type"]) {
        $form["submitted"][$key]['#attributes']["placeholder"] = t($value["#title"]);  // добавляем атрибут
       unset( $form["submitted"][$key]['#title']);  // скрываем заголовок
    } 
}
Для каждого поля в форме с типом textfield  устанавливаем атрибут со значением заголовка поля, после чего сам заголовок скрываем за не недобностью.
Остальные конструкции не трогаем. 
Получится должно примерно вот так: http://cyberpanks.ru/cont/obratnaya-svyaz.html

Просмотров:   7728

Комментарии

чт, 11/22/2012 - 14:11

Drupal 7.10

Webform 7.x 3.15

чт, 11/22/2012 - 14:11

Странно. Только что поставил тоже что и у вас. У меня всё работает и никаких ошибок. Возможно вы уже изменяли $value и какимто образом его затёрли. Попробуйте использовать var_dump($value) и print_r($value) для выявления ошибки.

 

чт, 11/22/2012 - 14:11

А нет! Есть таки. Только это уведомление))
лечить так:

    if ("textfield" == @$value["#type"])

чт, 11/22/2012 - 14:11

Спасибо, помогло

чт, 11/22/2012 - 14:11

А как добавить класс для  кнопки? Через var_dump информацию про кнопку не нашел.

p.s. Drupal 7

 

чт, 11/22/2012 - 14:11

На сайте появляется ошибка

Notice: Undefined index: #type в функции include()

в строке if ("textfield" == $value["#type"]) {

 

чт, 05/28/2015 - 19:50
PVasili

У автора логическая ошибка. Среди ключей может и не быть #type, поэтому добавить перед ней ещё одну проверку:

if (!empty($value["#type"])) {
...
}

чт, 11/22/2012 - 14:11

Какая у вас версия drupal и webform ?

 

чт, 11/22/2012 - 14:11

все нашла)

чт, 11/22/2012 - 14:11

А как сделать тоже самое для поля email?

чт, 11/22/2012 - 14:11

А как оно там выводит email ? разве не текстовым полем?

 

чт, 11/22/2012 - 14:11

да-да ... А как сделать тоже самое для поля email?

если просто заменить "textfield" на "email" - не работает :(

чт, 11/22/2012 - 14:11

В експлоере даный код не работает!

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!