เพิ่มฟีลด์ Drupal ด้วย CCK
posted on 04 Jun 2009 06:05 by itshee in Drupalบล็อกนี้เป็นซีรีส์ของ คู่มือปรุงเว็บไซต์ฉบับ non-programmer โดยนำเคสของ stylelurf.com มาให้ดูกันครับ จะเป็นการเล่าของการทำเว็บไซต์ยากๆ โดยไม่จำเป็นต้องรู้โค้ด PHP หรือ MySQL ซักนิดเดียว
Drupal: 6.x
MODULES ที่ใช้:
คราวนี้ก็เป็นตัวหลักที่น่าสนใจคือ CCK (ไม่ใช่โรงนวดนะ) CCK เป็นมอจูล (module) หลักอีกตัวที่เว็บไซต์ดรูปัล (Drupal)นั้นใช้กันเกือบหมด ซึ่ง CCK จะเพิ่มความสามารถให้ดรูปัล ให้ผู้ใช้งานสามารถใส่ฟีลด์หรือช่องให้กรอกเพิ่มมากขึ้น แทนที่เนื้อหาเดิมที่จะมีแต่ช่อง หัวข้อ (title) กับกล่องเนื้อหา (body) เมื่อติดตั้ง CCK แล้วเราสามารถเพิ่มฟีลด์ได้อย่างอิสระ ตัวอย่างเช่นใน Stylelurf ที่เขียนไปก่อนเมื่อเอนทรีที่แล้ว ในส่วนอัปโหลดภาพสินค้าที่เป็น item จะมีช่องให้เลือกโหลดภาพ ช่องให้กรอกราคา ช่องให้กรอกแหล่งที่มา และอีกหลายอย่าง ซึ่งก็ใช้ CCK มาเป็นตัวช่วยนี่เอง
สำหรับวิธีการติดตั้งถ้าใครยังไม่คุ้นกับดรูปัลลองแวะอ่านได้ที่ พื้นฐาน Drupal Modules นอกจากนี้ในอนาคตตัว CCK นี่จะกลายมาเป็นฟังก์ชันหลักในคอร์เลยทีเดียว ดรูปัลรุ่นต่อไป ดรูปัล 7 นั้นจะนำความสามารถนี้ใส่ลงไปในคอร์ ภายใต้ชื่อ FieldAPI โดยผู้ใช้จะไม่จำเป็นต้องติดตั้ง CCK เพิ่ม (แต่ CCK ก็ยังมีการพัฒนาอยู่ แต่จะแตกสายออกไปแทน)
การใช้งาน CCK นั้นนอกจากจะสามารถใช้เดี่ยวๆ ที่มีฟีลด์เฉพาะแล้ว ยังสามารถใช้ร่วมกับมอจูลเสริมตัวอื่น เช่น
- ต้องการให้อัปโหลดไฟล์ ผ่านฟีลด์ ต้องติดตั้งทั้ง CCK + FileField
- ต้องการอัปโหลดรูป ผ่านฟีลด์ ต้องติดตั้ง CCK + FileField + ImageFiel
วิธีการเซ็ตพร้อมตัวอย่าง Stylelurf
- เข้าไปที่ Admin → Content Management → Content Types
- เลือก content type ที่สร้างจากตอนที่แล้ว อย่างอันนี้จะเลือก Item แล้วกดที่ Manage Fields
- ลงไปด้านล่างสุด ตรง New Field แล้วใส่ชื่อฟีลด์ที่เราต้องการ เช่นใส่
- ฟีลด์ สำหรับช่องให้กรอก แบรนด์สินค้า
- Label = Brand
- name = Field_brand (ใส่แค่ brand) โดยช่องนี่ใส่ได้เฉพาะอักษรพิมพ์เล็กกับตัวเลข
- Type = text
- widget type = text field
- พอกดผ่านไปอีกหน้า ก็จะมีให้กรอกเพิ่ม
- Number of values จะให้มีกี่ช่อง เราก็เลือก 1 ช่องพอ
- พอกดเซฟด้านล่าง คราวนี้ Item เราก็จะมีช่องให้กรอก แบรนด์ เพิ่มขึ้นมา เวลาเราเลือกสร้าง
- ฟีลด์ สำหรับช่องให้โหลดภาพ
- Label = Image
- name = Field_nodeimage (ใส่แค่ nodeimage)
- Type = File
- widget type = image
- Number of values (หน้าถัดมา) อันนี้เลือก 1 แต่หากใครอยากให้โหลดได้มากกว่าหนึ่งรูป ก็ใส่ค่าลงไป
- ฟีลด์ สำหรับช่องให้กรอก แบรนด์สินค้า
- สำหรับฟีลด์อื่น เราก็ใส่ไปตามที่ต้องการ ซึ่งเมื่อใส่หมดหน้า Item ก็จะมีช่องให้กรอกตามที่เราเลือก โดยใน Stylelurf จะมีหน้าตาดังนี้
ซึ่งตอนนี้ถ้าสร้างเนื้อหา Item ก็จะมีช่องให้กรอกตามที่เราตั้ง นอกจากนี้เราสามารถควบคุมการแสดงผล ได้โดยเลือก
- เข้าไปที่ Admin → Content Management → Content Types
- เลือก content type อย่างอันนี้จะเลือก Item แล้วกดที่ Display Fields
- ในหน้านี้จะมีให้เลือก โดย
- teaser / full node คือ ส่วนทีสเซอร์ เช่น (หน้ารวมเนื้อหา หน้าแท็ก) กับส่วนหน้าเต็ม ว่าอยากให้แสดงเนื้อหาแบบไหน ตัวอย่างเช่น ภาพที่เราโหลดหน้าเต็ม ให้แสดงภาพเต็ม แต่หน้าทีสเซอร์ให้ขึ้นเป็นภาพธัมบ์ (ที่ต้องใช้ ImageCache มาช่วย จะอธิบายคราวหลัง) หรืออย่างเนื้อหาบางส่วนพวกดีเทลที่เราไม่อยากให้แสดงในส่วนทีสเซอร์ แต่ให้แสดงเฉพาะหน้าหลัก เราก็สามารถเลือกปิดได้ตรงนี้
- label คือ ข้อความกำกับ ว่าอยากให้แสดงอย่างไร ระหว่าง วางเหนือเนื้อหา (above) วางบรรทัดเดียวกับเนื้อหา (inline) หรือซ่อนไว้ (hidden)
- exclude คือ การไม่แสดงผล
- โดยใน Stylelurf สำหรับ Item ก็เลือกไว้ดังนี้
อันนี้ก็เป็นตัวอย่างการสร้าง CCK ประเภทหนึ่ง ซึ่งหากต้องการเพิ่มฟีลด์ชนิดอื่น ก็สามารถเลือกมอจูลย่อยมาใช้ได้ตามสะดวก ใครสนใจอ่านเรื่อง CCK เพิ่มเติมลองดู คู่มือฉบับภาษาอังกฤษ: http://drupal.org/node/101723
สุดท้ายก่อนไปคำว่า field ในภาษาอังกฤษอ่านว่า ฟีลด์ (สระอี) ซึ่งเขียนเป็นคำอ่านจะได้ว่า feeld อ่านเหมือน feel ที่แปลว่าความรู้สึก โดยออกเสียงจบด้วยการตวัดลิ้นไปแตะโคนฟันด้้านบนเป็นเสียง [d] นั่นเอง












#1 By Maxtrix™ on 2009-06-04 08:42