วิธีการแปลง bbcode จากข้อความให้แสดงผลลัพธ์ ที่น่าโพสต์ ใน phpbb

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

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

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

วิธีการแปลง bbcode จากข้อความให้แสดงผลลัพธ์ ที่น่าโพสต์ ใน phpbb

Postby Ittichai_chupol » 08/06/2019 5:31 pm

เว็บบอร์ด phpbb นั้นเป็บเว็บบอร์ดที่มี cod และ ฟั่งชั่น ตางๆ ที่สนับสนุนการใช้งาน ในส่วนต่างๆของเว็บ มาให้เป้นพื้นฐาน ตั้งแต่แรกติดตั้งอยู่ นั้นจึงทำให้ผุ้พัฒนา ไม่ต้องเสียเวลากับการที่จะต้องสร้าง ส่วนต่างขึ้นมาเองทั้งหมด เพียงแค่ปรับปรุง หรือ เสริมเพียงเเค่บางส่วนเข้าไปเท่านั้น ก็ทำให้เว็บบอร์ด สามารถทำงาน ตามที่เราต้องการ โดยวิธีการที่เราจะทำให้เว็บบอร์ด phpbb สามารถทำในส่วนที่ไม่ได้มีมากับตอนติดตั้งครั่งแรกนั้น คือการส่ร้าง ส่วนขยาย(Extension)
ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
และสำหรับผู้ที่กำลังจะสร้างพัฒนา extension ที่จะต้องดีงเนื้อหาที่มีการโพสต์ไว้มาแสดงให้เป็นแบบของเราเองนั้น ถ้าเราทำการดึงเนื้อหาของโพสนั้นออกมาเลย บางครั่งจะได้เนื้อหาที่ไม่เหมือนกับโพสต์ที่เรานำมาใช้ เพราะ มันจะมี ส่วนที่เป็น bbcode ติดมาด้วยและทำให้เนื้อหาส่วนนั้นหายไป ในกรณีที่เราดึงมาเเบบตรง ดังนั้นให้การที่เราจะดึงเนื้อหาที่โพสต์มาแสดง จะต้องใช้ฟังชั้นมาช่วยเพราะที่จะแสดงค่าออกมาได้ ดังตัวอย่างงนี้


1.จะต้อง เขียน SQL เพื่อเรียกค่าของโพสต์ที่เราต้องการออกมาก่อน

Code: Select all

 $sql_ary = array(
            'SELECT' => '*',
            'FROM' => array(
                POSTS_TABLE => 'p',
            ),
            'LEFT_JOIN' => array(
                array(
                    'FROM' => array(USERS_TABLE => 'u'),
                    'ON' => 'p.poster_id = u.user_id',
                ),
                array(
                    'FROM' => array(TOPICS_TABLE => 't'),
                    'ON' => 'p.topic_id = t.topic_id',
                )
            ),
            'WHERE' => 'post_id = ' . $post_id,
        );

        $sql = $this->db->sql_build_query('SELECT', $sql_ary);
        $result = $this->db->sql_query($sql);
        $row = $this->db->sql_fetchrow($result);
       


2.ดึงข้อมูลจาก คอลลัมที่เราต้องการออกมา
ประกอบด้วย

Code: Select all

  $row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield']   


3.โดยฟังชั้นที่เราจะใช้นั้นก็คือ

Code: Select all

  generate_text_for_display()   


4.ก่อนที่เราจะใช้งานฟังชั่น generate_text_for_display() จะต้องสร้าง ตัวแปรขึ้นมาก่อนดังนี้

Code: Select all

$parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;


5.วิธีการใช้งานก็คือ

Code: Select all

$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);



** รวมโคดทั้งหมด

Code: Select all


  $sql_ary = array(
            'SELECT' => '*',
            'FROM' => array(
                POSTS_TABLE => 'p',
            ),
            'LEFT_JOIN' => array(
                array(
                    'FROM' => array(USERS_TABLE => 'u'),
                    'ON' => 'p.poster_id = u.user_id',
                ),
                array(
                    'FROM' => array(TOPICS_TABLE => 't'),
                    'ON' => 'p.topic_id = t.topic_id',
                )
            ),
            'WHERE' => 'post_id = ' . $post_id,
        );

        $sql = $this->db->sql_build_query('SELECT', $sql_ary);
        $result = $this->db->sql_query($sql);
        $row = $this->db->sql_fetchrow($result);
       
       
        // ส่วนที่แสดงข้อความ จาก bbcode
        $parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
        $message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);



Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 21 guests