Wie verstecke ich die Eingabeformatoptionen und Hilfetexte in einem Textbereich?


32

Wie verstecke ich die Eingabeformatoptionen und Hilfetexte in einem Textbereich, wenn ich einen Knoten hinzufüge?

Screenshot - Teil zum Ausblenden ausgewählt mit rotem Rechteck


Ich denke, dass Sie es tun können, wenn Sie auf das Formular zugreifen, hook_form_alteraber ich bin nicht sicher, über die Details, so dass ich dies nicht als Antwort
posten

Antworten:


26

Für Drupal 7 können Sie das Simplify- Modul verwenden. Sie können den Textbereich mit den Textformatoptionen sowie andere Elemente in Knotenformularen ausblenden.


3
Wenn Sie sich die Quelle ansehen ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), verwendet das Modul jQuery, um die Textformatoptionen auszublenden. Es ist eine Schande, denn 1: Sie möchten nur das Textformat ausblenden und benötigen nicht das gesamte Modul und 2: Javascript wird eine Voraussetzung. Warum nicht einfach mit CSS verstecken, wie es die Antwort von Ionut Adrian Luchian nahelegt? Es ist auf jeden Fall angemessen und sauber.
B2F

simplify hat bei mir nicht konsequent funktioniert. in einigen Fällen hat es in anderen nicht geklappt.
Snowguy

Hat bei mir nicht funktioniert. Ich habe Bootstrap-Theme verwendet, vielleicht deswegen.
sobi3ch

Simplify hat auch bei mir nicht funktioniert.
Артем Ильин

25

Sie können hook_form_alter in einem benutzerdefinierten Modul verwenden, um dies zu tun.

Zum Beispiel in Drupal 7:

// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
    // We want this on a specific field
    $form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
    return $form;
}

2
Dies funktioniert, hat aber einen Nebeneffekt: Es entfernt den Wysiwyg-Editor aus dem Textbereich
Castaway

Das hat den Trick für mich getan. Ich wollte hauptsächlich nur die Texteingabe aufräumen.
RevNoah

1
Es ist besser, LANGUAGE_NONE anstelle von 'und' zu erwähnen, und auch die after_build-Funktion sollte eine rollenbasierte Überprüfung haben, falls andere übergeordnete Rollen das Textformat-Feld anzeigen.
Aneek Mukhopadhyay

12

In Drupal 6 gibt es das Modul Better Formats, das genau das tut, was Sie wollen. Es gibt eine 7-Dev-Version, die jedoch mit einer Warnung versehen ist, dass sie sich in einer intensiven Entwicklung befindet. Wenn sich Ihre Site noch in der Entwicklung befindet, lohnt es sich möglicherweise, sie einmal auszuprobieren.


Schien gut für Benutzer zu funktionieren, die keine Administratoren waren, selbst wenn Sie die Berechtigungen für die Administratorengruppe entfernen, werden für Benutzer 1 immer noch die Optionen in D7
Joelpittet vom

Bessere Formate funktionieren gut für D7, sind stabil ohne ernsthafte Probleme und eine Beta 2-Veröffentlichung im Januar 2016.
Duncanmoo

9

Sie können tatsächlich nur das Format Formularelement töten.

function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}

function MY_THEME_configure_comment_form(&$form) {
  unset($form[LANGUAGE_NONE][0]['format']);
  return $form;
}

+1, die beste Lösung. Ersetzen Sie für zukünftige Besucher CUSTOM durch den Namen Ihres aktiven Themas. Dieses Code-Snippet sollte sich in Ihrem template.php-Skript im Ordner des aktiven Themas befinden. Wenn Ihre Website mehrsprachig ist, ersetzen Sie LANGUAGE_NONE durch Ihren Sprachcode.
Janaka R Rajapaksha

2
CUSTOMist als Ihr benutzerdefinierter Themenname vorgesehen. Sie sollten eine Sprache NIEMALS hart codieren, wenn Sie die aktive Sprache global $language;zum Aufrufen benötigen .
DoubleJosh

Hinweis: LANGUAGE_NONEIst eine Konstante mit Wert und... nicht verwenden und.
DoubleJosh

Dies tötet auch die
Wysiwyg

7

