it-swarm.com.de

Wie kann ich verhindern, dass die Größe von Textbereichen geändert wird?

Textbereiche in Drupal 7 können standardmäßig in der Größe geändert werden. Ich möchte dies deaktivieren, aber als ich einen Textbereich mit Firebug überprüft habe, konnte ich das CSS nicht finden, mit dem die Größe geändert werden konnte.

Wie kann ich verhindern, dass die Größe von Textbereichen geändert wird?

8
Patrick Kenny

Es ist JS, das die Größe der Textbereiche ändert, nicht CSS. Ich denke, der einfachste Weg, dieses Verhalten für alle Textbereiche zu deaktivieren, besteht darin, THEMENAME_textarea() in Ihrem Thema zu implementieren und dort zu entfernen:

function THEMENAME_textarea($element) {
  $element['element']['#resizable'] = false ;
  return theme_textarea($element) ;
}
17
Clive

Wenn Sie nur CSS3-Kompatibilität benötigen, können Sie das folgende CSS verwenden:

textarea { resize: none; }

Wenn Sie die Größenänderung für einen bestimmten Textbereich deaktivieren müssen, fügen Sie die ID dieses Textbereichs hinzu:

.edit-body-und-0-value { resize:none }
4
Druvision

Das Überschreiben des Themas ist eine kurzfristige Änderung, auf die die Module nicht reagieren können.

Es ist genauso einfach, dies über ein Modul und ein #process Ruf zurück:

/**
 * Implements hook_element_info_alter()
 */
function custom_element_info_alter(&$types) {
  $types['textarea']['#process'][] = 'custom_process_textarea';
}

/**
 * A custom callback to disable "grippies" on textareas.
 */    
function custom_process_textarea($element) {
  $element['#resizable'] = FALSE;
  return $element;
}

Dies gibt Modulen wie Wysiwyg die Möglichkeit zu bemerken, dass ein Textbereich kein Grippie haben sollte, sodass dieses Verhalten beim Deaktivieren eines Editors vermieden werden kann.

1
TwoD

Implementieren Sie dies in Ihrem THEMA. Dadurch wird #resizable Auf FALSE gezwungen und das Rendern von JS und Markup verhindert.

/**
 * Implements template_preprocess_textarea().
 */
function THEME_preprocess_textarea(&$variables) {
  // Hide grippie.
  $variables['element']['#resizable'] = FALSE;
}

Die akzeptierte Antwort ist nah, aber theme_ * -Funktionen sollten nicht direkt aufgerufen werden, da sie möglicherweise unbeabsichtigt Prozess-/Vorverarbeitungsfunktionen umgehen

1
joelpittet

Sie können Ihrem Formular benutzerdefiniertes Inline-CSS hinzufügen, um die Probleme auszublenden:

$form['#attached']['css'][] = array(
  'data' => '.resizable-textarea .grippie { display: none; }',
  'type' => 'inline',
);
1
shasi kanth

Sie können eine Änderung des Knotens oder des Kommentars vornehmen.

Schauen Sie sich den folgenden Beispielcode und die folgenden Kommentare an:

$form['body'][LANGUAGE_NONE][0]['value']['#resizable'] = FALSE;

Für Mozilla und Chrom können wir das Problem immer noch sehen. Platzieren Sie CSS-Hack.

textarea {
 resize: none;
 }
0

Ein neues Modul namens Disable Resizable Textarea wurde jetzt veröffentlicht.

Dies ist ein einfaches Modul, mit dem die Standardeigenschaft #resizable von Textfeldfeldern überschrieben werden kann. Standardmäßig können alle Textbereiche in der Größe geändert werden. Mit diesem Modul können Sie diese Funktion für jedes Feld deaktivieren.

Es ist sehr einfach einzurichten. Bearbeiten Sie einfach das gewünschte Feld und Sie sehen die Option "#resizable-Eigenschaft dieses Textbereichs deaktivieren". Sie können die Größenänderung auch in der Zusammenfassung deaktivieren, wenn das Feld vom Typ "Langtext mit Zusammenfassung" ist.

0
Thiago Régis