จะทำ Project ใหม่ กำลังเลือก framework ก็กำหนดความคาดหวังกันซะหน่อย
เราคาดหวังอะไรจาก framework บ้าง?
================================
- เป็น web app
- ฟรี ไม่ติดเรื่องลิขสิทธิ์
- ภาษา เป็น php น่าจะดี
(เพื่อเลี่ยงปัญหาลิขสิทธิ์ java หรือความไม่แน่นอนใดๆ ที่อาจจะเกิดขึ้น)
- รองรับ postgres, mysql
- มีเอกสารเพียงพอ
- ควรอำนวยความสะดวก ในสร้าง app
(ทำงานหลักๆของ app คงไม่พ้น หน้า Search และแสดงข้อมูล
แล้วก็ Insert, Update, Delete)
framework ควรเอื้อให้พัฒนาได้อย่างเร็วๆ (เช่น Validate input data)
เคยใช้ oracle application express (APEX) สร้าง App
ให้อารมณ์เหมือน ทำ M$ Access
(คือ click ๆๆๆ แล้ว key code นิดหน่อย แล้วได้ เป็น app ขึ้นมาใช้งาน)
แต่ต่างจาก access ตรงที่หน้าจอ User Interface เป็น Web
ถ้า framework เอื้อให้ทำได้อย่าง APEX นี่จะดีมาก
- เพิ่มส่วนขยายได้
เช่น อยากเพิ่ม lib ของ AJAX, JSON, JQuery, etc.
framework ก็เอื้อให้สามารถทำได้
(ถ้าไม่ได้พร้อมใช้ ก็ขอให้มีตัวอย่างคนที่ทำสำเร็จมาแล้ว
ไม่ต้องไล่แก้ code เพื่อเพิ่มเติม module ต่างๆ)
- เขียน code เพิ่มเติมสำหรับงานใน app ของเราได้
- Import Initial data ได้
- ติดต่อสื่อสารกับระบบอื่นๆได้
- เหมาะแก่การประมวลผล เพื่อออก report
- กำหนดสิทธิ์ผู้ใช้ (ACL)
- รองรับ Template
- Performance
เลยมาทำ research ตัว Drupal ดู สรุปได้ความดังนี้
โดยรวม
=======
- เป็น web app
- GNU GPL = นำมาใช้งานได้ฟรี
- เป็น php
- รองรับทั้ง postgres, mysql
(บาง module เช่น http://drupal.org/project/data รองรับเฉพาะ mysql)
(ใน D7 มีแยก layer ออกเป็น database abstraction
ทำให้ module ต่างๆ ไม่ต้องเขียนแยกสำหรับแต่ละ db อีกต่อไป)
- มีเอกสารพอสมควร (เพราะเป็นที่นิยม และมีผู้ใช้เยอะ)
- มี User Interface ให้ admin กำหนดสิทธิ์ + นิยามใหม่ได้โดยง่าย
รวมถึง รองรับ OpenID และ OAuth
- รองรับ Template
- มีระบบ cache (ซึ่งกำหนดได้หลายระดับ) เพื่อเพิ่ม Performance
(ไว้ทำ Project เสร็จคงให้รายละเอียดได้ว่าช้าแค่ไหน tune ยังไง)
สร้าง app ได้โดยง่าย?
===================
เนื่องจาก Drupal เริ่มต้นถูกสร้างขึ้นเพื่อเป็น CMS
ทำงานหลักๆของ app เช่น ทำหน้าหน้า Search และแสดงข้อมูล
แล้วก็ Insert, Update, Delete นั้น
Drupal มีหน้าจอ interface ให้กดๆ
(อาจจะกินเวลาในขั้นตอนตั้งชื่อตัวแปรบ้าง)
ก็จะได้หน้าผลลัพธ์ออกมาแล้ว !!!
โดยทั่วไป เมื่อพูดถึง CMS เราจะนึกถึงข้อมูลเพียง topic + body
(เช่น blog, news, forum) แล้วก็ส่วน comment
เลยสงสัยว่าด้วย drupal เราจะสร้างเนื้อหา (content)
หรือ ประเภทของเนื้อหา (content type) ที่มี field เพิ่มเติมตามความต้องการได้หรือ
(เช่น เนื้อหาประเภทหนังสือ มี isbn, ราคา, จำนวนหน้า เป็นต้น)
คำตอบคือ http://drupal.org/project/cck คือผู้อยู่เบื้องหลังคุณสมบัตินี้ครับ
(ซึ่งมีคุณสมบัติในส่วน ย้ายโครงสร้างข้อมูลที่กำหนดขึ้นนี้ ไปยัง production env ด้วย)
ซึ่งเราสามารถ config ให้ Validate input data
แล้ว drupal จะคอยตรวจสอบ + แสดงผลเตือนผู้ใช้ให้
เราไม่ต้อง coding สำหรับความต้องการนี้
ประเภทข้อมูลแบบ email http://drupal.org/project/email
หรือ ผูกรูปภาพเข้ากับ recode ในฐานข้อมูล http://drupal.org/project/imagefield
fields for content types that can be used to display video, image, and audio files from various third party providers (such as youtube) http://drupal.org/project/emfield
ตัวอย่าง วิธีทำหน้า Search criteria โดยไม่ต้อง code
http://itshee.exteen.com/20090608/views-drupal
http://civicactions.com/blog/2009/apr/28/views_filter_blocks_drupal_6
ซึ่งตัว search result สามารถกำหนดให้แสดงผลเป็นตาราง
+ build-in ส่วน next prev last ในกรณีที่ผลลัพธ์มากกว่า 1 หน้า
+ ผู้ใช้สามารถกดตาม column ต่างๆ ให้เรียงลำดับข้อมูลมากน้อยได้
หรือ แสดงผลการค้นหาแบบ google ได้
กำหนดรูปแบบการแสดงผลข้อมูล http://drupal.org/project/contemplate
ตอน research อยู่, สงสัยอยู่ว่า cms ส่วนมากจะเป็นเหมือน blog
คือจะมี content หลัก แล้วก็ comment
เราสามารถ content มาลิงค์ความสัมพันธ์แบบ foriegn key ไปยังอีก content ได้หรือ
โดยที่ content อาจจะเป็นคนละ content type กันเช่น
content ประเภทอัลบั๊มเพลง สัมพันธ์กับ content type ชื่อเพลง
ได้คำตอบว่า http://drupal.org/project/cck ในส่วน nodereference ทำในส่วนนี้ได้
(ย้ายไปอยู่ในส่วน code module แล้วใน D7)
extension
==========
Drupal มี module ให้ download และติดตั้งเพื่อเพิ่มส่วนขยายได้อย่างง่ายดาย
ตัวอย่างวิธีการ http://drupal.org/node/587878
เป็นการใช้ module lightbox ที่ทำให้เมื่อเรากดที่รูป ระบบจะแสดงรูปในแบบ fullscreen
ผู้ใช้เลื่อนดูรูปก่อนหน้า หรือถัดไปได้ (เหมือนใน facebook) หรือเป็น slide show ก็ได้
(ไม่ต้อง coding ใดๆ อีกเช่นเคย)
ซึ่งเราสามารถเขียน code สร้าง module เพิ่มเติมสำหรับงานใน app ของเราได้เช่นกัน
(Thai version - http://www.thaitux.info/node/426)
หน้าเก็บค่า config ของ module นี่ เขียน code น้อยมาก
ตัวอย่างการเขียน page ที่บันทึกข้อมูลลง db เมื่อผู้ใช้กรอกและกดปุ่ม submit
http://coderepositories.blogspot.com/2011/02/drupal-module-inset-data.html
อ่านต่อ
No comments:
Post a Comment