Drupal

Markdown and Syntaxhighlighter

ผมใช้ Markdown เป็น input format มาตั้งแต่ต้น แต่ก่อนหน้านี้ใช้ GeSHi เป็น Syntax Highlighter มาโดยตลอด แต่พักหลัง ๆ เริ่มอยากจะโอนความสามารถนี้มาอยู่ฝั่ง client แทนที่จะป็น server เพราะคิดว่า การทำงานแค่นี้ ใช้ javascript แทนได้ และไม่ได้กินทรัพยากรเครื่องมากนัก และอยากจะลดภาระของ server ลงด้วย จึงตัดสินใจเปลี่ยนมาใช้โมดูล Syntaxhighlighter แทน

ผมลองใช้ Syntaxhighlighter อยู่หลายครั้ง แต่ไม่ประสบความสำเร็จมากนัก เพราะโค้ดที่ได้มันแปลก ๆ คือ ถูก Markdown แปลงโค้ด แล้วถึงจะโดน Syntaxhighlighter แปลงอีกรอบ ผมหาวิธีแก้ไม่ได้สักที ลองเปลี่ยนลำดับการทำงานของ filter ก็ไม่ได้ผล สุดท้ายเลยกลับไปใช้ GeSHi ตามเดิม

วันนี้ลองอีก สาเหตุเพราะ GeSHi ดูเหมือนจะมีปัญหากับ Drupal 7 จนแล้วจนรอดก็ดูท่าจะแก้ปัญหาไม่ได้ ลองมั่วไปเรื่อย ๆ จนพบว่า

ถ้าเปลี่ยน Tag Name ในหน้า Config ของ Syntax highlighter จาก pre มาเป็น p ทุกอย่างจะทำงานได้เป็นปกติทั้ง Markdown และ Syntaxhighlighter

... เอาเป็นว่าผมยังไม่เจอปัญหาอื่นละกัน

Unexpected Error in Drupal

วันก่อนอัพเกรด Drupal จากรุ่น 6 เป็นรุ่น 7 เพราะชอบความสามารถของ Drupal 7 หลาย ๆ ส่วน และไม่คิดว่ามันจะมีปัญหาอะไรจุกจิก ผมเชื่อในความสามารถของทีมพัฒนา Drupal ค่อนข้างมาก แต่ผมคิดผิด!

ในช่วงแรก ปัญหาทุกอย่างสามารถแก้ไขได้อยู่เรื่อย ๆ เพราะไม่ใช่เรื่องใหญ่มากนัก (hilight code ไม่ได้นี่เรื่องเล็ก?) แต่พออัพเกรดจาก 7.2 เป็น 7.7 เท่านั้นแหละปัญหาใหญ่เกิดขึ้นทันที

The website encountered an unexpected error. Please try again later.

เมื่อขึ้นข้อความนี้ เหมือนเว็บทั้งเว็บจะใช้การไม่ได้ และแทบจะทำอะไรไม่ได้เลย ลองค้นหาจาก Google ก็ไม่ได้เรื่องได้ความอะไรมากนัก ลองไปลองมาหลายครั้งจนพบว่า มันเป็นที่โฮสต์ และการจัดการไฟล์ของ Drupal เอง เพราะว่าบน localhost นั้นทำงานได้ปกติ ผมอยากจะถอยกลับไปใช้รุ่น 7.2 แต่พอดี ไม่ได้สำรองฐานข้อมูลไว้ (สะเพร่าเอง) เลยต้องหาวิธีแก้ไปเรื่อย ๆ

Tags:

Spam on my site

หลังจากที่อัพเกรดเว็บเป็น Drupal เสร็จ ผมก็เข้ามาดูอยู่เรื่อย ๆ ไม่พบอะไรผิดปกติ นอกจากข้อมูลใน Google Analytic ที่มีจำนวนของ visitor ลดลงเรื่อย ๆ มันช่างน่าเศร้า...

