ว่าด้วย Content types ของ Drupal

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

กำลังสงสัยเกี่ยวกับ Content types ของ Drupal ครับ
ซึ่งเท่าที่ทราบก็มีหลายอย่างมาก page, poll, story, forum text, และ blog entry
อ่านภาษาอังกฤษก็แล้ว แต่ไม่แน่ใจว่าอ่านได้แตกไหม...

แต่พอสรุปเอาเองได้ว่า
1. มี page มี story ไว้สองอันจะได้ไว้แยกกำหนดสิทธิว่า story ให้เฉพาะสมาชิกหรือคนดูมาโพสอะไรๆได้
แต่ page ก็อาจเก็บไว้โพสอะไรพวก ประกาศจากแอดมิน อะไรทำนองนั้น (Difference between page and story)

2. (คอมเมนจากที่เดียวกับอันบนบอกว่า) page จะไม่ใส่ข้อมูลคนโพสต์+เวลา+คอมเมนต์ โดยปริยาย.. แต่ story จะใส่โดยปริยาย
ซึ่งจริงๆ ขึ้นกับการตั้งค่าที่ Site Building > Themes > Configure > Global Settings นั้นเอง

3. page เป็นอะไรที่ static เช่นหน้า about
ซึ่งคิดว่า Resources ของ codenone ก็น่าจะเป็น page(Page: post static pages)

4. แต่ละ Content type สามารถตั้งค่าให้มันแยกกันใช้ theming, categorization, descriptions และอื่นๆ ต่างกันได้

5. ดังนั้นเราก็สามารถสร้าง Content type ขึ้นมาใช้เองให้เหมาะสมกับงานของเราได้?
ซึ่งเท่าที่ค้นได้ คงต้องไปอ่านวิธีต่อใน (How to create your own simple node type (from story node) ซึ่งย๊าวยาว T^T

สรุปที่โพสนี้ก็เพื่อถามว่า
1. ผมเข้าใจถูกแล้วใช้ไหมครับ ถ้าถูกก็ได้เป็นการช่วยคนอื่นๆ ที่ยังแอบงงเหมือนผมไปด้วย
2. จากข้อ 5 ถ้าผมไม่ได้ต้องการสร้าง Content type ให้ใหม่ไปจากเดิมมาก
แค่ต้องการใช้แยกเพื่อความแตกต่าง(ตามข้อ 4) ผมก็อาจสร้างใหม่อย่างง่ายจาก
Administer > Content management > Add content type ไปเลยใช่ไหมครับ

^ ^a แหะๆ

sugree's picture
  1. ถูกแล้วครับ
  2. ถูกอีกเหมือนกัน ที่พูดถึงก็คือ content construction kit (cck)
mk's picture

CCK ตัวที่มากับ 5.x มันมาไม่ครบนะครับ คือสร้าง content type ใหม่ได้ แต่ถ้าจะเพิ่มฟิลด์ด้วย ต้องลง CCK.module ตัวเต็ม ตอนแรกผมถือดีไม่อ่านคู่มือ นั่งงงอยู่ตั้งนาน

jrp13th's picture

เรื่องเพิ่มฟิลด์ - ด้วยความอ่อนทั้งทางภาษาอังกฤษ และภาษาโปรแกรม ก็เลยยังแอบงงอยู่ว่า เพิ่มไปทำไม ทำไรได้ -งงแม้แต่จะตั้งคำถามว่า งง อะไร :P

รบกวนเวลา ช่วยยกตัวอย่างประกอบได้ไหมครับ - เพื่อเป็นกุญแจไขปัญญาต่อไปนะครับ

mk's picture

สมมติว่าผมอยากทำรีวิวโปรแกรม โดยอยากให้มีช่องสำหรับ URL ของเว็บไซต์ผู้พัฒนาด้วย (บังคับใส่ ไม่ปะปนไปกับตัว body) ผมก็สามารถใช้ CCK สร้าง content-type ใหม่ขึ้นมา โดยอาจจะอิงจาก story แล้วกำหนดให้มีฟิลด์ชื่อ URL เพิ่มอีก 1 ช่อง โดยมีชนิดเป็น text field อะไรทำนองนี้ครับ

sugree's picture

อธิบายง่ายๆ ว่าเป็นการทำเว็บแบบไม่เขียนโปรแกรมซักบรรทัด เว็บแบบเอาไปใช้ได้จริงๆ นะครับ อย่างเช่นตัวอย่างเดียวกับ mk

ถ้าเราทำเว็บด้วยตัวเอง ต้องการทำรีวิวโปรแกรม ก็ต้อง

  1. สร้างตารางใหม่
  2. เขียนฟอร์มหนึ่งหน้าสำหรับรับข้อมูล
  3. เขียนอีกหนึ่งหน้าสำหรับทำรายงาน

หรืออีกวิธีก็คือทำทุกอย่างด้วย title และ body ซึ่งก็ใช้งานได้ แต่ไม่สามารถปรับแต่งหน้าตาในภายหลังได้ เช่นพวก url screenshot และอื่นๆ ที่ค่าพวกนี้มีความหมาย เป็น metadata แท้ จะเอามาปู้ยี้ปู้ยำใส่ใน body ก็กระไรอยู่

ส่วนใน Drupal เราจะทำแบบนี้แทน

  1. สร้าง content type ใหม่ด้วย cck แล้วสร้างฟิลด์เข้าไป เช่น description url screenshot เป็นต้น
  2. สร้างรายงานด้วย views ซึ่งจะ join ให้เอง

ไม่ต้องเขียนโปรแกรมซักบรรทัด แถมด้วยว่าข้อมูลเหล่านี้ค้นหาได้ด้วย search มาตรฐาน และมี comment กับ permission แยกเป็นส่วนตัวด้วย

jrp13th's picture

โอ้ว!! ขอบคุณมากครับ เห็นภาพ เข้าใจทันทีเลยครับ
แต่ยังแอบสงสัยว่า
1. ฟิลด์ที่เพิ่มมาจะอยู่ส่วนไหนหน้าก็ไปออกแรงเอากับ theme อีกทีถูกไหมครับ
แล้ว
2. การแก้ Theme นี้ก็ต้องลง module เพิ่ม ซึ่งเข้าใจว่า drupla5 เนี้ยต้องลง phptal ถูกไหมครับ

sugree's picture
  1. ไม่จำเป็นครับ หน้าตาจะใช้หน้าตาปกติของส่วนกลาง โดยที่เรากำหนดลำดับของฟิลด์ได้ แต่ถ้าไม่พอใจก็กำหนด theme เฉพาะของแต่ละฟิลด์แต่ละหน้าด้วย
  2. ไม่ต้องลงอะไรเพิ่มครับ ยกเว้นว่าไม่พอใจกับ theme engine ตัวปัจจุบัน (PHPtemplate) มีอีกตัวเลือกคือ Smarty ซึ่งเป็นของเก่าเทียบกับตัวปัจจุบันไม่ติดฝุ่น

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น