З темізаціі форм в drupal не надто все добре. Наприклад, розташувати елементи якоїсь форми в таблиці для зручності тут не можна. Вірніше можна звичайно використовуючи в оголошеня форми або в hook для неї параметри #suffix і #prefix, але це дуже незручно. Тому краще, звичайно, відразу верстати в загальному для drupal стилі. Нижче я покажу як приблизно це все виглядає.
У загальному випадку html форми виглядає приблизно так:
Тобто всі елементи форми (крім кнопок) обрамляются дивами з класом form-item. Нижче наводжу приклади таких елементів форми.
Рядок для введення тексту. ()
Тут і далі id для елементів форми унікальний. Тому якщо для якогось елементу форми з будь-якого треба прописати свої специфічні стилі, то можна для цього елемента додати свій унікальний id. А програміст в стилях вже замінить його на потрібний id. Причому це стосується і id для div.form-item і для самого елемента форми (input, select, textarea ...)
Випадаючий список (
Складний рядок (
Галочка (checkbox)
Перемикачі (radio)
Перемикач з описом:
Кнопки, на відміну від інших елементів форми не огбрамляются дивом з класом form-item, а просто йдуть в кінці форми пачкою. Ось наприклад дві кнопочки на формі:
Поле обов'язкове для заповнення
Тут все просто. У label додається зірочка загорнута в span.form-required І до самого елементу форми (input, select, textarea) додається клас .required
І ось як виглядає обов'язкове поле для введення рядка тексту:
опис поля
Часто в формах під полем пишуть якийсь пояснювальний текст. У верстці це виглядає як додавання діва з класом description в кінець .form-item
Ось приклад обов'язкового для заповнення інпут з пояснювальним текстом:
висновок
Я розповів основні моменти. У разі якщо на сайті є і великі складні форми з купою полів, то до цього матеріалу напевно варто було б додати опис ще й про fieldset. Якщо коротко, то: група полів форми може бути ще обрамлена в fieldset.
Звичайно прогрммно можна перевизначити функції тим для всіх елементів форми і малювати їх по іншому, але навіщо придумувати велосипед? Краще коли верстальник дотримується цих вимог і все. А у випадках, коли ну ніяк не виходить заверстані форму саме з цього опису, то я кажу верстальницею верстати як виходить, а потім вже сам втачівают цю справу під drupal. Ну наприклад якщо дизайнер намалював в макеті так, що опис елемента форми (наприклад textarea) йде до самої textarea. Тоді ми знаходимо функцію theme_textarea. Копіюємо її в файл template.php нашої теми і перейменовуємо назву функції в phptemplate_textarea або ж mytheme_textarea. Переміщаємо в ній висновок опису вгору і все. Після цього треба оновити реєстр тим і готово. Але це вже до самої верстці не відноситься, а вже більше до програмування під drupal і роботі з form api.
Я пробував з Артістір працювати ... Ясно що ручна робота якісніше. Спробую. Дякуємо
ну це так, але для своїх деяких дрібних сайтів я використовую артістер)
а так да, ручна рулить. Я ось якраз сьогодні почав робити свою заготовити теми на базі zen, але не як дочірню від zen, а окремо. Трохи пізніше поділюся їй коли потестірую і допрацюю на парі проектів)
Дивний рада перевизначати theme_textarea в темі. Ця функція для всіх Текстар на сайті. Її перевизначити - для всіх зміниться. А треба тільки в однієї. Для цього використовується св-ва [ '#theme'] Текстар
я там мав на увазі глобальний випадок, коли необхідно на всьому сайті поміняти висновок якогось елементу форми.
Щодо властивості [ '#theme'] думаю Ви маєте рацію, хоча мені не доводилося користуватися цією властивістю на практиці.