เว็บบอร์ด phpbb นั้นเป็บเว็บบอร์ดที่มี cod และ ฟั่งชั่น ตางๆ ที่สนับสนุนการใช้งาน ในส่วนต่างๆของเว็บ มาให้เป้นพื้นฐาน ตั้งแต่แรกติดตั้งอยู่ นั้นจึงทำให้ผุ้พัฒนา ไม่ต้องเสียเวลากับการที่จะต้องสร้าง ส่วนต่างขึ้นมาเองทั้งหมด เพียงแค่ปรับปรุง หรือ เสริมเพียงเเค่บางส่วนเข้าไปเท่านั้น ก็ทำให้เว็บบอร์ด สามารถทำงาน ตามที่เราต้องการ โดยวิธีการที่เราจะทำให้เว็บบอร์ด phpbb สามารถทำในส่วนที่ไม่ได้มีมากับตอนติดตั้งครั่งแรกนั้น คือการส่ร้าง ส่วนขยาย(Extension)
ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
- ทั้งนี้ในบางครั่ง เรายังสมารถนำ Extension ของผู้อื่นมาปรับปรุงเพิ่มความสามารถได้ด้วย ดังสิ่งที่เราจะทำต่อจากนนี้ คือ การนำเอา Extension anonymus หรือส่วนขยายที่ใช่ สำหรับการสร้างนามแฝง ให้กับผู้ที่โพสต์กระทู้
- ซึ่งในส่วนที่เราจะทำเพิ่มเข้าไป คือ การทำให้ผุ้ที่เป็น admin สามารถมองเห็นชื่อที่แท้จริงของผู้ใช้งาน ที่โพสกระทู้โดยใช้นามแฝง
ขั้นตอนการพัฒนา
1.ผู้พัฒนาจะต้องมี Extension anonymus
2.จากนั้นเข้าไปที่โฟลเดอร์ event แล้วเปิดไฟล์ listenner.php ขึ้นมา
3.จากนั้น เราจะต้องหา Event php ที่เป็นส่วนรการแสดงข้อมูลของโพสต์ แล้วนำมาใช้
Code: Select all
static public function getSubscribedEvents() {
return array(
'core.viewtopic_modify_post_row' => 'viewtopic_modify_post_row',
);
}
4.จากนั้นนำอีก Event ที่ได้มาสร้าง ฟังชั่น
Code: Select all
public function viewtopic_modify_post_row($event) {
}
5.จากนั้น หา Event ที่เก็บข้อมูลโพสต์
7.สร้างตัวเเปร มารับค่า Event ที่ได้มา
8.ทำการ Query Sql เพื่อดึงข้อมูล ผู้ใช้งาน โดย การใช้ post id จากฐานข้อมูล
Code: Select all
$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);
9.ทำการส่งข้อมูลต่างๆที่ต้องการ กลับไปแสดงที่โพสต์
Code: Select all
$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'];
10.หา Event เก็บชข้อมูล ที่ระบุ สถานะผู้ใช้งาน
11.สร้างตัวแปรมาเก็บค่า Event
Code: Select all
$datause_rank = $this->user->data[user_rank];
12.สร้างเงือนไข เพื่อที่ส่งค่า ไปยังเทมเพลต เพื่อให้ทราบว่า ผู้ที่กำลังใช้งาน เป็น admin ด้วยการส่ง ตัวแปรไป
Code: Select all
if ($datause_rank == 1) {
$user_rank = $event['user_poster_data'][rank_title];
$this->template->assign_vars(array(
'ADMIN' => 'admin',
'RANK_NAME' => $user_rank,
));
}
13. จากนั้นเปิดโฟลเดอร์ stulys - > all -> template -> event แล้วสร้างไฟล์ html ขึ้นมา viewtopic_body_post_author_before
Code: Select all
<!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>
14.จากนั้นเข้าไปแก้ไข้ เพิ่ม เงือนไข ในเทมเพลตเดิมที่ติดตั้ง มาแต่เเรก ในไฟล์ html ชื่อว่า viewtopic_body ในส่วนที่แสดงชื่อ ผู้โพสต์
Code: Select all
<!-- 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

- 02-12.png (31.88 KiB) Viewed 1151 times
ผู้ที่ไม่ใช่ Admin