แต่วันนี้เห็นว่ามีจำนวนความคิดเห็นโผล่ที่หน้าแรก... ใครมาโพสต์อะไรไว้หว่า พอตรวจสอบกลับพบว่าเป็น spam ทั้งนั้นเลย ไปตรวจสอบดูปาเข้าไป 29,284 ความคิดเห็นแล้ว คิดแล้วเหมือนไฟที่ลามอยู่ใต้ใบไม้ที่กองหนาทีบในป่ายังไงยังงั้น กว่าจะรู้ตัว มันก็ลุกลามกินพื้นที่ไปมากมายมหศาลแล้ว

ก่อนจะจัดการอะไรลงไป ก็มาหาสาเหตุก่อน เพราะผมได้ลง Mollom ซึ่งเอาไว้จัดการกับ spam อยู่แล้ว และพบว่า Mollom มีปัญหา แจ้ง error เกี่ยวกับการตั้งค่าการตรวจสอบ field ต่าง ๆ ของ Drupal มีปัญหา ตอนแรกที่อัพเกรดเสร็จ ผมตรวจสอบดีแล้วว่า มันไม่มีปัญหาอะไร เลยไม่ได้ดูอีก จนมาถึงวันนี้

Upgrade to Drupal 7

ฤกษ์งามยามดี หรือหาเรื่องอันนี้ก็ไม่รู้ แต่เอาเป็นว่า อัพเกรดเว็บเป็น Drupal 7 ไปแล้ว และดูท่าจะมีปัญหาให้แก้อยู่เรื่อย ๆ อย่างเมนูหลักไม่โผล่ แต่เมนูรองโผล่มาเฉย ๆ กับอะไรต่อมิอะไรอีกสารพัด

ไม่ชิน และก็ไม่ค่อยเข้าใจกับ Drupal 7 สักเท่าไหร่ คงต้องใช้เวลาปรับตัวอีกสักพัก แถมโมดูลหลายตัวก็ยังเป็น dev, alpha, beta อยู่ โดยเฉพาะ GeSHi Syntax Highlighter ที่ใช้ไม่ได้เลย กำลังลังเลว่าจะเปลี่ยนเป็นตัวอื่นดีไหมอยู่เหมือนกัน (ธีมที่ใช้ยังเป็น dev อยู่เลย...)

ตอนนี้ก็ใช้ไปก่อนละกัน

Theme's comment from Blognone's members

ช่วงเดือนธันวาคม ปลายปี 2551 ผมนั่งทำธีม Drupal ใหม่สำหรับเว็บนี้ (ธีมปัจจุปันนี่แหละ) โดยเริ่มจาก Garland ถึงใครจะบอกว่ามันไม่ใช่จุดเริ่มต้นที่ดีนัก แต่ผมต้องการธีมที่แสดงหลายคอลัมภ์ได้ และเปลี่ยนขนาดไปตามความละเอียดของหน้าจอได้ ที่จริงธีมก่อนหน้านี้ (Candy Bar) ก็ทำได้แต่มันยังไม่สุดในความคิดผม และไม่ได้เก็บรายละเอียดสักเท่าไหร่

ธีมนี้ (Blue Light) จดประสงค์หลักคือ อยากจะให้มันเป็นธีมที่เรียบง่าย ดูสะอาด สบายตามากที่สุด แต่ทำคนเดียว มันมองไม่เห็นอะไรมากนัก พอไปเห็นว่าทาง Wordpress เขามีรับวิจารณ์ธีม กับการออกแบบเว็บ ผมเลยลองเอาแนวคิดนั้นไปลองดูบ้างกับทาง Blognone

ผลที่ได้ ไม่ค่อยดีนัก คือมีคนมาแนะนำแค่ 2 คน (คุณ l2aelba กับคุณ desci) แต่ก็ยังดีกว่าไม่มี ซึ่งผมสรุปได้ว่า

  • หัวข้อ แท็ก และเนื้อหา แบ่งแยกออกจากกันไม่ชัดเจน
  • ดูเรียบเกินไป ไร้มิติ ควรเพิ่มแสงเงา และ texture เข้ามาบ้าง
  • เนื้อหาไม่โดดเด่น (อันนี้เป็น blog มันไร้สาระ (มั้ง) เลยขอข้ามละกัน!)

