2009-11-16 97 views
0

我刚刚开始与Drupal,但我很笨,如何自定义“放置”所有的表单元素。我平时有很多的东西,这样其他花花公子的事情,所以布局和美观是必须的:Drupal自定义表单安排/安置

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

Drupal的渲染论坛,如问卷的默认方式(有很多的空间一个长横柱)对我而言是不可接受的。我一直在看Drupal论坛和其他几个人都有同样的问题。主要的做法似乎是返回一个长长的连接字符串的HTML和PHP控制 - 对于我的表单,这将是疯了!什么是最简单和最干净的解决方案?

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

回答

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

(如MAC提到),表单API确保表单元素都使用统一的格式输出:

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

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

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

+0

顺便说一句,学习Drupal的好地方是freenode IRC ..有一个名为#drupal-support的频道,对于这类问题来说非常棒。 – codeinthehole 2009-11-16 21:01:52