Custom

เพิ่มความสามารถให้ module comments ใน drupal 6.x

หลังจากวันก่อนทำถึก ยัดข้อมูลลงในฐานข้อมูล drupal ไปแล้วรอบนึง มาวันนี้พี่ที่ดูแลเนื้อหาของเว็บดังกล่าว ให้โจทย์ใหม่มา 2 ข้อ คือ (1) จำกัดจำนวนตัวอักษรในช่องแสดงความเห็น และ (2) เอาชื่อพื้นฐาน anonymous ออกจากช่อง your name เพื่อให้คนโพส ตั้งชื่อใหม่

กำหนด regions เพิ่มเติมใน drupal 6.x

สำหรับคนที่จะทำเว็บไซต์ด้วย drupal แต่ติดขัดที่ drupal เตรียมพื้นที่ (regions) สำหรับให้เราวางกล่อง (Block) น้อยเกินไป ก็สามารถเพิ่มเติมได้ด้วยตัวเอง

(บล็อกนี้เขียนเล่าจากการใช้งาน โดยอ้างอิงจากบล็อกของ donuzz หากผิดพลาดตรงจุดไหน ผู้รู้ช่วยชี้แนะด้วยครับ )

โดยปกติทั่วไปแล้ว drupal 6.x จะเตรียม regions เอาไว้ประมาณ 5 regions คือ Header, Left sidebar, Content, Rigth sidebar และ Footer (ดูรูป 1)

figure1 drupal6x basic regions

((update: 2009-02-27 13:23))

แล้วถ้ากรณีที่เราต้องการสร้างหน้าพิเศษที่มีพื้นที่ (regions) ไม่เหมือนหน้าอื่น (ปกติ template ทั้งหมดของ drupal จะถูกเก็บอยู่ในไฟล์ page.tpl.php) เราจะต้องทำดังนี้
1. สร้าง page ว่างๆ (ซึ่งเป็น content types ประเภทหนึ่ง) แล้วกำหนดให้ URL path เป็นชื่อที่ต้องการ เช่น /newsupdate
2. สร้างไฟล์ page-newsupdate.tpl.php ไว้ในโฟลเดอร์ธีม เพื่อใช้เป็น template เฉพาะในหน้าที่เราต้องการ
3. เพิ่มโค้ดในไฟล์ template.php (ถ้าไม่มีให้สร้าง template.php ไว้ในโฟลเดอร์ธีม) ดูรายละเอียด http://drupal.org/node/139766 (อ้างอิงจากคอมเม้นท์ของ donuzz)
4. แก้ไขโค้ด php ภายในไฟล์ page-newsupdate.tpl.php ให้เป็นไปตามพื้นที่ (regions) ที่เราต้องการ โดยเพิ่ม <?php print $new_regions_name ?> (ดูรูป 2)

figure2 drupal custom regions

แล้วก็เพิ่มรายชื่อ regions ที่เราสร้างเพิ่มเติมไว้ในไฟล์ .info ของธีมนั้นๆ โดยเพิ่มคำสั่งดังนี้

// regions ที่มีอยู่เดิม
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer

// regions ที่เรากำหนดขึ้นใหม่
regions[home_left] = Left homepage
regions[home_middle] = Middle hompeage
regions[home_bottom] = Bottom homepage

** หมายเหตุในการแก้ไข/เพิ่มเติม regions แต่ละครั้ง จะต้อง Clear cached data ในหน้า Site configuration > Performance เพื่อให้ drupal อัพเดทข้อมูลภายในระบบ **

เราก็จะสามารถมองเห็นรายชื่อ regions ได้ในหน้า Block