2


1

内容(中央)部分にLEFTとRESULTSの検索フォームでサイトを構築したい。

私はモジュールの作り方を知っています。 しかし、どのように私は彼らの場所を割り当てるのですか? または、検索フォームをブロックとして配置し、それらをbuild / block /のLEFTに代入する必要があります。

検索フォームには3つのテキストボックスがあり、どれも必須ではありません。 "名前"、 "姓"、 "年齢"

どのユーザータイプを入力しても、テンプレートのCENTER部分に結果を表示したいのですが。

明らかにformは変数を `$ _POST`として送ります

しかし、結果ページに5つ以上の結果がある場合は、ページ付けを追加します。

だから私はどのように私は ``のためのリンクを構築するべきです

"name、surname、age"と答えてページネーションを使うときには、/ search // Smith / 24やsearch / John / 15、あるいはsearch / John / Smith / 40のようなcleanURLを使いたい/ search / john / smith / 40 / page / 3を追加することによって?

2 回答


5


さて、最初は、http://drupal.org/project/views [views]ベースの解決策を最初に検討することをお勧めします。これにより、カスタムコーディングを大幅に節約できます。 しかし、ビューベースのソリューションで必要なものの80%しか提供されず、不足している20%のビューを追加するほうが、最初からカスタムソリューションよりも作業が多くなることがよくあります。フィルターを露出させ、それが収まるかどうかを確認します。

そうでない場合は、カスタムソリューションを開始するためのヒントがいくつかあります。

  • 検索フォームに関しては、ブロックは正しい道です。 作成方法については hook_block()をご覧ください(少なくとも操作 'list’と 'view’を実装する必要があります)このため)

  • あなたが言ったように配置はビルド/ブロックを介して起こるでしょう

  • 操作 'view’で、あなたはあなたのフォームを作るでしょう。 forms APIクイックスタートとhttp://api.drupal.org/api/drupal/をご覧ください。開発者 - トピック - Drupalにおけるフォーム処理のためのforms_api_reference.html / 6 [リファレンス](あなた自身のフォームを手動で構築しないでください - DrupalフォームAPIは少し慣れるだけでよく、将来あなたの時間を節約するでしょう) )

  • 結果ページのために、あなたはあなたが望むパスのためにあなた自身のページコールバック関数を登録するでしょう、これについては hook_menu()を見てください。 ** *警告:*あなたが提案したパス 'search / …​'は検索パスに組み込まれたDrupalsと衝突するでしょうから、あなたは少しバリエーションを選ぶことを考えるかもしれません(例えば 「search / people / …​」または「peoplesearch /」など)

  • Drupalでリンクを作成するには、 l()関数を使用してください。

  • ページネーションには theme_pagerを使うことができますが、これは実際の検索クエリがどれほど単純になるかによって異なります。クエリを作成するためのクエリ文字列パラメータ


1


あなたはこれをあなたが説明するようにすることができます。 urlを構築するにはhook_menuを使用し、検索フォームブロックを作成するにはhook_blockを使用してからリンクを作成するにはl()関数を使用する必要があります。 しかしながら、あなた自身のカスタムモジュールの中でこれらすべてをすることは多くの時間を必要とするでしょう。 検索などのための問い合わせをする 代わりに、私があなたにすることをお勧めしたいのは、これすべてのためにviewsモジュールを使うことでしょう。 これを使えば、検索フォームを簡単に作成できますが、公開されたフィルタを使用して、ページとそのブロックを作成し、ページ付けをして、すべてクリックするだけで済みます。 ですから、あなたが良いphp開発者であっても、この場合に行うべき最善のことはDrupalが提供するものをviewsモジュールの形で単純に使用して、たくさんのコードを書く代わりにAIで設定することです。 もしあなたがあなた自身のモジュールを作りたいのであれば、あなたはdrupalコアのためのドキュメンテーションを見つけることができるapi.drupal.orgでそれらの機能を見てください。