วิธีการแสดงชื่อผู้ใช้งานจริงๆ สำหรับผู้ที่โพสด้วยนามแฝง โดยจะเห็นเพียง Admin ใน phpbb


PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

Post Reply
User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 3176
Joined: 19/09/2018 10:33 am

วิธีการแสดงชื่อผู้ใช้งานจริงๆ สำหรับผู้ที่โพสด้วยนามแฝง โดยจะเห็นเพียง Admin ใน phpbb

Post by Ittichai_chupol » 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 ที่เป็นส่วนรการแสดงข้อมูลของโพสต์ แล้วนำมาใช้

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 ที่เก็บข้อมูลโพสต์

Code: Select all

$event['post_row']
7.สร้างตัวเเปร มารับค่า Event ที่ได้มา

Code: Select all

    $post_row = $event['post_row'];
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 เก็บชข้อมูล ที่ระบุ สถานะผู้ใช้งาน

Code: Select all

 $this->user->data[user_rank];
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> &raquo; </span>{postrow.POST_DATE}
                    <!-- ENDIF -->
                    <!-- IF ADMIN != admin --> 
                    <span class="responsive-hide">{L_POST_BY_AUTHOR} <strong>{postrow.NAME_REAL}</strong> &raquo; </span>{postrow.POST_DATE}
                    <!-- ENDIF -->
                    
ผลลัพที่ได้

ผู้ที่เป็น Admin
วิธีการแสดงชื่อผู้ใช้งานจริงๆ สำหรับผู้ที่โพสด้วยนามแฝง โดยจะเห็นเพียง Admin  ใน phpbb 01.12.png
01.12.png (36.16 KiB) Viewed 1060 times
ผู้ที่ไม่ใช่ Admin
วิธีการแสดงชื่อผู้ใช้งานจริงๆ สำหรับผู้ที่โพสด้วยนามแฝง โดยจะเห็นเพียง Admin  ใน phpbb 02-12.png
02-12.png (31.88 KiB) Viewed 1060 times

Post Reply

Return to “PHP Knowledge”

Users browsing this forum: No registered users and 3 guests