ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
- ซึ่งทั้งนี้เราสามารถที่จะพัฒนา ส่วนขยาย(Extension) ได้ง่ายมากขึ้นโดยการเรียกใช้งาน Event ที่ phpbb นั้นมีมาใช้งานมายอยู่เเล้ว ซึ่งสามารถไปหาดูได้จาก ที่นี้
- โดยผมจะมาเสนอ Event ช่วยให้ผู้ที่กำลังสนใจศึกษาการพัฒนา ส่วนขยาย(Extension) ของ phpbb สำหรับการปรับเปลี่ยนผมการแสดงในหน้าโพสต์ มาให้ดูกันนะครับ นั้นก็คือการที่จะปรับเปลี่ยนจำนวนโพสต์ทั้งหมดของสมาชิก โดยการนำข้อมูลจาก อีก หนึ่งตารางมาลบ ครับ โดยมีวิธีการ ดังนี้
1.เราต้องหา Event ที่จะดึงข้อมูลมาข้อมูลแสดงหน้าโพสต์ โดยจะต้องไมีใช้ Even ที่ไม่มีการ วน loop ซึ่งผมก็ใช้ Eventที่ชื่อว่า Event
โค้ด: เลือกทั้งหมด
viewtopic_modify_post_data
โค้ด: เลือกทั้งหมด
public function viewtopic_modify_post_data($event) {
โตดในข้อ 3.
}
โค้ด: เลือกทั้งหมด
$user_id_s = array_keys($event['user_cache']); //สร้างตัวแปรมาเก็บค่า key ของ array หรือก็คือ user_id
$user_array = $event['user_cache']; //สร้างตัวแปรมาแทน $event['user_cache']
$sql_ray = array(
'SELECT' => 'count(p.user_id) as count_post ,p.user_id ', // Query ข้อมูลตามที่ต้องการ
'FROM' => array(
$this->table_prefix . 'anonymous' => 'p', // เลือกตารางที่ต้องการ
),
'WHERE' => ' p.user_id IN (' . implode(',', $user_id_s) . ')' . ' GROUP BY p.user_id ', //กำหนดเงือนไข
);
$sql = $this->db->sql_build_query('SELECT', $sql_ray);
$result = $this->db->sql_query($sql);
$user_post = array(); //สร้างตัวแปร array
while ($row = $this->db->sql_fetchrow($result)) {
$user_post[] = $row; //เก็บข้อมูลที่ได้จากการ Query ลงใน ตัวแปร array
}
foreach ($user_post as $data) { //วนค่า array ที่ได้มาจากการ Query
if ($user_array[$data['user_id']]) { //ตรวจสอบ user_id เพื่อจะได้ที่จะไปปรับเปลี่ยนได้ถูก user
$user_array[$data['user_id']]['posts'] = $user_array[$data['user_id']]['posts'] - $data['count_post']; //แทนค่า จำนวนโพสต์เดิมที่มากับ event โดยการใช้งานจำนวนเดิม ลบ ก้วยจำนวนใหม่ที่หาได้
}
}
$event['user_cache'] = $user_array; //ส่งค่าที่ได้ได้ไปแทน เพือแสดงใน event
ก่อนจะใช้งาน Event นี้
หลังใช้งาน Event นี้