Sie müssen nur hook_theme_registry_alter () implementieren, um die Themenfunktion zu ändern, die beim Aufrufentheme('form_element')
aufgerufen wird. Normalerweise lautet die aufgerufene Themenfunktion 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";
}
}
Mit dem Code von theme_form_element()
können Sie Ihre eigene Themenfunktion schreiben und die nicht gewünschten HTML-Tags entfernen. Beachten Sie, dass dies theme('form_element')
für jede Formularelementausgabe mit der Formular-API aufgerufen wird. Wenn Sie die HTML-Ausgabe nur eines Formularelements ändern möchten, müssen Sie den Wert #type überprüfen.
theme_textfield () ist die Themenfunktion , die ein Textfeld thematisiert, aber weder die Beschriftung noch die Umhüllung <div>
ausgibt, die bereits von ausgegeben wird theme_form_element()
.
Alternativ kann dies in einem Thema erfolgen, das überschreibt theme_form_element()
.
Welchen Ansatz Sie verwenden sollten, hängt davon ab, ob Sie die Ausgabe in einem bestimmten Thema oder für alle auf Ihrer Drupal-Site aktivierten Themen ändern müssen. Im letzteren Fall müssen Sie die Hooks implementieren, die ich in einem Modul gemeldet habe.