Wie erhalte ich Zeilenumbrüche bei Verwendung des Nur-Text-Formats?

11

Ich denke, das sollte wirklich einfach sein, aber es macht mich verrückt.

Ich habe 'Klartext' für alle meine Körperelemente ausgewählt. Ich möchte nicht, dass jemand beim Ausfüllen von Formularen HTML-Dateien eingeben kann.

Ich möchte jedoch, dass die Zeilenumbrüche erhalten bleiben. Auf der Konfigurationsseite für plain gibt es zwar ein Kontrollkästchen, um Zeilenumbrüche in br und p umzuwandeln. Unabhängig davon, was ich überprüfe oder wie ich das Gewicht der Filter neu anordne, kann ich die Unterbrechungen nicht beibehalten.

Was ist die richtige Konfiguration, damit dies funktioniert, damit ich die Rückgaben in den Texten beibehalten kann?

blue928
quelle
1
Das ist merkwürdig. Ich habe das gleiche Setup und es funktioniert für mich. Ist das eine Neuinstallation oder ein Upgrade? Verwenden Sie ein benutzerdefiniertes Modul, schreiben Sie möglicherweise etwas oder etwas anderes?
Emil Orol
Es fühlte sich wie ein Käfer an oder als wäre etwas etwas fehl am Platz. Ich dachte, es könnte passieren, dass ich br- und p-Tags für Zeilenumbrüche zurückgeben könnte, aber dann wurden sie herausgefiltert, um echten "Klartext" beizubehalten. Was haben Sie überprüft und wie ist die Reihenfolge Ihrer Filter?
blue928
Ich habe immer noch dieses Problem mit einfachem Text. Ich habe auch <p> - und <br> -Tags hinzugefügt, aber kein Glück. Vermisse ich etwas?
Sokratis

Antworten:

11

Dies scheint ein Drupal 7.x-Fehler zu sein. Das Ändern der Filterreihenfolge funktioniert in meinem Fall nicht.

Meine kurzfristige Lösung bestand darin, dies in die template.php ( ref ) meines Themas zu werfen :

<?php
/**
 * Implements template_preprocess_field().
 */
function THEMENAME_preprocess_field(&$vars, $hook) {
  // Add line breaks to plain text textareas.
  if (
    // Make sure this is a text_long field type.
    $vars['element']['#field_type'] == 'text_long'
    // Check that the field's format is set to null, which equates to plain_text.
    && $vars['element']['#items'][0]['format'] == null
  ) {
    $vars['items'][0]['#markup'] = nl2br($vars['items'][0]['#markup']);
  }
}
?>

Für Felder in Ansichten muss diese Option im Abschnitt "Ergebnisse neu schreiben" der Feldeinstellungen separat festgelegt werden.

Druvision
quelle
3

Eigentlich sollte es mit dieser Filterreihenfolge unter "admin / config / content / formats / plain_text" funktionieren.

  1. Zeigen Sie HTML als einfachen Text an
  2. URLs in Links konvertieren
  3. Zeilenumbrüche in HTML konvertieren (dh <br> und <p>)

Probieren Sie die folgenden Filter aus, indem Sie "HTML als einfachen Text anzeigen" entfernen:

  1. Begrenzen Sie zulässige HTML-Tags (setzen Sie nur <a> und <br> für die Liste der zulässigen HTML-Tags)
  2. URLs in Links konvertieren
  3. Zeilenumbrüche in HTML konvertieren (dh <br> und <p>)
Sithu
quelle
2
Dies funktioniert nicht, wenn das Eingabeformat nicht gefilterter Text ist.
Artfulrobot
3

Die Lösung ist einfach. Zeigen Sie einfach den Nur-Text-Inhalt mit folgendem CSS an.

white-space: pre-line;
Kevin Siji
quelle
2
Eigentlich ist, white-space: pre-line;wie auf drupal.org/node/1095838#comment-6679314 erwähnt, besser.
Jeroen
So eine elegante Lösung.
Sephiith
Dies funktioniert jedoch nur, wenn Sie jedes Ihrer Felder manuell ausrichten möchten oder wenn alle Ihre Langtextfelder dies benötigen. Wenn Sie "Nur-Text" -Felder mit anderen Feldtypen gemischt haben und diese mit mpdf verwenden, um eine PDF-Datei zu erstellen, funktioniert nur die Lösung von Druvision.
Richard
1

