Як отримати розриви рядків при використанні простого тексту?


11

Я відчуваю, що це повинно бути реально просто, але це зводить мене з розуму.

Для всіх елементів мого тіла вибрано "звичайний текст". Я не хочу, щоб хтось міг взагалі вводити будь-який HTML при заповненні форм.

Однак я хочу, щоб перерви у рядку збереглися. На сторінці конфігурації для звичайного дійсно є "встановити цей прапорець, щоб перетворити розриви рядків на br та p, але незалежно від того, що я перевіряю або як переставляю вагу фільтрів, я не можу отримати його для збереження розривів.

Яка правильна конфігурація, щоб змусити це працювати, щоб я міг зберігати прибутки в текстах?


1
Це дивно. У мене ж налаштування, і це працює для мене. Це чиста установка чи оновлення? Використовуєте спеціальний модуль, можливо, робите якісь перезаписи чи щось інше?
Еміль Ороль

Це відчувало, що помилка чи як щось було трохи поза місцем. Що я зрозумів, що відбувається, це те, що я можу повернути теги br та p для розривів рядків, але потім їх відфільтрували, щоб зберегти справжній "звичайний текст". Що ви перевірили та в якому порядку ваші фільтри?
blue928

У мене все ще є проблема з звичайним текстом. Я також додав теги <p> та <br>, але не пощастило. Мені щось не вистачає ??
sokratis

Відповіді:



11

Це здається помилкою Drupal 7.x. Зміна порядку фільтрів не працює в моєму випадку.

Моє короткострокове рішення полягало в тому, щоб кинути це всередині 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']);
  }
}
?>

Для полів у представленнях потрібно встановити цю опцію окремо в розділі "Перезаписати результати" в налаштуваннях поля.


3

Насправді, він повинен працювати з цим параметром замовлення фільтрів у "admin / config / content / formatats / plain_text"

  1. Відображати будь-який HTML як звичайний текст
  2. Перетворити URL-адреси у посилання
  3. Перетворити розриви рядків у HTML (тобто, <br> та <p>)

Спробуйте наведені нижче фільтри, видаливши "Показувати будь-який HTML як звичайний текст":

  1. Обмежте дозволені теги HTML (встановіть лише <a> та <br> для списку дозволених тегів HTML)
  2. Перетворити URL-адреси у посилання
  3. Перетворити розриви рядків у HTML (тобто, <br> та <p>)

2
це не буде працювати, якщо вхідний формат не буде Фільтрований текст.
artfulrobot

3

Рішення просте. Просто виведіть звичайний текстовий вміст із наступним css.

white-space: pre-line;

2
Насправді, white-space: pre-line;як згадується на drupal.org/node/1095838#comment-6679314, це краще.
Єроен

Таке елегантне рішення.
сефіїт

Це спрацьовує, але лише в тому випадку, якщо ви хочете виконати націлювання на кожне зі своїх полів вручну або якщо для цього потрібні всі ваші довготекстові поля. Якщо ви змішали "звичайний текст" поля з іншими типами полів, і якщо ви використовуєте це з mpdf, щоб створити файл PDF, тоді працює лише рішення Druvision.
Річард

1

Я швидко використовував модуль Advanced Text Formatter, щоб швидко вирішити цю проблему без коду.

  1. Встановіть і ввімкніть модуль.
  2. Клацніть "Керувати дисплеєм" вашого типу вмісту.
  3. Змініть "Звичайний текст" формату вашого поля на "Розширений текст"
  4. Клацніть на шестірні справа (або посилання на налаштування формату)

    1. Встановіть довжину обрізки на 0
    2. Встановіть фільтр на "Обмеження дозволених тегів HTML"
    3. Видаліть усі елементи з "Дозволені теги HTML"
    4. Поставте прапорець "Перетворити розриви рядків у HTML"
    5. Клацніть «Оновити» та збережіть показ свого поля.

Параметри форматування модуля розширеного форматування тексту, щоб дозволити лише розриви рядків


0

Я не думаю, що це фільтрація на вході: це, мабуть, налаштування дисплея для поля. Якщо для нього встановлено "Звичайний текст", змініть його на "За замовчуванням". Інакше теги, згенеровані для вхідних розривів рядків, знімаються до появи поля.

Для наочності це на панелі "Керування дисплеєм" для відповідного типу вмісту. В адміністрації »Структура» Тип вмісту »MyContentType» Керування дисплеєм. Під стовпцем Формат для поля.


0

Я не думаю, що це помилка, але результат плутанини (не допомагає спосіб налаштування Drupal) між полем із форматом введення "відфільтрований текст", встановленим на "звичайний текст" та полем "звичайний текст". Якщо під час створення вашого поля ви виберете "відфільтрований текст", користувач отримає можливість вибрати з "простого тексту" та будь-яких інших форматів введення, і використовуючи тут опцію "звичайний текст", під час створення вашого вмісту буде виведено рядок перерви та посилання поза коробкою. Якщо при створенні поля ви вибрали "звичайний текст", теги взагалі не будуть доступні / надані, незалежно від того, як ви налаштували формат введення "звичайного тексту". Тому перш ніж панікувати, що "звичайний текст" не працює, спочатку перевірте в налаштуваннях типу вмісту, що в полі є "відфільтрований текст" вибрано. Парадоксально і дратівливо, але, Drupal ...;)


0

"Простий формат тексту" як "Обробка тексту" -метод НЕ підтримує жодних HTML-тегів, тому розриви рядків не працюють нормально.

Створіть "текстовий формат" для "Відфільтрований текст (користувач вибирає формат тексту)" та встановіть "Формат тексту" на "Звичайний текст".


Для мене це вирішило - змінити поле типу вмісту на "відфільтрований текст - вибір користувача", але тоді я переконався, що користувач має доступ лише до редактора простого тексту. Якось це спрацювало. Якби користувач мав доступ до інших текстових редакторів, це було б не так добре.
Крістен

-2

Цей чудовий модуль може допомогти вам https://drupal.org/project/wysiwyg_linebreaks

Wysiwyg переноси дозволяють користувачам WYSIWYG редакторів зберігати і відкривати розмітки з їх сайту з переносами замість <p>і <br /> тегами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.