ผมเลยใส่แสงของดาวสีฟ้าลงไปที่หัวข้อ กับเพิ่มระยะห่างระหว่างหัวข้อกับเนื้อหา แล้วก็ใส่การไล่สีที่เมนูอีกนิดหน่อย กลัวว่าทำมากไป เดี๋ยวมันจะผิดแนวคิดที่จะทำให้มันเรียบง่ายไปเสียก่อน

ป.ล. ผมกะว่าจะปล่อยธีมนี้เป็น contributed theme บน Drupal.org ด้วย และจะ port ไปยัง Drupal 7 ด้วย

Advance Markdown Filter

คราวก่อนเขียนเรื่องการใช้ Markdown Filter ไปแล้วครั้งนึง แต่เป็นแบบคร่าว ๆ ไม่ละเอียดมากนัก เพราะจำต้องเอาไปอธิบายกับเพื่อนเป็นการด่วน และตั้งใจว่าจะเขียนรายละเอียดเพิ่มเติม แต่สุดท้ายก็ทิ้งร้างมานานข้ามปี

วันนี้ได้ฤกษ์ (มั้ง) ก็เลยเอามาเขียนใหม่ และลงรายละเอียดเพิ่มเติม แล้วก็แยกจาก node เดิมออกมา เพื่อที่ว่า ถ้าใครต้องการอ่านแค่พื้นฐานจะได้ไม่งง จนเกินไป ส่วนใครที่ต้องการรายละเอียดเกี่ยวกับคำสั่งทั้งหมดจะได้มาอ่านใน node นี้แทน

แต่จะไม่ลงรายละเอียดลึกมากนัก ถ้าต้องการรายละเอียดเชิงลึกจริง ๆ ให้อ่านจากแหล่งอ้างอิงแล้วกันนะครับ เขียนเพื่อเอาไปใช้ทั่ว ๆ ไปเป็นหลักครับ

Drupal and re-order book page

ผมใช้ Drupal ทำเว็บให้กับที่หนึ่งอยู่ โดยมันเป็นเว็บที่เอาไว้ลงนิยายอะไรทำนองนั้น ทุกอย่างดูจะไปด้วยได้ดีกับ Drupal แต่ก็เจอกับอะไรสะดุด ๆ กับมันบ้างเหมือนกัน อย่างแรกคือ เสน่ห์ของบอร์ดที่มีคนโพสต่อกันไปเรื่อย ๆ มันหายไป และติดตามความคิดเห็นได้ยากพอสมควร เพราะมันอยู่ต่างที่กัน แต่ก็แก้ปัญหาได้ด้วย Module: Views (Recent_comment) แม้จะไม่ดีเท่าที่ควร แต่ก็จบปัญหานี้ไป

ปัญหาที่ตามมาอีกอย่างหนึ่งคือ ถ้าหากนิยายนั้นมาจำนวนตอนมากกว่า 31 ตอนแล้วล่ะก็ เป็นเหมือนนรก เพราะว่า Drupal 6 กำหนด weight ของ book มาแค่ 31 ค่าเท่านั้น (-15 ถึง 15)

Tags:

Candybar Drupal Theme 1.0

Candybar เป็นธีม ที่มีขอบมน ๆ ซึ่งได้จาก -moz-border-radius กับ -webkit-border-radius ดังนั้น มันจะไม่แสดงผลบน Opera และ Internet Explorer แต่จะแสดงผลกับ Firefox (Gecko Engine) และ Safari/Chrome (Webkit Engine) หรือเบราว์เซอร์อื่น ๆ ที่ใช้ Engine พวกนี้

ผมตั้งใจจะทำสำหรับใช้ในเว็บนี้เท่านั้น จึงไม่ได้ลองแก้ไขในส่วนฟอรั่มซึ่งเว็บนี้ไม่มี จึงไม่รู้ว่า หากนำไปใช้ที่อื่น ตรงนี้จะเป็นอย่างไรบ้าง

