質問: ビューの公開フォームにテーマを設定する方法は? いくつかの公開フィルターを使用してビューを作成しましたが、見た目はかなり醜いです。テーマを改善したいのですが、フィールドセット全体をラップしたり、他の要素をグループ化したり(公開された入力と更新された入力のペアリングなど)を含めますが、どうすればよいかわかりません。私はフォームをvar_dumpしようとしましたが、それは永遠に続くようで、ブラウザがロックしてしまうので、そのようにフォームについて何も簡単に学ぶことができません。また、フォームをフィールドセットの子として別のフォームに配置しようとしましたが、すべてのフォームid情報などを取得するのに問題がありました(ただし、フィールドセットのスタイルは取得しました)。誰かがポインタを持っていますか?更新:テンプレートをモジュールからサイトのテーマディレクトリにコピーして、開始しました。<fieldset> <legend>filters</legend> <div class="views-exposed-form"> <div class="views-exposed-widgets clear-block"> <?php foreach($widgets as $id => $widget): ?> <div class="views-exposed-widget"> <?php if (!empty($widget->label)): ?> <label for="<?php print $widget->id; ?>"> <?php print $widget->label; ?> </label> <?php endif; ?> <?php if (!empty($widget->operator)): ?> <div class="views-operator"> <?php print $widget->operator; ?> </div> <?php endif; ?> <div class="views-widget"> <?php print $widget->widget; ?> </div> </div> <?php endforeach; ?> <div class="views-exposed-widget"> <?php print $button ?> </div> </div> </div> </fieldset> 日付フィールドをペアにする方法を理解できないようです-ウィジェットのプロパティを何らかの方法で変更してhtmlでラップできるようにする必要があります(#prefixと#suffixが$widget->widgetに追加されているため、hook_form_alterを使用しても機能しません彼らは出力を壊す)
回答: _form['#theme']_アイテムの内容を確認する必要があります。これを行うためのより良い方法(var_dump()よりも良い)はdsm($form)またはkpr($form)を使用することです。これらの関数は、develモジュールをインストールした後で使用できます(- http://drupal.org/project/devel )。 _form['#theme']_は、約7要素の配列である必要があります。これらの要素は、このフォームがレンダリングされているときに呼び出されるテーマフックの名前です。それらを使用して、フォームにテーマを設定する独自の方法を実装できます。アイテムの1つは_views_exposed_form__view_name__display_id_と呼ばれます。あなたのモジュール(もしあれば)にhook_theme()の実装があるはずです_function mymodule_theme($existing, $type, $theme, $path) { return array( 'views_exposed_form__view_name__display_id' => array( 'function' => 'my_exposed_form_theme_function', 'render element' => 'form', ) ); } // somwhere later in code function my_exposed_form_theme_function($vaiables) { //$vaiables['form'] contains a form array //to display a form element call drupal_render($vaiables['form']['some element']) //don't forget to call drupal_render($form) //after you are done with rendering individual elements // //you can use template_preprocess_views_exposed_form() from // views/theme/theme.inc as an example return "concatenated results of multiple drupal_render() calls"; } _