Ich denke, die beste Lösung ist, den Zugriff auf das Textformat-Auswahlelement zu verweigern. Wenn Sie es vollständig deaktivieren, werden Sie als verschwindender WYSIWYG-Editor mit unerwünschten Nebenwirkungen konfrontiert. Also schlage ich folgenden Code vor.

function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}


function MY_MODULE_hide_text_format(&$form) {
  $form[LANGUAGE_NONE][0]['format']['#access'] = false;
  return $form;
}

Dies ist eine hervorragende Lösung, wenn Sie sie nur in einem bestimmten Feld ausblenden möchten. Und der WYSIWYG bleibt funktionsfähig.
Dalin

6

Verwenden Sie am einfachsten CSS. Firebug

#body-add-more-wrapper #edit-body-und-0-format {display: none;}

Die Kraft von CSS und Firebug

Viel Glück.


3
Ich würde nicht empfehlen, "obwohl es funktioniert" CSS versteckt.
Saadlulu

keine Antwort, ein Kurzurlaub
Pan Chrono

5
Warum ? Dies ist eine großartige Antwort, da die Frage darin besteht, sie zu verbergen und nicht zu entfernen. Es ist nicht so, als würde das Verbergen eine Sicherheitsbedrohung darstellen oder die SEO beeinträchtigen ... Sie definieren Berechtigungen bereits in der Textformatkonfiguration. Wo liegt also das Problem?
B2F

1
Ich würde es vorziehen, es zu verstecken. +1 Stimme für dich.
Alyssa Gono

CSS-Injektormodul wirkt Wunder. Siehe: prntscr.com/cieuvs
Patoshi パ パ シ

5

FÜR Drupal 7

function MODULENAME_element_info_alter(&$type) {
  if (isset($type['text_format']['#process'])) {
    foreach ($type['text_format']['#process'] as &$callback) {

      if ($callback === 'filter_process_format') {
        $callback = 'MODULENAME_filter_process_format';
      }
    }
  }
}


function MODULENAME_filter_process_format($element) {
  $element = filter_process_format($element);

  // Change input format to "Filtered HTML" for body fields of NODETYPE_NAME

  if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {

    $element['format']['format']['#default_value'] = 'filtered_html';
    $element['format']['format']['#format'] = 'filtered_html';  
    $element['format']['format']['#value']  = 'filtered_html';
    $element['#format'] = 'filtered_html';

  }
  return $element;
}

Dies ist eine großartige Technik, wenn Sie sie in vielen / allen Feldern ausblenden möchten.
Dalin

2

Die andere einfache Möglichkeit, die Eingabeformatoption auszublenden, besteht darin, alle anderen Eingabeformate aus den Benutzerprofilen zu entfernen, die Sie ausblenden möchten. Gehen Sie dazu auf admin-> configuration-> input formats und entfernen Sie alle Benutzerrollen aus allen anderen Eingabeformaten mit Ausnahme derjenigen, die Sie standardmäßig angeben möchten.


6
Funktioniert nur, wenn Sie nur einfachen Text aktivieren möchten. Weil du das nicht deaktivieren kannst.
Fletch

genau. Sie können nicht nur "Gefilterten Text" verwenden. Entschuldigung, aber diese Antwort ist irreführend.
Nerdoc

2

Ich tat dies:

Deaktivieren Sie die Kontrollkästchen "Gefiltertes HTML-Textformat verwenden" und "Textformate und Filter verwalten" unter Personenberechtigungen für anonyme und autorisierte Benutzer, damit diese CKeditor nicht verwenden können.

Natürlich können Sie CSS deaktivieren, indem Sie "display: none;" für bestimmte div-Klassen (es ist .filter-wrapper) und verstecke alle Bereiche, auf die du oben gezeigt hast, aber in diesem Fall ist der Bereich für alle, einschließlich Superuser, ausgeblendet.


1

Installieren Sie das CSS Injector- Modul (derzeit gibt es nur eine funktionierende Entwicklungsversion für Drupal 8).

Gehen Sie dann zur Administrationsseite von CSS Injector (/ admin / config / development / css-injector). Erstellen Sie eine neue CSS-Regel mit diesem Code (oder einem beliebigen Code, der für eine Klasse des Formatierungsbereichstextes gilt):

.filter-guidelines {
    display: none;
}

Wenden Sie es auf das Seven- Design (oder ein beliebiges aktuelles Admin-Design) an. Speichern und genießen!


