0

Drupal を使い始めたばかりですが、すべてのフォーム要素をカスタマイズして「配置」する方法がまったくわかりません。私は通常、この他の男のもののようにたくさんのものを持っているので、配置と美学は必須です:

代替テキスト http://img20.imageshack.us/img20/3103/55744697.jpg

アンケートのようなフォーラムを表示する Drupal のデフォルトの方法 (多くのスペースを含む 1 つの長い水平列) は、私の目的には受け入れられません。私は Drupal フォーラムを見回しており、他の何人かの人々がすべて同じ問題を抱えています。主なアプローチは、html と php コントロールの長い連結文字列を返すことのようです - 私のフォームでは、それは正気ではありません! これに対する最も簡単でクリーンな解決策は何ですか?

ASP.NET の page.aspx/page.aspx.cs のように、すべてのマークアップとコントロールが 1 つのファイルにあり、コードが別のファイルにある方法はありますか? それとも、すべてのフォーム マークアップをプレースホルダーだけで 1 つのファイルに入れ、コード内で Drupal に各フォーム要素をそのプレースホルダーにレンダリングするように指示することができますか?

4

2 に答える 2

2

私はウィンドウをあまり知らないので、あなたが作成した.NETテクノロジーの例とはあまり関係がありませんが、私が理解していることとして、フォームの各フィールドが変数としてページテンプレートに渡され、その後、それらをPHPテンプレートに配置することができます...

...この場合、Drupalはそのように動作しません。より正確には、フォームではそのように動作しません。フォームはHTMLとしてページテンプレートに届きます。必要に応じてCSSを使用してフォーマットする必要があります。HTMLは非常によく構造化されており、各フィールドは独自のもの<div>であり、テーマ設定を容易にするいくつかの便利なクラスがあります。それでも不十分な場合は、ニーズを満たすために、一連のフックを使用して事前にフォームを生成するプロセスに介入できます。

実際、Drupalには、フォームの作成、操作、検証、および送信を処理するための非常に特殊なフォームAPI(またはFAPI)があります。初心者には複雑すぎるように聞こえるかもしれませんが、FAPIは確かにDrupalの高度にモジュール化された設計の重要な要素です。

FAPIシステムがそのコアでどのように機能するかを理解するのに役立つかもしれないので、今週初めからこの回答を見ることができます。Drupalの世界に不慣れな方は、ドキュメント、特にテーマガイドフックシステムを読むのに少し時間がかかることをお勧めします。Drupalは、開発のためのアジャイルプラットフォームになるために、内部の仕組みについてかなりの知識を持っている必要がありますが、「学習」への投資の結果は、IMOであり、努力する価値があります。

別の注意点:フォームを最初から始めるのに苦労している場合は、Webフォームモジュールを確認することをお勧めします(すべてのニーズに対応できるわけではありませんが、かなり一般的に使用されるツールです)。

HTH、そして複雑でありながらやりがいのあるDrupalの世界へようこそ!:)

于 2009-11-16T20:38:32.453 に答える
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」を適用することで実現できます。ルールに適合しない要素は、常に個別にスタイルを設定できます。

于 2009-11-16T20:59:53.987 に答える