DrupalでForm APIボタンをテーマ設定するにはどうすればよいですか?
-
06-07-2019 - |
質問
DrupalのForm APIからのデフォルト出力は次のとおりです。
<input id="edit-submit" class="form-submit" type="submit" value="Save" name="op"/>
どのようにテーマを設定すれば取得できますか:
<button id="edit-submit" class="form-submit" type="submit">
<span>Save</span>
</button>
スライドドアCSSテクニックを使用できるように、内側のspanタグが必要です。
form.incからtheme_button($ element)をオーバーライドする必要があると思いますが、これまでの試みは失敗しました。
解決
プレーンなPHPテーマ(カメレオンなど)を使用している場合にform_fooをテーマ化する基本的な考え方は、theme_form_foo()という関数を記述することです。
特定のテーマ関数を宣言することで、このボタンなどの特定の要素にテーマを設定することもできます。 https://api.drupal.org/api/drupalをご覧ください。 /developer%21topics%21forms_api_reference.html/7
D6では、どちらの場合もテーマレジストリで関数を宣言する必要があります。そうしないと、Drupalはこのオーバーライドに気付かないでしょう。これはD5では必要ありません。 phptemplateを使用している場合は、PHPtemplateがフォームケース以外のレジストリを処理しますが、それも必要になります: http://drupal.org/node/132442#theme-registry
これに関するドキュメントはa.d.oで入手できます。 : http://api.drupal.org/api/file/developer/topics/forms_api.html
他のヒント
私は今、線に沿って機能を持っています
function mytheme_button($element) {
return "<button><span></span></button>"; # lots of code missing here for clarity
}
それを機能させるために、私は単純にキャッシュをクリアし、Drupalはそれを認識して自動的に使用しました。