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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

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

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

โดย Ittichai_chupol » 08/06/2019 5:31 pm

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


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

โค้ด: เลือกทั้งหมด

 $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.ดึงข้อมูลจาก คอลลัมที่เราต้องการออกมา
ประกอบด้วย

โค้ด: เลือกทั้งหมด

  $row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield']   
3.โดยฟังชั้นที่เราจะใช้นั้นก็คือ

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

$parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
5.วิธีการใช้งานก็คือ

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด


  $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);



ข้างบน