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?


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.


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>)

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;

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


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.


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 ...;)


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”.


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,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.