ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
- ทั้งนี้ในบางครั่ง เรายังสมารถนำ Extension ของผู้อื่นมาปรับปรุงเพิ่มความสามารถได้ด้วย ดังสิ่งที่เราจะทำต่อจากนนี้ คือ การนำเอา Extension anonymus หรือส่วนขยายที่ใช่ สำหรับการสร้างนามแฝง ให้กับผู้ที่โพสต์กระทู้
- ซึ่งในส่วนที่เราจะทำเพิ่มเข้าไป คือ การทำให้ผุ้ที่เป็น admin สามารถมองเห็นชื่อที่แท้จริงของผู้ใช้งาน ที่โพสกระทู้โดยใช้นามแฝง
ขั้นตอนการพัฒนา
1.ผู้พัฒนาจะต้องมี Extension anonymus
2.จากนั้นเข้าไปที่โฟลเดอร์ event แล้วเปิดไฟล์ listenner.php ขึ้นมา
3.จากนั้น เราจะต้องหา Event php ที่เป็นส่วนรการแสดงข้อมูลของโพสต์ แล้วนำมาใช้
โค้ด: เลือกทั้งหมด
static public function getSubscribedEvents() {
return array(
'core.viewtopic_modify_post_row' => 'viewtopic_modify_post_row',
);
}
โค้ด: เลือกทั้งหมด
public function viewtopic_modify_post_row($event) {
}
โค้ด: เลือกทั้งหมด
$event['post_row']
โค้ด: เลือกทั้งหมด
$post_row = $event['post_row'];
โค้ด: เลือกทั้งหมด
$sql_array = array(
'SELECT' => 'u.user_id,u.username,u.user_colour,a.post_id',
'FROM' => array(
$this->table_prefix . 'anonymus' => 'a',
),
'WHERE' => 'a.post_id = ' . $event['row']['post_id'],
);
$sql_array['LEFT_JOIN'] = array();
$sql_array['LEFT_JOIN'][] = array('FROM' => array(USERS_TABLE => 'u'), 'ON' => 'a.user_id = u.user_id');
$sql_array['LEFT_JOIN'][] = array('FROM' => array(POSTS_TABLE => 'p'), 'ON' => 'a.post_id = p.post_id');
$sql = $this->db->sql_build_query('SELECT', $sql_array);
$result = $this->db->sql_query($sql);
$data = $this->db->sql_fetchrow($result);
โค้ด: เลือกทั้งหมด
$post_row['NAME_REAL'] = get_username_string('full', $data['user_id'], $data['username'], $data['user_colour'], $data['username']);
$post_row['MINI_POST'] = append_sid("{$this->phpbb_root_path}viewtopic.$this->php_ext", 'p=' . $data['post_id']) . '#p' . $data['post_id'];
โค้ด: เลือกทั้งหมด
$this->user->data[user_rank];
โค้ด: เลือกทั้งหมด
$datause_rank = $this->user->data[user_rank];
โค้ด: เลือกทั้งหมด
if ($datause_rank == 1) {
$user_rank = $event['user_poster_data'][rank_title];
$this->template->assign_vars(array(
'ADMIN' => 'admin',
'RANK_NAME' => $user_rank,
));
}
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<!-- IF ADMIN != admin -->
<!-- IF not postrow.U_POST_AUTHOR -->
<strong>{postrow.NAME_REAL}</strong><!-- ELSE -->{postrow.NAME_REAL}
<!-- ENDIF -->
<!-- ENDIF -->
</body>
</html>
โค้ด: เลือกทั้งหมด
<!-- EVENT viewtopic_body_post_author_before -->
<!-- IF ADMIN == admin --> <!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF --><!-- ENDIF -->
<!-- EVENT viewtopic_body_post_author_after -->
<!-- IF ADMIN == admin -->
<span class="responsive-hide">{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> » </span>{postrow.POST_DATE}
<!-- ENDIF -->
<!-- IF ADMIN != admin -->
<span class="responsive-hide">{L_POST_BY_AUTHOR} <strong>{postrow.NAME_REAL}</strong> » </span>{postrow.POST_DATE}
<!-- ENDIF -->
ผู้ที่เป็น Admin
ผู้ที่ไม่ใช่ Admin