- 01.12.png (36.16 KiB) Viewed 1151 times
เว็บบอร์ด phpbb นั้นเป็บเว็บบอร์ดที่มี cod และ ฟั่งชั่น ตางๆ ที่สนับสนุนการใช้งาน ในส่วนต่างๆของเว็บ มาให้เป้นพื้นฐาน ตั้งแต่แรกติดตั้งอยู่ นั้นจึงทำให้ผุ้พัฒนา ไม่ต้องเสียเวลากับการที่จะต้องสร้าง ส่วนต่างขึ้นมาเองทั้งหมด เพียงแค่ปรับปรุง หรือ เสริมเพียงเเค่บางส่วนเข้าไปเท่านั้น ก็ทำให้เว็บบอร์ด สามารถทำงาน ตามที่เราต้องการ โดยวิธีการที่เราจะทำให้เว็บบอร์ด phpbb สามารถทำในส่วนที่ไม่ได้มีมากับตอนติดตั้งครั่งแรกนั้น คือการส่ร้าง ส่วนขยาย(Extension)
ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
- ทั้งนี้ในบางครั่ง เรายังสมารถนำ Extension ของผู้อื่นมาปรับปรุงเพิ่มความสามารถได้ด้วย ดังสิ่งที่เราจะทำต่อจากนนี้ คือ การนำเอา Extension anonymus หรือส่วนขยายที่ใช่ สำหรับการสร้างนามแฝง ให้กับผู้ที่โพสต์กระทู้
- ซึ่งในส่วนที่เราจะทำเพิ่มเข้าไป คือ การทำให้ผุ้ที่เป็น admin สามารถมองเห็นชื่อที่แท้จริงของผู้ใช้งาน ที่โพสกระทู้โดยใช้นามแฝง
[b]ขั้นตอนการพัฒนา[/b]
1.ผู้พัฒนาจะต้องมี Extension anonymus
2.จากนั้นเข้าไปที่โฟลเดอร์ event แล้วเปิดไฟล์ listenner.php ขึ้นมา
3.จากนั้น เราจะต้องหา Event php ที่เป็นส่วนรการแสดงข้อมูลของโพสต์ แล้วนำมาใช้
[code]
static public function getSubscribedEvents() {
return array(
'core.viewtopic_modify_post_row' => 'viewtopic_modify_post_row',
);
}
[/code]
4.จากนั้นนำอีก Event ที่ได้มาสร้าง ฟังชั่น
[code]
public function viewtopic_modify_post_row($event) {
}
[/code]
5.จากนั้น หา Event ที่เก็บข้อมูลโพสต์
[code]
$event['post_row']
[/code]
7.สร้างตัวเเปร มารับค่า Event ที่ได้มา
[code]
$post_row = $event['post_row'];
[/code]
8.ทำการ Query Sql เพื่อดึงข้อมูล ผู้ใช้งาน โดย การใช้ post id จากฐานข้อมูล
[code]
$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);
[/code]
9.ทำการส่งข้อมูลต่างๆที่ต้องการ กลับไปแสดงที่โพสต์
[code]
$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'];
[/code]
10.หา Event เก็บชข้อมูล ที่ระบุ สถานะผู้ใช้งาน
[code]
$this->user->data[user_rank];
[/code]
11.สร้างตัวแปรมาเก็บค่า Event
[code]
$datause_rank = $this->user->data[user_rank];
[/code]
12.สร้างเงือนไข เพื่อที่ส่งค่า ไปยังเทมเพลต เพื่อให้ทราบว่า ผู้ที่กำลังใช้งาน เป็น admin ด้วยการส่ง ตัวแปรไป
[code]
if ($datause_rank == 1) {
$user_rank = $event['user_poster_data'][rank_title];
$this->template->assign_vars(array(
'ADMIN' => 'admin',
'RANK_NAME' => $user_rank,
));
}
[/code]
13. จากนั้นเปิดโฟลเดอร์ stulys - > all -> template -> event แล้วสร้างไฟล์ html ขึ้นมา viewtopic_body_post_author_before
[code]
<!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>
[/code]
14.จากนั้นเข้าไปแก้ไข้ เพิ่ม เงือนไข ในเทมเพลตเดิมที่ติดตั้ง มาแต่เเรก ในไฟล์ html ชื่อว่า viewtopic_body ในส่วนที่แสดงชื่อ ผู้โพสต์
[code]
<!-- 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 -->
[/code]
ผลลัพที่ได้
ผู้ที่เป็น Admin
[attachment=1]01.12.png[/attachment]
ผู้ที่ไม่ใช่ Admin
[attachment=0]02-12.png[/attachment]