Bạn chỉ cần thực hiện hook_theme_registry_alter () để thay đổi chức năng chủ đề được gọi khi theme('form_element')
được gọi; thông thường hàm được gọi là 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";
}
}
Sử dụng mã của theme_form_element()
, bạn có thể viết chức năng chủ đề của riêng mình và xóa các thẻ HTML mà bạn không muốn. Hãy nhớ rằng theme('form_element')
được gọi cho mọi đầu ra phần tử biểu mẫu với API biểu mẫu; nếu bạn muốn thay đổi đầu ra HTML của chỉ một phần tử biểu mẫu, thì bạn cần kiểm tra giá trị #type.
themeSpherefield () là chức năng chủ đề tạo chủ đề cho trường văn bản, nhưng nó không xuất ra nhãn hoặc gói <div>
, đã được xuất ra bởi theme_form_element()
.
Ngoài ra, điều này có thể được thực hiện trong một chủ đề ghi đè theme_form_element()
.
Cách tiếp cận nào bạn nên sử dụng tùy thuộc vào việc bạn cần thay đổi đầu ra trong một chủ đề cụ thể hay cho tất cả các chủ đề được bật trong trang web Drupal của bạn; trong trường hợp sau, bạn cần thực hiện các hook mà tôi đã báo cáo trong một mô-đun.