- สำหรับผู้ที่กำลังงพัฒนา
Extension ให้กับ
เว็บบอร์ด phpbb นั้นคงจะคุ้นเคยกับ Even ต่างๆที่ ทางเว็บบอร์ด phpbb มีให้ใช้งานอย่างมากมาย ซึ่งจะแบ่งการทำงานออกไปตามหน้าแสดงผลต่างๆ โดยแต่ละหน้าแสดงผล ก็อาจจะมีการใช้งาน Event มากว่า 1 Event เป็นส่วนใหญ่ ซึ่งสามารถเข้าไปดู Event ซึ่งสามารถเข้าไปดู Event เหล่านี้ได้จาก
ที่นี้
- โดยในบรรดาหน้าแสดงผล ที่มีมากมายใน เว็บบอร์ด phpbb จะมีส่วนที่ไว้สำหรับแสดงผลของ กระทู้ที่สมาชิกคนนั้นเป็นคนเขียนโพสต์ขึ้นมา โดยทั้งเจ้าของโพสต์ และ สมาชิกคนๆอื่นก้สามารถเข้ามาดูได้ จาก หน้าโปรไฟล์ ดังนี้
1.เลือกคลิกที่ชื่อสมาชิก
- Selection_999(1898) (1).png (35.93 KiB) Viewed 436 times
2.คลิกที่ ค้นหาเจ้าของโพสต์
- Selection_999(1899) (1).png (27.58 KiB) Viewed 436 times
3.ก็จะพบว่ามีโพสต์ที่สมาชิกคนนั้นเป็นโพสต์ไว้ทั้งหมด ซึ่งมีจำนวนโพสต์ทั้งหมด 33 โพสต์นะครับ
- Selection_999(1900) (1).png (32.61 KiB) Viewed 436 times
โดยในการแสดงโพสต์ ในส่วนนี้ก็เป็นการให้ Event ด้วยเช่นกัน โดย Event ที่ใช้ก็คือ
search_get_posts_data
ซึ่งใน Event search_get_posts_data จะมีการเก็บ SQL สำหรับการดึงข้อมูลที่เกี่ยวข้องกับโพสต์ของสมาชิก ที่กำหนด อยู่ ซึ่งเราสามารถนำมาปรับแก้ไขใหม่ได้ เพื่อให้เพื่อ การ query เป็นไปตามที่เราต้องการ ดังเช่นตัวอย่างที่จะทำดังนี้ ก็คือ การไม่ต้องการที่จะให้มีการแสดงโพสต์ ที่มีอยู่ใน อีก ตารางที่เรากำหนดไว้
โดยมีวิธีการดังนี้
1.สร้างตัวแปรขึ้นมาเพื่อรับค่า Event
2.เพื่อค่าให้กับ WHERE โดยกำหนดเงือนค่า ไว้ดังนี้
โค้ด: เลือกทั้งหมด
$data_where['WHERE'] .= ' AND p.post_id NOT IN (' . 'SELECT post_id FROM ' . ชื่อตารางที่ต้องการการดึงค่า ' . ')';
3.จากนั้นแทนค่ากลับคืนให้ Event
โดยถ้าหลากรวมโดดเเล้วจะได้แบบนี้
โค้ด: เลือกทั้งหมด
public function search_get_posts_data($event) {
$data_where = $event['sql_array'];
$data_where['WHERE'] .= ' AND p.post_id NOT IN (' . 'SELECT post_id FROM ' . $this->table_prefix . 'anonymous' . ')';
$event['sql_array'] = $data_where;
}
ผลลัพธ์หลังจากการทำงาน จะสังเกตุได้ว่าจำนวนโพสต์นั้นน้อยลงจากจำนวนเดิม ที่มี 33 โพสต์ แต่อันนี้จะมีจำนวนโพสต์ที่ 25 โพสต์
- Selection_999(1901) (1).png (30.31 KiB) Viewed 436 times
ลิ้งค์ที่เกี่ยวข้อง
Event listenner - เขียน Extension บน phpBB 3.1
การสร้าง Extension ใน phpbb
การสร้าง controller สำหรับ phpbb
- สำหรับผู้ที่กำลังงพัฒนา [url=https://mindphp.com/บทความ/32-phpbb/3211-extension-phpbb.html]Extension[/url] ให้กับ [url=https://www.mindphp.com/บทความ/24-cms-php/157-phpbb-คืออะไร.html]เว็บบอร์ด phpbb[/url] นั้นคงจะคุ้นเคยกับ Even ต่างๆที่ ทางเว็บบอร์ด phpbb มีให้ใช้งานอย่างมากมาย ซึ่งจะแบ่งการทำงานออกไปตามหน้าแสดงผลต่างๆ โดยแต่ละหน้าแสดงผล ก็อาจจะมีการใช้งาน Event มากว่า 1 Event เป็นส่วนใหญ่ ซึ่งสามารถเข้าไปดู Event ซึ่งสามารถเข้าไปดู Event เหล่านี้ได้จาก [url=https://wiki.phpbb.com/Event_List]ที่นี้[/url]
- โดยในบรรดาหน้าแสดงผล ที่มีมากมายใน เว็บบอร์ด phpbb จะมีส่วนที่ไว้สำหรับแสดงผลของ กระทู้ที่สมาชิกคนนั้นเป็นคนเขียนโพสต์ขึ้นมา โดยทั้งเจ้าของโพสต์ และ สมาชิกคนๆอื่นก้สามารถเข้ามาดูได้ จาก หน้าโปรไฟล์ ดังนี้
1.เลือกคลิกที่ชื่อสมาชิก
[attachment=3]Selection_999(1898) (1).png[/attachment]
2.คลิกที่ ค้นหาเจ้าของโพสต์
[attachment=2]Selection_999(1899) (1).png[/attachment]
3.ก็จะพบว่ามีโพสต์ที่สมาชิกคนนั้นเป็นโพสต์ไว้ทั้งหมด ซึ่งมีจำนวนโพสต์ทั้งหมด 33 โพสต์นะครับ
[attachment=1]Selection_999(1900) (1).png[/attachment]
โดยในการแสดงโพสต์ ในส่วนนี้ก็เป็นการให้ Event ด้วยเช่นกัน โดย Event ที่ใช้ก็คือ [color=#FF0000]search_get_posts_data[/color]
ซึ่งใน Event search_get_posts_data จะมีการเก็บ SQL สำหรับการดึงข้อมูลที่เกี่ยวข้องกับโพสต์ของสมาชิก ที่กำหนด อยู่ ซึ่งเราสามารถนำมาปรับแก้ไขใหม่ได้ เพื่อให้เพื่อ การ query เป็นไปตามที่เราต้องการ ดังเช่นตัวอย่างที่จะทำดังนี้ ก็คือ การไม่ต้องการที่จะให้มีการแสดงโพสต์ ที่มีอยู่ใน อีก ตารางที่เรากำหนดไว้
[u]โดยมีวิธีการดังนี้[/u]
1.สร้างตัวแปรขึ้นมาเพื่อรับค่า Event
[code] $data_where = $event['sql_array'];[/code]
2.เพื่อค่าให้กับ WHERE โดยกำหนดเงือนค่า ไว้ดังนี้
[code] $data_where['WHERE'] .= ' AND p.post_id NOT IN (' . 'SELECT post_id FROM ' . ชื่อตารางที่ต้องการการดึงค่า ' . ')';[/code]
3.จากนั้นแทนค่ากลับคืนให้ Event
[code] $event['sql_array'] = $data_where;[/code]
โดยถ้าหลากรวมโดดเเล้วจะได้แบบนี้
[code]
public function search_get_posts_data($event) {
$data_where = $event['sql_array'];
$data_where['WHERE'] .= ' AND p.post_id NOT IN (' . 'SELECT post_id FROM ' . $this->table_prefix . 'anonymous' . ')';
$event['sql_array'] = $data_where;
}[/code]
ผลลัพธ์หลังจากการทำงาน จะสังเกตุได้ว่าจำนวนโพสต์นั้นน้อยลงจากจำนวนเดิม ที่มี 33 โพสต์ แต่อันนี้จะมีจำนวนโพสต์ที่ 25 โพสต์
[attachment=0]Selection_999(1901) (1).png[/attachment]
ลิ้งค์ที่เกี่ยวข้อง
[url=https://www.mindphp.com/forums/viewtopic.php?f=243&t=23816&p=51085&hilit=การสร้าง+listenner#p51085]Event listenner - เขียน Extension บน phpBB 3.1[/url]
[url=https://www.mindphp.com/forums/viewtopic.php?f=6&t=51112&p=134162&hilit=การสร้าง+extension#p134162]การสร้าง Extension ใน phpbb[/url]
[url=https://www.mindphp.com/forums/viewtopic.php?f=6&t=51115&p=134168&hilit=การสร้าง+extension#p134168]การสร้าง controller สำหรับ phpbb[/url]