2009-11-11 8 views
1

Я пытаюсь создать форму в drupal 6, которая имеет несколько элементов в одной строке. Более конкретно, я хочу, чтобы была правильная аффилированная форма, в которой есть текстовое поле, раскрывающийся список и кнопка на одной строке.Drupal 6 Формы форматирования

Я знаю, как создавать предметы, но drupal имеет тенденцию размещать их на отдельных строках. Как положить его на одну строку?

Thanks

ответ

4

Чтобы разместить их, вам нужно будет использовать CSS. Каждый из них должен быть в своем собственном div, поэтому его не должно быть слишком сложно.

P.S. Жесткое кодирование, которое должно быть в одной строке в вашей разметке, не является хорошей идеей. Вы всегда должны делать макет и позиционирование в своем CSS и оставлять разметку только для вывода элементов на страницу.

+1

+1 - CSS - это путь сюда. –

1

Конечно, я согласен с предыдущим ответом: CSS - это путь!. Реальный вопрос: где вы должны поместить биты CSS?

Я бы настоятельно предложил разместить его в отдельном файле .css, так как это облегчит жизнь другим людям, участвующим в проекте, и сохранит переносимый код в другой теме, когда/если время придет рестайлинг. Это довольно легко сделать, поскольку каждый из элементов генерируется с его собственной упаковкой div. Функция, которую вы должны использовать, чтобы сообщить drupal использовать данный .css-файл (если вы не добавляете свои стили в существующую), является drupal_add_css().

Тем не менее, если вы все еще хотите/необходимость/необходимо настроить поведение, которое вы упомянули из кода порождающей формы, я хотел бы предложить вам использовать #prefix и #suffix свойства $form массива. Они являются общими для всех элементов формы и позволяют вводить HTML непосредственно в визуализированную форму (префикс перед данным элементом, суффикс после него, конечно). Таким образом, вы можете разместить в том месте, где вам нужны оба элемента html, такие как <div> и <span> и CSS с помощью тега <style type="text/css">.

Я хочу подчеркнуть, что первое решение (внешний файл CSS) намного лучше.

Надеюсь, это поможет!

0

API-интерфейс Drupal Forms обычно выводит каждый элемент с помощью элемента div оболочки, заданного с именем класса «form-item».

например.

<div class="form-item"> 

    <label> ... </label> 
    <input> ... </input> 
    <div class="description"> ...</div> 

</div> 

Чтобы получить три элемента, чтобы сидеть рядом друг с другом, вам необходимо установить ширину (так что элемент достаточно узкий, чтобы поместиться на одной линии), и применить «поплавок: левой;» используя div.form-item как ваш селектор CSS.

Для обеспечения правильной очистки элементов применяйте «переполнение: скрыто»; к родительскому элементу, который содержит три элемента формы.

1

Хотя я согласен с тем, что часто CSS - это правильный способ оформления темы, иногда вам нужны более сильные методы. Я написал статью о theming complex forms with tabular information, как список людей с полями для их имен и SSN, все напечатанные в одной строке.

Смежные вопросы