26 February 2009

กำหนด 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