Installieren Sie den CSS-Injektor 1.x, da 2.0 älter ist. Hier ist eine Vorschau, wie es aussieht: prntscr.com/cieuvs - Dieses Modul funktioniert Wunder für CSS-Injektion im Vergleich zu anderen Modulen wie CPN (Code pro Knoten)
Patoshi hi ト シ

0

Sie können das Eingabeformat "Nur Text" nicht entfernen. Und die RTE wird nicht angezeigt, wenn Sie das Eingabeformat "Nur Text" verwenden.

Ich werde die CSS-Option verwenden.


Die Eingabeformatauswahl wird nicht angezeigt, wenn der aktuell angemeldete Benutzer nur ein Eingabeformat verwenden kann. Dieses einzige Eingabeformat könnte ein anderes sein, und der Selektor würde nicht gleich erscheinen.
kiamlaluno

0

Ich benutze sowohl "Entfernen aller anderen Eingabeformate aus den Benutzerprofilen" als auch css way.


0

Probieren Sie das simplify- Modul aus.

Mit Simplify können bestimmte Felder von der Benutzeroberfläche ausgeblendet werden. Dies hilft, Formulare übersichtlicher zu gestalten und den Redakteuren eine benutzerfreundlichere Erfahrung zu bieten.


Arbeiten für andere Felder vereinfachen, aber ich konnte es nicht für Eingabeformate arbeiten lassen.
Druvision

0

Wenn Sie die Formate ausblenden und dennoch verfügbar halten möchten, versuchen Sie es mit dem Modul " Vereinfachte Formate ": https://www.drupal.org/project/simplified_formats

Die Formatdetails werden in einem kleinen Fragezeichen neben dem Dropdown-Menü für die Formatauswahl ausgeblendet. Bei vielen Textformatfiltern hilft es nicht, die Anweisungen zur Verwendung vollständig auszublenden. Andere Filter sind automatischer. Ich denke, wir brauchen ein Modul, mit dem wir auswählen können, was dem Endbenutzer angezeigt wird und was nicht.


0

Sie können auch das Modul Formate ausblenden verwenden .

Mit "Formate ausblenden" können Sie die Dropdown-Listen "Textformat" oder "Eingabeformat" ausblenden, um die Benutzeroberfläche zu bereinigen.


Dies ist ein großartiges Modul, aber es lässt die Formatbox zusammenfallen und nicht verborgen.
Druvision

0

Für Drupal 8. Dadurch wird der Formatbereich für zwei Felder entfernt.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}

function CUSTOM_MODULE_eform_application_after_build ($form) {
  unset($form['field_experience']['widget'][0]['format']);
  unset($form['field_miscellaneous']['widget'][0]['format']);
  return ($form);
}

OP hat D7 in der Frage angegeben
Geoff

1
Einverstanden. Derzeit ist für D8 jedoch nur sehr wenig online. Ich nehme an, ich könnte meine eigene Frage stellen und sie dann beantworten. Das habe ich nie versucht.
Andre Angelantoni

das wäre der bessere Ansatz, nur weil das OP in diesem Fall sehr spezifisch für die Version ist
Geoff

Könnten Sie bitte angeben, wie es implementiert werden soll? Wie finde ich form_id?
John

0

Für Drupal 7 können Sie:

1) Verwenden Sie hook_theme_registry_alter(&$theme_registry)innerhalb eines Moduls, um die Themenregistrierung zu ändern, Gl. die Definition des Themenprozessors.

2) Dann ändern drei Themenfunktionen theme_filter_tips, theme_filter_tips_more_infound theme_filter_guidelines, und zwingen sie nichts zurückzukehren. Wie folgt:

Dies ist die Zielfunktion. Alle oben genannten Themenfunktionen werden darauf umgeleitet.

function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
  return '';
}

/**
 * Implements hook_theme_registry_alter
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  $theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}

Wenn Sie Ihren Cache leeren, sucht Drupal diese Filterdefinitionen im Pfad des Moduls Ihrer Wahl (siehe drupal_get_path) und gibt für jeden Filter nichts zurück. Daher keine Textformatbeschreibungen mehr.


0
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {

    // We want to hide input formats and we can do it like following
    $form['body']['und']['0']['format']= '<div style="display:none;">';
    $form['body']['und']['0']['format']= '</div>';   

    return $form;
}

Arbeitete meistens für mich mit diesen kleinen Änderungen.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.