ฉันจะได้รับตัวแบ่งบรรทัดเมื่อใช้รูปแบบข้อความล้วนได้อย่างไร


11

ฉันรู้สึกว่าสิ่งนี้ควรจะเรียบง่าย แต่มันทำให้ฉันเป็นบ้า

ฉันเลือก 'ข้อความธรรมดา' สำหรับองค์ประกอบร่างกายของฉันทั้งหมด ฉันไม่ต้องการให้ใครใส่ html ใด ๆ เลยเมื่อกรอกแบบฟอร์ม

อย่างไรก็ตามฉันต้องการให้การแบ่งบรรทัดถูกสงวนไว้ ในหน้าการกำหนดค่าสำหรับธรรมดามี 'ทำเครื่องหมายที่ช่องนี้เพื่อเปลี่ยนการแบ่งบรรทัดเป็น br และ p แต่ไม่ว่าฉันจะตรวจสอบอะไรหรือฉันจัดเรียงน้ำหนักของตัวกรองใหม่อย่างไรฉันไม่สามารถรับมันเพื่อรักษาตัวแบ่งได้

การกำหนดค่าที่ถูกต้องคืออะไรเพื่อให้สิ่งนี้ใช้งานได้เพื่อให้ฉันสามารถรักษาผลตอบแทนไว้ในตำราได้


1
นั่นเป็นคี่ ฉันมีการตั้งค่าเดียวกันและใช้งานได้สำหรับฉัน นี่เป็นการติดตั้งใหม่ทั้งหมดหรือการอัพเกรดหรือไม่ คุณใช้โมดูลที่กำหนดเองหรืออาจจะเขียนทับหรืออย่างอื่น?
Emil Orol

มันให้ความรู้สึกเหมือนแมลงหรืออะไรบางอย่างมันค่อนข้างแปลก สิ่งที่ฉันคิดว่าเกิดขึ้นคือฉันสามารถส่งคืนแท็ก br และ p สำหรับการขึ้นบรรทัดใหม่ แต่จากนั้นพวกเขาจะถูกกรองออกเพื่อรักษา 'ข้อความธรรมดา' ที่แท้จริงคุณตรวจสอบอะไรและตัวกรองของคุณคืออะไร
blue928

ฉันยังมีปัญหากับข้อความธรรมดาฉันยังได้เพิ่ม <p> และแท็ก <br> แต่ไม่มีโชคฉันกำลังทำอะไรหาย
sokratis

คำตอบ:


8

ดูเหมือนว่าบั๊กใน Drupal core http://drupal.org/node/1019042


1
ใช่มันเป็นข้อผิดพลาด ดูบายพาสที่คำตอบของฉันด้านล่าง
Druvision

มันถูกทำเครื่องหมายเป็น "ทำงานตามที่ออกแบบ" ในปัญหาอื่นที่เปิดขึ้นในภายหลังdrupal.org/project/drupal/issues/1102900
GiorgosK

11

ดูเหมือนว่าจุดบกพร่องของ Drupal 7.x การเปลี่ยนลำดับของตัวกรองไม่ทำงานในกรณีของฉัน

ทางออกระยะสั้นของฉันคือการโยนสิ่งนี้ไว้ในแม่แบบของธีมของฉัน 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 / format / 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นั้นดีกว่า
Jeroen

ช่างเป็นทางออกที่สง่างาม
sephiith

สิ่งนี้ทำงานได้ แต่ถ้าคุณต้องการกำหนดเป้าหมายแต่ละฟิลด์ด้วยตนเองหรือถ้าฟิลด์ข้อความแบบยาวทั้งหมดของคุณต้องการสิ่งนี้ หากคุณมีฟิลด์ "ข้อความธรรมดา" ผสมกับฟิลด์ประเภทอื่น ๆ และหากคุณใช้สิ่งนี้กับ mpdf เพื่อสร้างไฟล์ PDF แสดงว่าโซลูชันของ Druvision ใช้ได้ผล
ริชาร์ด

1

ฉันใช้โมดูลตัวจัดรูปแบบข้อความขั้นสูงเพื่อแก้ปัญหานี้อย่างรวดเร็วโดยไม่ต้องใช้รหัส

  1. ติดตั้งและเปิดใช้งานโมดูล
  2. คลิก 'จัดการจอแสดงผล' ของประเภทเนื้อหาของคุณ
  3. เปลี่ยน 'ข้อความธรรมดา' ของรูปแบบฟิลด์ของคุณเป็น 'ข้อความขั้นสูง'
  4. คลิกที่เฟืองทางด้านขวา (หรือลิงก์เพื่อตั้งค่ารูปแบบ)

    1. ตั้งค่าความยาวการตัดแต่งเป็น 0
    2. ตั้งค่าตัวกรองเป็น 'จำกัด แท็ก HTML ที่อนุญาต'
    3. ลบรายการทั้งหมดออกจาก 'แท็ก HTML ที่อนุญาต'
    4. ทำเครื่องหมาย 'แปลงตัวแบ่งบรรทัดเป็น HTML'
    5. คลิก 'อัปเดต' และบันทึกการแสดงผลของคุณ

