Drupal自定义表格安排/安置

时间:2009-11-16 19:57:02

标签: forms drupal styling

我刚刚开始使用Drupal,但我很不知道如何自定义“放置”所有表单元素。我通常有很多东西,比如这个老兄的东西,所以放置和美学是必须的:

alt text http://img20.imageshack.us/img20/3103/55744697.jpg

Drupal提供论坛的默认方式,如问卷调查(一个长水平列,有很多空格)对我来说是不可接受的。我一直在环顾Drupal论坛,其他几个人都有同样的问题。主要方法似乎是返回一个长连接的html和php控件字符串 - 对于我的表单,这将是疯了!什么是最简单,最干净的解决方案?

有没有办法,比如在ASP.NET中使用page.aspx / page.aspx.cs,所有标记和控件都在一个文件中,代码在另一个文件中?或者也许我可以将所有表单标记放在一个只有占位符的文件中,并且在代码中,它告诉Drupal将每个表单元素呈现在它的占位符中?

2 个答案:

答案 0 :(得分:2)

我不太了解windows,所以我无法真正了解您所做的.NET技术示例,但是根据我的理解,您希望将表单的每个字段作为变量传递给页面模板,然后能够将它们放在PHP模板中......

......如果是这种情况,那么Drupal不会表现得那样,或者 - 更确切地说 - 它的行为与形式不同。表单以HTML格式到达页面模板,您必须根据需要使用CSS格式化它们。 HTML结构很好,每个字段都有自己的<div>和一些方便的类,使得它们更容易。如果这还不够,为了满足您的需求,您可以事先用一系列钩子干预生成表单的过程。

确实,Drupal有一个非常具体的Form API (or FAPI)来处理表单创建,操作,验证和提交。对于新手而言,这可能听起来太复杂了,但FAPI确实是关键 - Drupal高度模块化设计的元素。

你可以从本周早些时候看看这个answer,因为这可能对你了解FAPI系统的核心工作方式有所帮助。如果您是Drupal世界的新手,我建议您花一些时间阅读文档,尤其是theming guidehooking system。 Drupal需要对其内部工作有一定的了解才能成为一个灵活的开发平台,但“学习”投资的结果是 - IMO - 值得努力。

另一方面说明:如果您正在努力从头开始学习表单,您可能会对webform module感兴趣(不适用于所有需求,但是非常常用)工具)。

HTH,欢迎来到Drupal复杂但有益的世界! :)

答案 1 :(得分:1)

(正如mac提到的),Form API确保使用一致的格式输出表单元素:

<div id="ELEMENT-ID" class="form-item">
  <label> ... </label>
  <input type="INPUT TYPE" />
  <div class="description"> ... </div>
</div>

..所以如果你想创建一个特定的布局,通常只是应用相关CSS的情况。

您可以通过限制'.form-item'类的宽度并应用'float:left'来实现上述示例中的布局。不符合规则的元素总是可以单独设计。