が呼び出されたときに呼び出されるテーマ関数を変更するには、hook_theme_registry_alter()を実装するだけですtheme('form_element')
。通常、呼び出されるテーマ関数はtheme_form_element()です。
function theme_form_element($element, $value) {
// This is also used in the installer, pre-database setup.
$t = get_t();
$output = '<div class="form-item"';
if (!empty($element['#id'])) {
$output .= ' id="' . $element['#id'] . '-wrapper"';
}
$output .= ">\n";
$required = !empty($element['#required']) ? '<span class="form-required" title="' . $t('This field is required.') . '">*</span>' : '';
if (!empty($element['#title'])) {
$title = $element['#title'];
if (!empty($element['#id'])) {
$output .= ' <label for="' . $element['#id'] . '">' . $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) . "</label>\n";
}
else {
$output .= ' <label>' . $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) . "</label>\n";
}
}
$output .= " $value\n";
if (!empty($element['#description'])) {
$output .= ' <div class="description">' . $element['#description'] . "</div>\n";
}
$output .= "</div>\n";
return $output;
}
function mymodule_theme_registry_alter(&$theme_registry) {
if (isset($theme_registry['form_element']) {
$theme_registry['form_element']['function'] = "theme_mymodule_form_element";
}
}
のコードを使用してtheme_form_element()
、独自のテーマ関数を記述し、不要なHTMLタグを削除できます。theme('form_element')
フォームAPIですべてのフォーム要素出力に対して呼び出されることを覚えておいてください。form要素のみのHTML出力を変更する場合は、#type値を確認する必要があります。
theme_textfield()は、テキストフィールドにテーマを設定するテーマ関数です<div>
が、すでに出力されているラベルやラッピングは出力しませんtheme_form_element()
。
または、これはをオーバーライドするテーマで行うこともできますtheme_form_element()
。
どちらのアプローチを使用するかは、特定のテーマの出力を変更する必要があるか、Drupalサイトで有効になっているすべてのテーマの出力を変更する必要があるかによって異なります。後者の場合、モジュールで報告したフックを実装する必要があります。