<divid="edit-textfield-wrapper"class="form-item"><labelfor="edit-textfield">textfield title: <spantitle="This field is required."class="form-required">*</span></label><inputtype="text"class="form-text required"value=""size="60"id="edit-textfield"name="textfield"maxlength="8"></div>
Ich bin jedoch bereit, den Container divund labelvon einigen meiner Felder so etwas zu entfernen :
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.
kiamlaluno, zunächst einmal danke für die Antwort, aber ist es möglich, diese Funktionen mit einem Kernthema (zB Girlande) zu verwenden?
acm
@andre matos Für ein Drupal-Kernthema sollten Sie ein benutzerdefiniertes Modul implementieren, das die von mir beschriebenen Hook-Funktionen implementiert. Dies ist die einzige Möglichkeit, ein Modul zu ändern, ohne den Code eines Themas zu ändern. Dies sollte jedes Mal geändert werden, wenn Sie Drupal aktualisieren. Drupal zu aktualisieren, aber nicht dieses Thema, wäre keine gute Idee. Es würde Dinge geben, die im Modul geändert werden, und Sie würden diese Änderungen nicht erhalten.
Kiamlaluno
ist es drupal 7 gültig? Ich denke, es ist anders, indem Sie hook_element_info_alter
khaled_webdev
0
Soweit ich weiß, ist es nicht möglich, den <div>Wrapper zu entfernen , wenn Sie das Thema nicht ändern.
Soweit ich weiß, ist es nicht möglich, den
<div>
Wrapper zu entfernen , wenn Sie das Thema nicht ändern.quelle