รูปแบบการตั้งค่าของโมดูลตัวจัดรูปแบบข้อความขั้นสูงเพื่ออนุญาตให้แบ่งบรรทัด


0

ฉันไม่คิดว่ามันคือการกรองอินพุต: มันอาจเป็นการตั้งค่าการแสดงผลสำหรับฟิลด์ หากตั้งเป็น "ข้อความธรรมดา" ให้เปลี่ยนเป็น "เริ่มต้น" มิฉะนั้นแท็กที่สร้างขึ้นสำหรับการแบ่งบรรทัดอินพุตจะถูกตัดก่อนที่จะแสดงฟิลด์

เพื่อความชัดเจนนี่คือในแผง "จัดการจอแสดงผล" สำหรับประเภทเนื้อหาที่เป็นปัญหา ที่การดูแลระบบ»โครงสร้าง»ประเภทเนื้อหา» MyContentType »จัดการจอแสดงผล ใต้คอลัมน์รูปแบบสำหรับฟิลด์


0

ฉันไม่คิดว่านี่เป็นข้อผิดพลาด แต่เป็นผลมาจากความสับสน (ไม่ได้รับการช่วยเหลือจากวิธีการตั้งค่า Drupal) ระหว่างเขตข้อมูลที่มีรูปแบบการป้อนข้อมูล "ข้อความที่กรองแล้ว" เป็น "ข้อความธรรมดา" และ "ข้อความธรรมดา" หากคุณสร้างฟิลด์ที่คุณเลือก "ข้อความที่กรอง" ผู้ใช้จะได้รับตัวเลือกให้เลือกจาก "ข้อความธรรมดา" และรูปแบบการป้อนข้อมูลอื่น ๆ ที่มีอยู่และการใช้ตัวเลือก "ข้อความธรรมดา" ที่นี่เมื่อสร้างเนื้อหาของคุณจะแสดงบรรทัด แบ่งและเชื่อมโยงออกจากกล่อง อย่างไรก็ตามในการสร้างฟิลด์คุณเลือก "ข้อความธรรมดา" จะไม่มีแท็ก / แสดงผลเลยไม่ว่าคุณจะกำหนดค่ารูปแบบอินพุต "ข้อความธรรมดา" อย่างไร ดังนั้นก่อนที่จะตกใจว่า "ข้อความธรรมดา" ใช้งานไม่ได้อันดับแรกให้ตรวจสอบการตั้งค่าประเภทเนื้อหาของคุณว่าฟิลด์นั้นมี "ข้อความที่กรองแล้ว" เลือก มันขัดแย้งและน่ารำคาญ แต่ Drupal ... ;)


0

"รูปแบบข้อความล้วน" เป็น "การประมวลผลข้อความ" - วิธีการไม่สนับสนุนแท็ก HTML ใด ๆ ดังนั้นตัวแบ่งบรรทัดจะไม่ทำงานตามปกติ

สร้าง "รูปแบบข้อความ" สำหรับ "ข้อความที่กรอง (ผู้ใช้เลือกรูปแบบข้อความ)" และตั้งค่า "รูปแบบข้อความ" เป็น "ข้อความธรรมดา"


สิ่งที่แก้ไขได้สำหรับฉันคือเปลี่ยนฟิลด์ในประเภทเนื้อหาเป็น "ข้อความที่กรอง - ผู้ใช้เลือก" แต่จากนั้นฉันตรวจสอบให้แน่ใจว่าผู้ใช้มีสิทธิ์เข้าถึงตัวแก้ไขข้อความธรรมดาเท่านั้น อย่างใดที่ทำงาน หากผู้ใช้มีสิทธิ์เข้าถึงเครื่องมือแก้ไขข้อความอื่น ๆ สิ่งนี้จะไม่ดีนัก
Christia

-2

โมดูลที่ยอดเยี่ยมนี้สามารถช่วยคุณ https://drupal.org/project/wysiwyg_linebreaks

Wysiwyg Linebreaks ช่วยให้ผู้ใช้ wysiwyg Editors สามารถบันทึกและเปิดมาร์กอัพจากเว็บไซต์ของพวกเขาด้วย linebreaks แทน<p>และ<br /> แท็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.