สิ่งที่ทำเป็นพิเศษคือช่องสำหรับ Google Custom Search แต่จะให้เห็นกล่องนี้ได้ต้องปิดช่อง Search Box ใน Theme Configuration แล้วเปิด Google Custom Search แทน แต่หากเปิดไว้ทั้งสองอัน มันจะแสดง Search Box ของ Search module แทน แต่หากต้องการความสามารถมากกว่านี้ เช่น แสดงผลการค้นหาลงไปแทนที่ Search module นั้น แนะนำให้ใช้ Google Custom Search แทน

อัพเกรด Drupal แบบง่าย ๆ

Drupal เป็น CMS ตัวนึงซึ่งมีความสามารถสูงพอสมควร แต่ผมมักจะประสบปัญหาตอนอัพเกรดว่า มันต้องทำอะไรบ้างอยู่บ่อย ๆ จนต้องเปิด upgrade.txt ดูทุกครั้ง เลยสรุปวิธีอัพเกรดอย่างง่าย ๆ มาเก็บไว้ในเว็บเผื่อใครสนใจจะได้ทำกันได้ง่าย ๆ

  1. เข้าสู่ระบบด้วยผู้ใช้คนแรก (UserID 1) หากไม่มี ก็เข้าเป็นผู้ดูแลระบบ แต่ต้องห้ามปิดเบราว์เซอร์เด็ดขาด
  2. เปลี่ยนเป็นโหมด Off-line ผ่านทาง Site Maintenance
  3. เปลี่ยนธีมกลับเป็นธีมหลัก เช่น Garland
  4. ปิดโมมูลที่เขียนเองหรือดาวโหลดมาเสียก่อน (หากกลัวว่าจะลืมว่าเปิดอะไรไว้บ้างก็จดไว้)
  5. สำรองข้อมูลเสียก่อน เช่น โฟลเดอร์ sites, files ไฟล์ .htaccess และ robots.txt หรือไฟล์อื่น ๆ ที่คุณสร้างขึ้นมาเอง (ปกติแล้วผมจะเว้นไว้ไม่ลบแทนสำรอง -- ไม่แนะนำ)
  6. ลบไฟล์ของ Drupal บนเซิฟเวอร์ทิ้ง
  7. อัพโหลดไฟล์ Drupal ใหม่ขึ้นไปแทนที่
  8. เรียกไฟล์ update.php (http://yoursite/update.php) -- หากเรียกแล้วใช้ไม่ได้ ให้แก้ไขไฟล์ setting.php โดยการ เปลี่ยน $update_free_access จาก FALSE เป็น TRUE (แล้วอย่าลืมเปลี่ยนกลับตอนอัพเกรดเสร็จแล้ว)
  9. เปิดโมดูลต่าง ๆ ที่ปิดไว้ในข้อ 4 ขึ้นมาใหม่ แล้วเรียกไฟล์ update.php อีกครั้ง
  10. เปลี่ยนธีมกลับเป็นอย่างเดิม
  11. เปลี่ยนโหมดให้กลับมาเป็น Online ก็เรียบร้อย

ขอให้มีความสุขกับ Drupal ครับ :)

Tags:

วิธีใช้ Markdown

ขอออกตัวก่อนว่า จริง ๆ แล้วแก้ที่ /filter/tips ก็ได้ แต่ตอนนี้ยังไม่อยากยุ่งกับ ไฟล์ข้างใน เลยขอสร้างเป็นหน้าเฉพาะการไปพลาง ๆ ก่อน

Input Format ที่มีให้เลือกใช้มีอยู่ 2 อย่างคือ Markdown กับ Filter HTML แต่ ผมบังคับเป็น Markdown ไว้เพื่อให้ผ่านการตรวจสอบของ W3C Validator การใช้ Markdown น่าจะเป็นทางออกที่ดีที่สุด (โดยส่วนตัวแล้ว มันก็เขียนไม่ได้ยุ่งยากอะไรมากนัก)

Node นี้จะเป็นข้อมูลพื้นฐาน ถ้าต้องการจะอ่านแบบรายละเอียดที่ลึกกว่านี้สามารถอ่านได้จากที่นี่