วิธีการแสดงชื่อผู้ใช้งานจริงๆ สำหรับผู้ที่โพสด้วยนามแฝง โดยจะเห็นเพียง Admin ใน phpbb
โพสต์แล้ว: 12/02/2019 4:38 pm
เว็บบอร์ด 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 ที่เป็นส่วนรการแสดงข้อมูลของโพสต์ แล้วนำมาใช้
4.จากนั้นนำอีก Event ที่ได้มาสร้าง ฟังชั่น
5.จากนั้น หา Event ที่เก็บข้อมูลโพสต์
7.สร้างตัวเเปร มารับค่า Event ที่ได้มา
8.ทำการ Query Sql เพื่อดึงข้อมูล ผู้ใช้งาน โดย การใช้ post id จากฐานข้อมูล
9.ทำการส่งข้อมูลต่างๆที่ต้องการ กลับไปแสดงที่โพสต์
10.หา Event เก็บชข้อมูล ที่ระบุ สถานะผู้ใช้งาน
11.สร้างตัวแปรมาเก็บค่า Event
12.สร้างเงือนไข เพื่อที่ส่งค่า ไปยังเทมเพลต เพื่อให้ทราบว่า ผู้ที่กำลังใช้งาน เป็น admin ด้วยการส่ง ตัวแปรไป
13. จากนั้นเปิดโฟลเดอร์ stulys - > all -> template -> event แล้วสร้างไฟล์ html ขึ้นมา viewtopic_body_post_author_before
14.จากนั้นเข้าไปแก้ไข้ เพิ่ม เงือนไข ในเทมเพลตเดิมที่ติดตั้ง มาแต่เเรก ในไฟล์ html ชื่อว่า viewtopic_body ในส่วนที่แสดงชื่อ ผู้โพสต์
ผลลัพที่ได้
ผู้ที่เป็น Admin
ผู้ที่ไม่ใช่ Admin
ส่วนขยาย(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