รับงานทำเว็บด้วย Drupal มา (คนจ้างก็อยู่แถวนี้ล่ะ) เนื่องจากเป็นเว็บจับกลุ่มตลาดทั่วไป ผมและนายจ้างเลยเห็นตรงกันว่าควรมี WSYIWYG editor (เว็บที่คนเข้าเขียน Markdown แบบ Blognone คงหาได้ยาก)
การเลือก editor ทำได้ไม่ยาก เพราะ TinyMCE ดูจะเป็น de facto ไปเรียบร้อยแล้ว (คงเป็นเพราะ FCKEditor มันอืดมากถึงมากที่สุด) แถมตัวโมดูล TinyMCE ของ Drupal เองก็พัฒนามากกว่าที่ผมเคยใช้เมื่อชาติปางก่อนมาก
อย่างไรก็ตาม กว่าจะเซ็ตระบบ WSYIWYG เล่นเอาเหนื่อย ส่วนหนึ่งเป็นเพราะความซับซ้อนของระบบ โมดูลลิงก์กันวุ่นวาย อีกส่วนหนึ่งเป็นเพราะผมแทบไม่เคยใช้ WSYIWYG ทำให้ต้องเริ่มสะสมประสบการณ์ด้านนี้ใหม่หมด
เพื่อไม่ให้เหนื่อยฟรี บันทึกไว้เป็นอนุสรณ์
เวอร์ชัน
เวอร์ชันปัจจุบันของ TinyMCE คือ 3.x ซึ่งโมดูลสนับสนุนเฉพาะ Drupal 6.x
เว็บนี้ผมใช้ Drupal 5.x เพราะกลัวปัญหาโมดูลอื่นไม่อัพเดต เลยต้องใช้ TinyMCE 2.x เท่านั้น (ส่วนตัวโมดูล TinyMCE for Drupal ใช้อันเดียวกันได้) ถ้าผิดเวอร์ชัน จะเกิดปัญหาแปลกๆ มากมาย เช่น ปุ่มไม่ขึ้นโดยไม่ทราบสาเหตุ หรือปลั๊กอินใช้ไม่ได้
อ้างอิง: Drupal Forum
การติดตั้ง
ติดตั้ง TinyMCE สำหรับ Drupal ต้องทำ 2 เด้ง คือลง โมดูล TinyMCE ซึ่งเป็นแค่ตัวเชื่อมเฉยๆ ลงใน /sites/all/modules ก่อน จากนั้นดาวน์โหลด TinyMCE ตัวจริงมาจากเว็บของ TinyMCE แล้วก็อปไปใส่ไว้ใน modules/tinymce/tinymce อีกชั้น
อ่านวิธีติดตั้งอย่างละเอียดใน INSTALL.txt ที่มากับโมดูล TinyMCE
Drupal break
ระบบ node ของ Drupal นั้นสนับสนุนแท็ก <!—break—> ซึ่งใช้แยก excerpt ออกจากตัวเนื้อหาเต็ม ปกติถ้าใช้ textarea ธรรมดาก็ไม่ยากอะไร แต่พอมีระบบ WYSIWYG เลยต้องเซ็ตกันเล็กน้อย
โชคดีที่โมดูล TinyMCE เตรียมทางออกไว้ให้แล้ว (ผ่านระบบปลั๊กอินของ TinyMCE ตัวเต็ม) เราแค่ก็อปไดเรคทอรี drupalbreak ของโมดูล TinyMCE ไปใส่ไว้ในไดเรคทอรี plugins ของตัว TinyMCE ตัวเต็ม และตั้งค่าในไฟล์ plugin_req.php อีกนิดหน่อย แล้วไปเพิ่มปุ่มในหน้า config ของ TinyMCE อีกทีหนึ่ง (จะมีให้เลือกสองปุ่ม อีกอันคือ <!—pagebreak—> ไว้ใช้คู่กับโมดูล paging)
อ่านวิธีติดตั้งอย่างละเอียดใน /plugins/drupalbreak/README.txt ที่มากับโมดูล TinyMCE
หมายเหตุ: การเพิ่มปุ่ม <!—break—> จะทำให้ข้อความก่อนและหลัง <!—break—> ติดกัน (ถ้าใช้ input format เป็น Filtered HTML ซึ่งเป็น default) ให้แก้โดยการเพิ่มแท็ก <p> ในรายการแท็กที่อนุญาตของ HTML filter
Compressor
TinyMCE เป็นก้อน javascript (+รูปภาพ) ที่ส่งตรงมาจากเซิร์ฟเวอร์ กว่าจะโหลดขึ้นกินเวลาพอสมควร เราสามารถปรับแต่งประสิทธิภาพได้โดยลงปลั๊กอิน compressor ของ TinyMCE เพิ่มเติม
ปลั๊กอิน compressor ตอนนี้มี 4 ภาษา คือ PHP, ASP.NET, JSP และ CFM สำหรับ Drupal ใช้ของ PHP วิธีลงอ่านได้ตามลิงก์
ที่ต้องระวังคือเรื่องเวอร์ชันของ TinyMCE เช่นกัน โดย TinyMCE 2.x นั้นต้องใช้คู่กับ TinyMCE compressor 1.x เท่านั้น (พลาดมาแล้ว) ส่วน TinyMCE 3.x ถึงจะคู่กับ TinyMCE compressor 2.x
รายละเอียดดูใน: TinyMCE Wiki หรือ เอกสารของ Drupal
Image Upload
ปัญหาสำคัญของ WYSIWYG บนเว็บทุกตัว คือเวลาใส่รูป ผู้ใช้จะคาดหวังการทำงานแบบ Word คือกดปุ่ม Image แล้วขึ้นหน้าต่าง Browse แต่สำหรับเว็บแล้ว เราจะต้องอัพโหลดรูปต่างหาก แล้วค่อยเอา URL มาใส่ในไดอะล็อกของ WYSIWYG
แน่นอนว่าถ้าปล่อยให้เป็นแบบนั้น เจอผู้ใช้บ่นแน่ๆ ทางแก้มีแต่ยากหน่อย ต้องลงโมดูล Images และ Image Assist ช่วย แถมโมดูล Image Assist นั้นจะมีปลั๊กอินแบบเดียวกับ Drupal break ต้องติดตั้งเพิ่มต่างหาก
เอกสารดูได้ในไฟล์ของ Image Assist หรือความคิดเห็นอันนี้ใน Drupal Forum
บั๊กของโมดูล TinyMCE
โมดูล TinyMCE ของ Drupal นั้นใช้ระบบตั้งค่าแบบ profile คือเซ็ตค่าให้กับ TinyMCE ได้หลายแบบ เช่น มีปุ่มไม่เท่ากัน (นับหน่วยเป็น profile) จากนั้นค่อยนำ profile มา assign ให้กับแต่ role อีกที
ปัญหามีอยู่ว่า วิธีจัดความสำคัญของโมดูลดันเป็นแบบนี้
ดังนั้นถ้าผมมี profile ของ TinyMCE 2 อัน อันแรกสำหรับผู้ใช้ทั่วไป อันที่สองสำหรับสต๊าฟของเว็บไซต์ และถ้าอันแรกมีชื่ออักษรภาษาอังกฤษที่มาก่อนอันที่สอง จะเกิดบั๊กทันที คือสต๊าฟจะเห็น profile อันแรกแทนที่จะเป็นอันที่สอง
วิธีแก้เป็น workaround ง่ายๆ คือตั้งชื่อให้มันเรียงนั่นเอง
รายละเอียดดูในบั๊กนี้ และบั๊กนี้
ไว้เจออะไรใหม่ๆ แล้วจะมาอัพเดตหน้านี้เพิ่ม
จำได้ว่าเคยอ่านเจอ.. ใน drupal in thai มีคนเอา Link มาลงเกี่ยวกับ Comparision of Drupal 5 WYSIWYG Editors อ่านผ่านๆ แล้ว เลยมองว่า FCKeditor อาจจะน่าสนใจกว่า..
ไม่ทราบคุณ mk มีความเห็นว่าอย่างไรบ้างครับ
ตัวอัพรูปแนะนำ imce ทำงานร่วมกับ tinymce ได้
โดยส่วนตัวแล้วรู้สึกว่า HTML ที่ FCKeditor สร้างให้กับ Feature ดีกว่า TinyMCE นะ
ปกติเวลาแก้ content ใน exteen.com ไม่ได้ใช้ TinyMCE editor เลย
เพราะรู้สึกว่ามันสร้าง HTML ได้รกและ bug เยอะเหลือเกิน
แปลกใจที่บอกว่า TinyMCE เป็น de facto
เพราะจากประสบการณ์เห็นคนใช้ FCKeditor เยอะกว่านะ
หรือว่าเราอยู่ในชนกลุ่มน้อยเนี่ย -_-!
@jrp13th FCKEditor อืดกว่า TinyMCE มากๆ อย่างที่เขียนไปครับ
ลอง imce module ดูสิสำหรับการ upload รูป มันจะเป็นปุ่ม browse ขึ้นตรงข้างๆ ช่องให้ใส่ image URL เวลาแทรกรูป สะดวกดี
ผมใช้ FCKEditor เหมือนกัน ก็อืดจริง แต่ผมใช้คนเดียวเลยไม่ต้องกลัว user เบื่อ ส่วนรูปผมใช้ IMCE ซึ่งคิดว่าทำงานกับ Tiny ได้เหมือนกัน
หลังๆ มีตัวอื่นออกมาเยอะ http://drupal.org/node/208456 อันที่ผมเคยได้ยินว่าเล็ก+ทำงานดี คือ nicEdit กับ XStandard
ได้ยินว่า Acquia จะทำ rich text editor เฉพาะสำหรับ Drupal ด้วย คงอีกซักพักนึง
ยังไงเปลี่ยน RTE มันเปลี่ยนกันได้เพราะบันทึกไว้เป็น HTML ถ้าจะเปลี่ยนจาก markdown หรือ textile นี่สิลำบาก
@chris nicEdit น่าสนใจทีเดียว ติดแค่ว่าไม่แน่ใจเรื่อง integration กับโมดูลอัพโหลดรูปอื่นๆ ไม่รู้มีหรือเปล่า
ส่วน IMCE เดี๋ยวลองดู ขอบคุณครับ