ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
- ซึ่งทั้งนี้ การที่จะพัฒนา Extension เพื่อนำมาใช้งานนั้นบางครั่งอาจจะต้องคำนึกถึงการ Query Sql ข้อมูลจากฐานข้อมูลเพื่อนำมาใช้พัฒนา Extension ด้วยว่า Query Sql ในแต่ละครั่งนั้น ควรจะไม่ทำให้เพื่อภาระต้องผลการประมมวลผลลัพธ์ ของ phpbb พื้นฐานที่มากเกินไป โดยเฉพาะการ Query Sql ข้อมูลแบบวนลูปตามจำนวนโพสต์
วันนี้ผมจงจะแนะนำ Event ที่ช่วยให้สามารถดึงข้อมูลโพสต์ โดยที่ไม่ต้องวนรับค่า post_id หลายๆครับ
โดย Event ที่ใช้คือ
โดย Event viewtopic_modify_post_data สามารถดึงค่า post_id ของ topic ได้จากวิธีการเขียนโคด ดังนี้viewtopic_modify_post_data
โค้ด: เลือกทั้งหมด
sql = ' SELECT *
FROM ' . $this->table_prefix . 'm_like' . $numlike . '
WHERE post_id IN ' . ' (' . implode(',', $event['post_list']) . ')' . ' AND staus_like = 1';
$result = $this->db->sql_query($sql);
ตัวอย่าง คือ ถ้า topic ที่ต้องการมี จำนวนโพสต์ 200 โพสต์ แล้วแบ่งหน้าไว้ที่ 10 โพสต์ต่อหน้า $event['post_list'] จะดึง post_id แค่ 10 โพสต์ที่แสดงหน้านั้นๆ
และจะมีการ Query Sql เพียงแค่ครั่งเดียวเท่านั้น
ตัวอย่างผม การ Query Sql
โค้ด: เลือกทั้งหมด
SELECT * FROM phpbb_m_like2 WHERE post_id IN (68,69) AND staus_like = 1
จากตัวอย่างโพสต์ที่แสดงเพียง 2 โพสต์ต่อหน้า
หรือถ้าหากต้องการต้องดึงข้อมูล user_id ก็สามารถทำได้จาก Event viewtopic_modify_post_data ได้เช่นกัน ดังนี้
โค้ด: เลือกทั้งหมด
$user_id_s = array_keys($event['user_cache']);
โค้ด: เลือกทั้งหมด
$sql = ' SELECT *
FROM ' . $this->table_prefix . 'm_like' . $numlike . '
WHERE post_id IN ' . ' (' . implode(',', $event['post_list']) . ')' . ' AND staus_like = 1';
$result = $this->db->sql_query($sql);