2009-11-16 96 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