1

私はこの記事のアイデアに興味をそそられます: "Mad Libs" スタイル フォームはコンバージョンを 25 ~ 40% 増加させます。いくつかの Drupal サイトで登録フォームの代わりにそのようなフォームをテストしたいと思います。しかし、Drupal のフォーム API を使用して、このような型破りなフォームにアプローチする方法がわかりません。

hook_form_alter を使用して既存の user_register フォームを変更することは実際的でしょうか? より良い方法はありますか?

理想的には、任意のフォームの各フォーム フィールドをトークン化し、フィールドが表示されるトークン ID を含む「ストーリー」テキストを入力できるようにしたいと考えています。フォームレンダリングプロセスのどこでそれを行うのかわかりませんか?

4

1 に答える 1

2

面白い。通常の drupal フォームを構築するのと同じようにフォームを構築する必要がありますが、その中にフィールドがあるだけです。あなたの物語は、フォームのテーマに使用する必要があるテンプレート ファイルに入れます。テンプレートを使用してフォームのテーマを設定するのは非常に簡単です。たとえば、_theme フックで、フォームをテンプレート ファイルにバインドします。


testmodule_theme()
{
  return array(
        "user_aboutme_form" => array(
            "arguments" => array( "form" => NULL ),
            'path' => $path_to_template_folder,
            "template" => "user-aboutme-form",
            )
);
}
その間にテーマキャッシュをクリアしてください。テンプレート ファイルでは、フォーム配列全体を取得し、drupal_render 関数を使用して個々の要素をレンダリングできます。カスタム スタイルを使用すると、上記の Web サイトと同じルック アンド フィールを得ることができます。ここでの唯一の問題は、個々のフォーム要素のレンダリングが完了した後にルート フォーム要素、つまり drupal_render($form) をレンダリングすることを確認することです。これにより、フォーム トークン値がフォームに挿入されます。そうしないと、フォームが機能しません。

于 2011-01-27T07:17:53.607 に答える