webzer.net

I blog to God but the sky is buggy ...


ทำไมธีมดรูปัลไม่โดน!

ช่วงนี้เศรษฐกิจไม่ดี งานไม่ค่อยเข้า ผมก็เลยได้กลับมายุ่งกับการทำธีมส่งเข้า drupal.org อีกครั้ง หลังจากห่างหายไปหลายเดือน แต่ดูเหมือนว่าธีมใหม่ๆ แบบโดนๆ ที่คนส่งเข้าเว็บแม่นั้นมีน้อยมาก (ถ้าเทียบกับ ธีมสำหรับเวิร์ดเพรส ที่ผมชอบแอบย่องไปส่องดูบ่อยๆ) เลยอยากจะโน้ตความคิดเห็นส่วนตัวไว้สักหน่อยว่า เหตุผลใดที่ทำให้ ธีมดรูปัลที่แจกจ่ายกันในเว็บแม่นั้น ถึงไม่ค่อยโดนใจผู้ใช้งาน และโพสต์นี้อาจช่วยเพิ่มกำลังใจ (หรือตัดกำลังใจ) เว็บดีไซเนอร์ชาวไทยที่กำลังสนใจทำธีมดรูปัลอยู่ก็ได้

ธีมที่แจกจ่ายกันใน drupal.org นั้น ส่วนใหญ่เจ๋งมากๆ พูดจริงๆนะไม่ได้ประชด เพราะถ้าดูที่เนื้อในของธีม เราจะเห็นเจตนาดีของผู้แจกจ่าย ที่พยายามลดขั้นตอนในการทำธีมของเราให้ได้มากที่สุดแล้ว (แต่เผอิญดันลืมลดขั้นตอนการดีไซน์ไปซะนี่) ยกตัวอย่าง ธีมตั้งต้นยอดนิยม (starter themes) เช่น Zen, Genesis, Blueprint, Tendu, Basic และอื่นๆ ธีมเหล่านี้เหมือนคฤหาสน์ที่มีรากฐานมั่นคง แต่เราต้องซื้อเฟอร์นิเจอร์และทาสีให้มันเอง (ดู ตารางเปรียบเทียบ Drupal6.x Starter Themes)

สำหรับ Drupal Core สิ่งที่กำลังปรับปรุงแน่ๆ คือ ทำให้มันใช้งานง่ายขึ้น และทำให้ผู้ใช้ไม่รู้สึกกลัวหน้าตาขึงขังเกินเหตุของมัน ได้ข่าวว่า พี่มาร์คแอนด์เดอะแก๊งค์ที่ก่อนหน้านี้รับหน้าที่รื้อดีไซน์ของ drupal.org ไปแล้วนั้น กำลังจะเข้ามาปรับปรุงเรื่อง Usability และ User experience สำหรับอินเตอร์เฟสของ Drupal 7 อีกหน (ลองอ่านดูในบล็อกของ Dries : Mark Boulton to help with Drupal 7) แต่สำหรับคนที่อยากได้ธีมดรูปัลหน้าตาเจ็บจี๊ดได้ใจ แบบดาวน์โหลดปุ๊บใช้ได้ปั๊บเลยนั้น ดรูปัลคือถิ่นทุรกันดารสำหรับคุณแน่นอน Confirm!

