Isriya Paireepairit / mk / markpeak
A Thai tech geek. Co-founder of Blognone and SIU. Blogging on almost everything.
เคยมีคนถามผมว่าถ้าจะฝึกวิชา Drupal ต้องหัดอะไรบ้าง ปกติเวลาไปบรรยายมักจะยกรายชื่อโมดูลชุดนี้ประกอบ (สไลด์ - อยู่หน้า 44) แต่โมดูลที่เป็นหัวใจสำคัญจริงๆ นั้นคือ CCK กับ Views
ปัญหาของผมคือรู้ว่า CCK กับ Views สำคัญ แต่ไม่สามารถหาเหตุผลชัดๆ มาอธิบายได้ว่าทำไมมันถึงสำคัญกว่าตัวอื่น วันนี้นึกวิธีอธิบายดีๆ ได้แล้ว โดยเอาหลักของ MVC มาจับ ถ้าเรามอง Drupal ให้ข้ามระดับของ CMS ไปเป็น web framework เราจะสามารถแบ่งส่วนต่างๆ ตามหลัก MVC ได้ดังนี้
Model
Drupal เองนั้นออกแบบ datatype มาให้ค่อนข้างละเอียดอยู่แล้วในบางด้าน เช่น filter หรือ permisson ถือเป็นหน่วยที่ละเอียดสุดที่เป็นไปได้แล้ว แต่ส่วนของ content นั้น หน่วยที่เล็กที่สุดยังเป็นแค่ระดับ node ความยืดหยุ่นยังไม่เพียงพอ (เทียบกับภาษาโปรแกรมที่คุมได้แค่ string แต่ไม่ถึง char)
ดังนั้นเราต้องใช้ CCK เพื่อระบุความละเอียดให้ลงไปถึงระดับ field ซึ่งเทียบชั้นได้กับการเขียนตารางใน SQL เองแล้ว (แต่ไม่ต้องเขียนโปรแกรมเอง)
ในบางกรณี เราอาจต้องใช้โมดูลอื่นๆ ประกอบ เพื่อปรับข้อมูลชนิดอื่นที่ไม่ใช่เนื้อหาให้เป็น node (เช่น Usernode) เพื่อความสะดวกต่อส่วนของ Control กับ View แต่โดยหลักแล้ว CCK ตัวเดียวเอาอยู่หมัด
Control
ในกรณีปกติ เราสามารถมองตัว Drupal เองเป็น Control ที่ครบถ้วนสมบูรณ์ และปล่อยให้ Drupal จัดการส่วนนี้ให้เสร็จสรรพ โดยที่เราไม่ต้องทำอะไรเลย
แต่บางกรณีอีกเช่นกัน อาจต้องใช้โมดูลอย่าง Workflow และ Actions มาเพิ่มความสามารถ
View
เราสามารถแบ่งส่วนของการนำเสนอ (view) ได้เป็น 2 ระดับ คือระดับของ content structure และส่วนของรูปแบบ (style) ซึ่งส่วนหลังใช้ระบบธีม + CSS ดังเช่นเว็บไซต์ทั่วไป
แต่ส่วนของ content structure โมดูลที่สำคัญคือ Views นั่นเอง ใช้กำหนดว่าเอาข้อมูลต่างๆ (ซึ่งโดยมากมาจาก CCK) มาเรียงและนำเสนอในรูปแบบไหน (เช่น full node, list, grid, table) จากนั้นค่อยส่งต่อไปยังส่วนของธีมและ CSS อีกชั้นหนึ่ง
กรณีพิเศษบางงาน อาจต้องใช้ Panels เพื่อระบุตำแหน่งการวาง Views แบบพิเศษด้วย (โดยมากมักใช้เฉพาะหน้าแรก)
สรุป
ถ้าใช้ภาษากำลังภายในอธิบาย ต้องบอกว่า CCK คือเครื่องมือสู่ระดับอนุภาค (ย่อยสลายกำลังภายในให้เป็นหน่วยละเอียดที่สุด) ส่วน Views นั้นใช้เรียงร้อยอนุภาคขึ้นมาใหม่ให้เป็นรูปเป็นร่างตามต้องการ ถ้าควบคุมได้ทั้งอนุภาคระดับละเอียด และวิธีพลิกแพลงการประกอบอนุภาคแล้วก็ไม่ต้องกลัวใครในยุทธจักรอีกต่อไป
ป.ล. ผมว่าบล็อกอันนี้เขียนอธิบายตรงกลางๆ ได้ไม่ค่อยดีเท่าไร (ตอนคิดมันดีกว่านี้) แต่จบประทับใจเกินคาด
Comments
ลิง
30 October, 2008 - 11:24
Permalink
แหม
แหม เห็นอธิบายซะผมเห็นภาพเลยครับ ตอนนี้ก็ พัฒนา Symfony อยู่ ก็ อยากลองหาอะไรง่ายๆที่ เป็น MVC เหมือนกัน แล้วตอนนี้ก็กำลังลองดู Drupal อยู่เล่นๆ มาเจอบทความคุณ แล้ว คิดอะไร ลื่นขึ้นอีกเยอะ ขอบคุณมากครับ
juckczx
19 March, 2009 - 15:39
Permalink
ถึงตอนนี้ก็ยังใช้ Drupal
ถึงตอนนี้ก็ยังใช้ Drupal ไปไม่ถึงไหน
Add new comment