Bagaimana cara mendapatkan jeda baris saat menggunakan format Teks Biasa?

11

Aku merasa ini seharusnya sederhana, tapi itu membuatku gila.

Saya telah memilih 'teks biasa' untuk semua elemen Tubuh saya. Saya tidak ingin ada orang yang bisa memasukkan html sama sekali ketika mengisi formulir.

Namun, saya ingin garis terputus dipertahankan. Pada halaman konfigurasi untuk plain memang ada tanda centang 'kotak ini untuk mengubah garis istirahat menjadi br dan p, tapi tidak peduli apa yang saya periksa atau bagaimana saya mengatur ulang berat filter, saya tidak bisa mendapatkannya untuk menjaga istirahat.

Apa konfigurasi yang benar untuk mendapatkan ini berfungsi sehingga saya dapat mempertahankan pengembalian dalam teks?

blue928
sumber
1
Itu aneh. Saya memiliki pengaturan yang sama dan berfungsi untuk saya. Apakah ini pemasangan yang bersih atau peningkatan? Apakah Anda menggunakan modul khusus, mungkin melakukan beberapa overwrite atau sesuatu yang lain?
Emil Orol
Itu memang terasa seperti bug atau seperti sesuatu yang agak tidak pada tempatnya. Apa yang saya pikir sedang terjadi adalah bahwa saya dapat mengembalikan tag br dan p untuk jeda baris, tetapi kemudian mereka disaring untuk mempertahankan 'teks biasa' yang sebenarnya. Apa yang telah Anda periksa dan bagaimana urutan filter Anda?
blue928
Saya masih memiliki masalah dengan teks biasa. Saya juga telah menambahkan tag <p> dan <br> tetapi tidak berhasil. Apakah saya kehilangan sesuatu ??
sokratis

Jawaban:

11

Ini sepertinya bug Drupal 7.x. Mengubah urutan filter tidak berfungsi dalam kasus saya.

Solusi jangka pendek saya adalah melemparkan ini ke dalam template.php tema saya ( 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']);
  }
}
?>

Untuk bidang dalam tampilan, Anda perlu mengatur opsi ini secara terpisah di bagian "Tulis Ulang Hasil" pada pengaturan bidang.

Druvision
sumber
3

Sebenarnya, ini harus bekerja dengan pengaturan urutan filter ini di "admin / config / content / format / plain_text"

  1. Tampilkan HTML apa pun sebagai teks biasa
  2. Konversikan URL menjadi tautan
  3. Konversi pemecah baris ke HTML (mis. Situs dan <p>)

Coba filter di bawah ini dengan menghapus "Tampilkan HTML apa saja sebagai teks biasa":

  1. Batasi tag HTML yang diizinkan (atur hanya <a> dan <br> untuk daftar tag HTML yang diizinkan)
  2. Konversikan URL menjadi tautan
  3. Konversi pemecah baris ke HTML (mis. Situs dan <p>)
Sithu
sumber
2
ini tidak akan berfungsi jika format input bukan Teks yang Difilter.
artfulrobot
3

Solusinya sederhana. Cukup tampilkan konten teks biasa dengan css berikut.

white-space: pre-line;
Kevin Siji
sumber
2
Sebenarnya, white-space: pre-line;seperti yang disebutkan di drupal.org/node/1095838#comment-6679314 lebih baik.
Jeroen
Solusi yang elegan.
sephiith
Ini berfungsi, tetapi hanya jika Anda ingin menargetkan masing-masing bidang Anda secara manual, atau jika semua bidang teks panjang Anda perlu dilakukan. Jika Anda telah menggabungkan bidang "teks biasa" dengan jenis bidang lainnya, dan jika Anda menggunakan ini dengan mpdf untuk membuat file PDF, maka hanya solusi Druvision yang berfungsi.
Richard
1

Saya menggunakan modul Advanced Text Formatter untuk dengan cepat menyelesaikan masalah ini tanpa kode.

  1. Pasang dan aktifkan modul.
  2. Klik 'Kelola Tampilan' dari jenis konten Anda.
  3. Ubah 'Teks Biasa' dari format bidang Anda menjadi 'Teks Lanjutan'
  4. Klik roda gigi di sebelah kanan (atau tautan ke pengaturan format)

    1. Atur panjang trim menjadi 0
    2. Setel filter ke 'Batasi tag HTML yang Diizinkan'
    3. Hapus semua item dari 'Tag HTML yang Diizinkan'
    4. Centang 'Konversi pemecah baris ke dalam HTML'
    5. Klik 'Perbarui,' dan Simpan Tampilan Bidang Anda.

Pengaturan Format modul Advanced Text Formatter untuk hanya mengizinkan jeda baris

StackAttack
sumber
0

Saya tidak berpikir itu adalah pemfilteran input: itu mungkin pengaturan tampilan untuk bidang tersebut. Jika diatur ke "Teks biasa", ubah ke "Default". Kalau tidak, tag yang dihasilkan untuk jeda baris input akan dikupas sebelum bidang ditampilkan.

Untuk kejelasan, ini ada di panel "Kelola Tampilan" untuk jenis konten yang dimaksud. Di Administrasi »Struktur» Jenis konten »MyContentType» Kelola Tampilan. Di bawah kolom Format untuk bidang tersebut.

Alfred Armstrong
sumber
0

Saya tidak menganggap ini bug tetapi hasil kebingungan (tidak terbantu dengan cara Drupal diatur) antara bidang dengan format input "teks tersaring" yang disetel ke "teks biasa" dan bidang "teks biasa". Jika ketika Anda membuat bidang Anda memilih "teks yang difilter", pengguna akan mendapatkan opsi untuk memilih dari "teks biasa" dan format input lain yang tersedia, dan menggunakan opsi "teks biasa" di sini saat membuat konten Anda akan membuat baris istirahat dan tautan di luar kotak. Namun jika pada pembuatan lapangan Anda memilih "teks biasa", tidak ada tag yang akan tersedia / ditampilkan sama sekali, tidak peduli bagaimana Anda mengonfigurasi format input "teks biasa". Jadi sebelum panik bahwa "teks biasa" tidak berfungsi, pertama-tama periksa di pengaturan jenis konten Anda bahwa bidang itu memiliki "teks yang difilter" terpilih. Ini paradoks dan menjengkelkan, tapi, Drupal ...;)

Kucing pemikir
sumber
0

"Format Teks Biasa" sebagai "Pemrosesan teks" - metode TIDAK mendukung Tag-HTML apa pun, oleh karena itu jeda baris tidak berfungsi seperti biasa.

Buat "format teks" untuk "Teks yang difilter (pengguna memilih format teks)" dan atur "Format teks" menjadi "Teks biasa".

user9616
sumber
Apa yang dipecahkan ini bagi saya adalah mengubah bidang dalam tipe konten menjadi "teks yang difilter - pilih pengguna" tetapi kemudian saya memastikan pengguna hanya memiliki akses ke editor teks biasa. Entah bagaimana itu berhasil. Jika pengguna memiliki akses ke editor teks lain ini tidak akan menyenangkan.
Christia
-2

Modul hebat ini dapat membantu Anda https://drupal.org/project/wysiwyg_linebreaks

Wysiwyg Linebreaks memungkinkan pengguna editor wysiwyg untuk menyimpan dan membuka markup dari situs web mereka dengan linebreak alih-alih <p>dan <br /> tag.

pengguna24291
sumber