และต่อไปนี้ คือเหตุผลที่ผมเดาว่า ทำไมเว็บดีไซเนอร์ไม่ค่อยอยากทำธีมสำหรับดรูปัล?

  1. ข้อแรกสุดเลย ก็โค้ดมันเข้าใจยากนี่หว่า! : ข้อนี้น่าเป็นเหตุผลสำคัญที่สุดที่ทำให้เว็บดีไซเนอร์ไม่เลือกทำธีมดรูปัล เพราะถึงแม้บางคนจะเชี่ยวชาญ Graphic / XHTML / CSS ขนาดไหน แต่ถ้าไม่ทำความคุ้นเคยกับ Drupal API มันก็ยากที่จะจัดการรูปลักษณ์ของธีมให้ได้ดั่งใจ และแน่นอน Drupal API มันมีแต่โค้ดให้ดู กว่าจะลองผิดลองถูกจนเข้าที่เข้าทาง หลายคนก็หนีไปใช้แพลตฟอร์มอื่นแล้ว แต่จริงๆเราไม่ต้องหาวิธีใช้ API พวกนั้นเองก็ได้ ถ้าลองแงะธีมเจ๋งๆ อย่าง Acquia Marina ดู เราจะรู้ว่าระบบภายในของ Drupal นั้นยืดหยุ่นและให้อิสระกับคนทำธีมมากๆ (ถ้าไม่ตาลายกับโค้ด หรือสลบไปซะก่อนนะ!)
  2. ดรูปัลดูเหมือนจะไม่แยก หน้าเว็บ กับ หลังเว็บ ไว้ให้เรา : แม้ตัวระบบมันจะแยกไว้ แต่อินเตอร์เฟสข้างหน้ากับข้างหลังมันไม่ต่างกัน ลองเทียบกับ CMS หรือเว็บแอพพริเคชั่นแพลตฟอร์มอื่นๆ ส่วนมากชาวบ้านเค้าจะแยกอินเตอร์เฟสสำหรับแอดมินให้มีลักษณะเฉพาะไปเลย โดยที่เว็บดีไซเนอร์ไม่จำเป็นต้องไปแตะต้องส่วนนั้น แค่ใส่ใจหน้าเว็บของธีมตัวเองก็พอ (เช่น จูมล่า! หรือ เวิร์ดเพรส) แต่การทำธีมสำหรับดรูปัล เราต้องจัดการ CSS สำหรับส่วนอินเตอร์เฟสของแอดมินด้วย (เป็นอย่างน้อย) แม้จะสามารถกำหนด Administration theme เป็นธีมดั้งเดิมได้ แต่มันไม่ได้หมายความว่าผู้ใช้ทุกคนจะรู้ว่ามันมีฟังชั่นนี้นี่ครับ เพราะถ้าเราเปลี่ยนธีม ค่าดีฟอลต์ของ Administration theme ก็คือธีมที่เรากำลังใช้ (ไม่ใช่ Garland นะจ๊ะ) แปลว่าคนทำธีมดรูปัลที่ใส่ใจอินเตอร์เฟสส่วนแอดมินด้วย ก็มีงานต้องทำมากกว่าแพลตฟอร์มอื่นๆ
  3. ดรูปัลเต็มไปด้วยแท็ค หรือ HTML Elements ที่เราควบคุมได้ยาก (แต่จำเป็นต้องมี) : สำหรับโปรแกรมเมอร์มันคือข้อดีที่ไม่ต้องเสียเวลาเขียนโค้ดซ้ำๆ แต่สำหรับธีมเมอร์มันอาจจะเป็นส่วนเกิน ข้อนี้อธิบายยาก ต้องลองทำธีมดรูปัลดู แล้วจะเห็นว่าเราเข้าไปจัดการกับ หลายๆ elements โดยเฉพาะในส่วนแอดมินได้ยากเต็มที เช่น ตารางแสดงข้อมูลล้นขอบเลย์เอาต์, fieldset / textarea / input ยาวเกินไปจนกินพื้นที่ไซต์บาร์, สีของตารางไม่เข้ากับธีมของเรา ฯลฯ ส่วนมากจะแก้ได้ด้วย CSS แต่มันกินเวลามากมาย เหตุผลที่ต้องมี elements พวกนี้ เดาว่าคงเพราะดรูปัลเป็นแพลตฟอร์มสารพัดประโยชน์ คือ ติดตั้งครั้งเดียว ได้ทั้ง portal, blog, forum, aggregator ฯลฯ ซึ่งรูปแบบการแสดงผลข้อมูลในหน้าเว็บนั้นต่างกัน มันเลยต้องมี elements แบบกลางๆเผื่อไว้ (แต่เผอิญมันยากที่จะเข้ากับธีมอื่นๆ ที่ไม่ใช่ Garland!)
  4. โมดูลของดรูปัลเป็นตัวของตัวเองมากๆ จนไม่ยอมจำนนให้ธีม : เช่นกัน สำหรับโปรแกรมเมอร์มันคือข้อดี สำหรับธีมเมอร์มันอาจจะเป็นส่วนเกิน ข้อนี้ต้องลองนึกภาพดรูปัลเป็นตัวต่อเลโก้ โมดูลก็เหมือนชิ้นส่วนที่เราสามารถต่อเติมขึ้นรูปได้เรื่อยๆ แล้วแต่ละโมดูลของดรูปัล มันก็มี View เป็นของตัวเองซะด้วยสิ (ในที่นี้หมายถึง View ใน MVC ที่ผมพอเข้าใจบ้างนิดหน่อย) นั่นหมายความว่าโมดูลส่วนมากจะมีไฟล์ CSS ของตัวเอง ถ้ามันแสดงผลไม่เข้ากับธีม เราก็ต้องตามจองล้างจองผลาญมันอีก แม้จะ override มันได้แต่ก็กินเวลาอีกเช่นกัน
  5. มาตรฐานการเขียนโค้ดสำหรับธีมใน drupal.org นั้นเข้มงวด : ถ้าเป็นโมดูลยิ่งเข้มกว่าธีมอีก เคยเขียนเรื่องประมาณนี้ไว้แล้ว ใน Code is Discipline นอกจากนี้ contributors ต้องทำความคุ้นเคยกับ CVS หรือระบบจัดการเวอร์ชั่นที่ดรูปัลใช้อยู่ด้วย (ช่วงแรกผมงงกับไอ้ CVS นี้มาก เพราะไม่เข้าใจว่า จะมี CVS ไปทำไม หรือ Branch กับ Tag มันต่างกันยังไง แต่พอเริ่มโปรเจ็คต์แรกได้ อะไรๆก็ง่ายขึ้น)
  6. ตูข้าออกแบบได้ แต่ตูข้าไม่รู้จะเริ่มตรงไหนในดรูปัล! : เพราะผมเคยเป็น ถ้าจะให้แนะนำคนที่กำลังอยากทำธีมดรูปัล ก็อยากให้เริ่มทำความคุ้นเคยกับอินเตอร์เฟส และฟังช่ันการใช้งานหลักๆของมันก่อน และคุณจำเป็นต้องรู้ HTML/CSS ซึ่งเป็นส่วนสำคัญของการทำธีม ลองแก้สีสันหน้าตาของธีมที่ดาวน์โหลดมาดู ถ้ามีเวลาว่างก็แงะธีมของชาวบ้าน เพื่อดูโด้ดและฟังชั่นของ Drupal API ถ้าไม่ว่าง แต่อยากได้ธีมที่ออกแบบเอง ก็จ้างผม! (เขียนมาตั้งยาวเพิ่งจะเข้าเรื่องนี่เอง ฮ่าๆๆ)

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

Drupal Kick-ass Design

และยังมีอวดอีกมากมายใน drupalsites.net ลองไปหาแรงบันดาลใจที่นั่นได้ครับ

Edit 13 พ.ค. 2552 : เปลี่ยนคำว่า "ดรูปอล" เป็น "ดรูปัล" ทั้งบทความ