Jak uzyskać podział linii podczas korzystania z formatu zwykłego tekstu?

11

Wydaje mi się, że to powinno być naprawdę proste, ale doprowadza mnie to do szału.

Mam zaznaczony „zwykły tekst” dla wszystkich elementów mojego ciała. Nie chcę, aby ktokolwiek mógł w ogóle wstawiać HTML podczas wypełniania formularzy.

Chcę jednak zachować podziały linii. Na stronie konfiguracji zwykłego jest rzeczywiście zaznaczone to pole, aby zmienić podział linii na br i p, ale bez względu na to, co sprawdzę lub jak przestawię ciężar filtrów, nie mogę uzyskać tego, aby zachować przerwy.

Jaka jest poprawna konfiguracja, aby to działało, dzięki czemu mogę zachować zwroty w tekście?

blue928
źródło
1
To jest dziwne. Mam taką samą konfigurację i działa dla mnie. Czy to czysta instalacja czy aktualizacja? Czy używasz niestandardowego modułu, może robisz jakieś nadpisania lub coś innego?
Emil Orol
Czułem się jak błąd lub coś, co było trochę nie na miejscu. Uznałem, że dzieje się to, że mogę zwrócić tagi br i p dla podziałów wierszy, ale potem zostały one odfiltrowane, aby zachować prawdziwy „zwykły tekst”. Co sprawdziłeś i jaka jest kolejność filtrów?
blue928
Nadal mam ten problem z zwykłym tekstem. Dodałem także tagi <p> ​​i <br>, ale nie mam szczęścia. Czy coś mi brakuje?
sokratis

Odpowiedzi:

11

Wygląda to na błąd Drupal 7.x. W moim przypadku zmiana kolejności filtrów nie działa.

Moje krótkoterminowe rozwiązanie polegało na wrzuceniu tego do szablonu template.php ( ref ):

<?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']);
  }
}
?>

W przypadku pól w widokach należy ustawić tę opcję osobno w sekcji „Przepisz wyniki” w ustawieniach pól.

Druvision
źródło
3

Właściwie to powinno działać z tym ustawieniem kolejności filtrów w „admin / config / content / format / forms / plain_text”

  1. Wyświetl dowolny HTML jako zwykły tekst
  2. Konwertuj adresy URL na linki
  3. Konwertuj podziały wierszy na HTML (tj. <br> i <p>)

Wypróbuj poniższe filtry, usuwając „Wyświetl dowolny HTML jako zwykły tekst”:

  1. Ogranicz dozwolone tagi HTML (ustaw tylko <a> i <br> dla listy dozwolonych tagów HTML)
  2. Konwertuj adresy URL na linki
  3. Konwertuj podziały wierszy na HTML (tj. <br> i <p>)
Sithu
źródło
2
to nie zadziała, jeśli formatem wejściowym nie jest Filtrowany tekst.
artfulrobot
3

Rozwiązanie jest proste. Wystarczy wyświetlić zawartość zwykłego tekstu za pomocą następującego css.

white-space: pre-line;
Kevin Siji
źródło
2
W rzeczywistości, white-space: pre-line;jak wspomniano na drupal.org/node/1095838#comment-6679314, jest lepszy.
Jeroen
Takie eleganckie rozwiązanie.
sephiith
Działa to, ale tylko wtedy, gdy chcesz ręcznie kierować do każdego z pól lub jeśli wszystkie pola z długim tekstem wymagają tego. Jeśli zmieszałeś pola „zwykłego tekstu” z innymi typami pól i jeśli używasz tego z mpdf do utworzenia pliku PDF, działa tylko rozwiązanie Druvision.
Richard
1

Użyłem modułu Advanced Text Formatter , aby szybko rozwiązać ten problem bez kodu.

  1. Zainstaluj i włącz moduł.
  2. Kliknij „Zarządzaj wyświetlaniem” swojego typu treści.
  3. Zmień „Zwykły tekst” formatu pola na „Zaawansowany tekst”
  4. Kliknij koło zębate po prawej stronie (lub link do ustawień formatu)

    1. Ustaw długość przycinania na 0
    2. Ustaw filtr na „Ogranicz dozwolone tagi HTML”
    3. Usuń wszystkie elementy z „Dozwolonych tagów HTML”
    4. Zaznacz „Konwertuje podziały wiersza na HTML”
    5. Kliknij „Aktualizuj” i zapisz wyświetlanie pola.

Formatuj ustawienia modułu Advanced Text Formatter, aby zezwolić tylko na łamanie linii

StackAttack
źródło
0

Nie sądzę, że jest to filtr wejściowy: to prawdopodobnie ustawienie wyświetlania dla pola. Jeśli jest ustawiony na „Zwykły tekst”, zmień go na „Domyślny”. W przeciwnym razie tagi wygenerowane dla wejściowych podziałów linii zostaną usunięte przed wyświetleniem pola.

Dla jasności jest to w panelu „Zarządzaj wyświetlaniem” dla danego typu treści. W administracji »Struktura» Typ treści »MyContentType» Zarządzaj wyświetlaniem. W kolumnie Format dla pola.

Alfred Armstrong
źródło
0

Nie sądzę, że to błąd, ale wynik zamieszania (nie pomaga w tym sposób konfiguracji Drupala) między polem z formatem wejściowym „filtrowanego tekstu” ustawionym na „zwykły tekst” a polem „zwykły tekst”. Jeśli podczas tworzenia pola wybierzesz „filtrowany tekst”, użytkownik będzie mógł wybrać opcję „zwykły tekst” i dowolne inne dostępne formaty wejściowe, a użycie opcji „zwykły tekst” podczas tworzenia treści spowoduje wyświetlenie linii łamie i linki po wyjęciu z pudełka. Jeśli jednak podczas tworzenia pola wybierzesz „zwykły tekst”, żadne tagi nie będą w ogóle dostępne / renderowane, bez względu na to, jak skonfigurujesz format wprowadzania „zwykły tekst”. Dlatego przed spanikowaniem, że „zwykły tekst” nie działa, najpierw sprawdź w ustawieniach typu zawartości, czy w polu jest „filtrowany tekst” wybrany. To paradoksalne i denerwujące, ale Drupal ...;)

Myślak
źródło
0

Format „Zwykły tekst” jako „Przetwarzanie tekstu” NIE obsługuje żadnych tagów HTML, dlatego podział wiersza nie działa normalnie.

Utwórz „format tekstu” dla „Filtrowanego tekstu (użytkownik wybiera format tekstu)” i ustaw „Format tekstu” na „Zwykły tekst”.

użytkownik9616
źródło
To, co rozwiązałem, polegało na zmianie pola typu zawartości na „filtrowany tekst - wybór użytkownika”, ale upewniłem się, że użytkownik ma dostęp tylko do edytora zwykłego tekstu. Jakoś to działało. Gdyby użytkownik miał dostęp do innych edytorów tekstu, nie byłoby to takie miłe.
Christia,
-2

Ten świetny moduł może pomóc Ci https://drupal.org/project/wysiwyg_linebreaks

WYSIWYG linebreaks umożliwia użytkownikom WYSIWYG edytorów, aby zapisać i otwarty markup z ich strony internetowej z wierszami zamiast <p>i <br /> tagów.

użytkownik24291
źródło