Ich habe das Advanced Text Formatter- Modul verwendet, um dieses Problem ohne Code schnell zu lösen.

  1. Installieren und aktivieren Sie das Modul.
  2. Klicken Sie auf "Anzeige verwalten" Ihres Inhaltstyps.
  3. Ändern Sie den "Nur-Text" des Feldformats in "Erweiterter Text".
  4. Klicken Sie auf das Zahnrad rechts (oder auf einen Link zu den Formateinstellungen).

    1. Stellen Sie die Schnittlänge auf 0
    2. Setzen Sie den Filter auf "Zulässige HTML-Tags begrenzen".
    3. Entfernen Sie alle Elemente aus "Zulässige HTML-Tags".
    4. Aktivieren Sie "Konvertiert Zeilenumbrüche in HTML".
    5. Klicken Sie auf "Aktualisieren" und speichern Sie Ihre Feldanzeige.

Formateinstellungen des erweiterten Textformatierungsmoduls, um nur Zeilenumbrüche zuzulassen

StackAttack
quelle
0

Ich denke nicht, dass es die Eingangsfilterung ist: Es ist wahrscheinlich die Anzeigeeinstellung für das Feld. Wenn es auf "Nur Text" eingestellt ist, ändern Sie es in "Standard". Andernfalls werden die für die Zeilenumbrüche der Eingabe generierten Tags entfernt, bevor das Feld angezeigt wird.

Aus Gründen der Übersichtlichkeit befindet sich dies im Bereich "Anzeige verwalten" für den betreffenden Inhaltstyp. Unter Administration »Struktur» Inhaltstyp »MyContentType» Anzeige verwalten. Unter der Spalte Format für das Feld.

Alfred Armstrong
quelle
0

Ich halte dies nicht für einen Fehler, sondern für das Ergebnis einer Verwechslung (nicht unterstützt durch die Art und Weise, wie Drupal eingerichtet ist) zwischen einem Feld mit einem Eingabeformat für "gefilterten Text", das auf "Nur-Text" eingestellt ist, und einem Feld für "Nur-Text". Wenn Sie beim Erstellen Ihres Felds "gefilterten Text" auswählen, kann der Benutzer zwischen "Nur-Text" und anderen verfügbaren Eingabeformaten auswählen. Wenn Sie hier beim Erstellen Ihres Inhalts die Option "Nur-Text" verwenden, wird die Zeile gerendert bricht und Links aus der Box. Wenn Sie jedoch bei der Felderstellung "Nur-Text" auswählen, sind überhaupt keine Tags verfügbar / gerendert, unabhängig davon, wie Sie das Eingabeformat "Nur-Text" konfigurieren. Bevor Sie in Panik geraten, dass "einfacher Text" nicht funktioniert, überprüfen Sie zunächst in Ihrem Inhaltstyp-Setup, ob das Feld "gefilterten Text" enthält. ausgewählt. Es ist paradox und nervig, aber Drupal ...;)

Gedankenkatze
quelle
0

"Nur-Text-Format" als "Textverarbeitung" -Methode unterstützt KEINE HTML-Tags, daher funktionieren Zeilenumbrüche nicht normal.

Erstellen Sie ein "Textformat" für "Gefilterter Text (Benutzer wählt das Textformat aus)" und setzen Sie das "Textformat" auf "Nur Text".

user9616
quelle
Was dies für mich löste, war, das Feld im Inhaltstyp in "gefilterter Text - Benutzerauswahl" zu ändern, aber dann stellte ich sicher, dass der Benutzer nur Zugriff auf den Nur-Text-Editor hatte. Irgendwie hat das funktioniert. Wenn der Benutzer Zugriff auf andere Texteditoren hätte, wäre dies nicht so schön.
Christia
-2

Dieses großartige Modul kann Ihnen helfen, https://drupal.org/project/wysiwyg_linebreaks

Mit Wysiwyg Linebreaks können Benutzer von Wysiwyg-Editoren Markups von ihrer Website mit Linebreaks anstelle von <p>und <br /> Tags speichern und öffnen .

user24291
quelle