Темизация формы
05.09.2017Здравствуйте! Имеется готовая верстка веб формы. Создал веб форму через модуль webform. Решил темизировать веб форму, создал файл в свой теме: webform-form-37.tpl.php. Все отлично, шаблон подключается только для [id] формы. Но мучаюсь с тем что друпал добавляет свои классы в div-ы, которые обрамляют label и input. Поле вывожу через print drupal_render($form['submitted']['telefon']); В настройках поля не добавлял никаких классов. Вывожу форму через hook_form_alter() там тоже нет тех классов, которые добавляет друпал. Можно ли как то вывести только поле input либо как мне убрать те классы которые добавляет друпал?
Комментарии (8)
вам в помощь - theme_form_element
Спасибо! Посмотрел API этой функции, действительно это возможно то что мне нужно, но не совсем разобрался как переопределить с помощью этой функции конкретные элементы формы: каждое поле обрамляется таким образом http://pastenow.ru/21A1B. В API http://pastenow.ru/21A1I в массив $element имеются ключи, это я так понимаю атрибут name у input ? Пытаюсь просто переопределить значение ключа 'class' массива $attributes http://pastenow.ru/21A1Y но видимо что-то не так делаю. Чистка кеша не помогает.
В массив передается много чего:
Соответственно для переопределения, например текстового элемента формы (<input type="text">), необходимо осуществить проверку по ключу #type
Названия типов полей соответствует Form API
Спасибо за помощь. Но для формы созданной через webform почему-то функция не переопределяет параметры формы. Попробовал переопределить стандартную форму авторизации, все отработало отлично.
В итоге:
Когда переопределяю обертку для поля name =='submitted[telefon]'
из http://pastenow.ru/21A1B, то результат не изменяется. Кэш чищу, результат тот же что и на скриншоте http://pastenow.ru/21A1B
так если вам необходимо просто добавить классы к элементам формы, то не нужно переопределять вывод всех элементов формы, - достаточно воспользоваться hook_form_FORM_ID_alter();
Нет, мне как раз нужно не добавить, а удалить классы, которые добавляет drupal типа "form-item webform-component webform-component-textfield webform-component--telefon webform-container-inline". Через hook_form_alter у меня получилось добавить класс к обертке элемента:
В итоге:
Тут все норм, но все же нужно удалить эти классы: "form-item webform-component webform-component-textfield webform-component--telefon webform-container-inline"
Тогда вам только элементы формы темизировать, через хук указанный ранее и разбираться почему у вас он не срабатывает и посмотрите внутри модуля webform, - возможно там есть свои шаблоны, которые использует данный модуль - я так на вскидку уже не вспомню.
Блин друпал после битрикса такая жесть, слов просто нет :)