0

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

替代文字 http://img20.imageshack.us/img20/3103/55744697.jpg

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

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

4

2 回答 2

2

我不太了解 Windows,所以我不能真正与您制作的 .NET 技术示例相关,但据我了解,您希望将表单的每个字段作为变量传递到页面模板中,然后能够将它们放在 PHP 模板中...

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

实际上 Drupal 有一个非常特定的表单 API(或 FAPI)来处理表单创建、操作、验证和提交。对于新手来说可能听起来太复杂了,但 FAPI 确实是 Drupal 高度模块化设计的关键元素。

您可能会从本周早些时候查看此答案,因为这可能有助于您了解 FAPI 系统的核心工作原理。如果您是 Drupal 世界的新手,我建议您花一些时间阅读文档,尤其是主题指南挂钩系统。Drupal 需要对其内部运作有相当多的了解才能成为一个敏捷的开发平台,但是投资于“学习”的结果是——IMO——非常值得付出努力。

另一方面:如果您正在努力从头开始使用表单,您可能有兴趣查看webform 模块(不能满足所有需求,但它是一个非常常用的工具)。

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

于 2009-11-16T20:38:32.453 回答
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”来实现上例中的布局。不符合规则的元素始终可以单独设置样式。

于 2009-11-16T20:59:53.987 回答