สอบถามการเขียน Extension BBCode ที่จะ Query ข้อมูลจาก SQL ครับ

พูดคุย phpBB3, SMF ปัญหา การติดตั้ง ปัญหา การลง Mod การแก้ไข หน้าตาบอร์ด การใช้งาน Joomla 1.5, 1.6, 1.7, 2.5 ,3.x และเร็วๆนี้ Joomla จะออกเวอร์ชั่น 4.0 การใช้งาน wordpress และ CMS อื่นๆ
การตั้งคำถาม ควรระบุรุ่นที่ใช้ ในการตั้งคำตามด้วย นะ เช่น SMF 1.1.4 หรือ SMF2.0 Joomla 1.0 joomla 3.8 และ รายละเอียดของ server OS , php เวอร์ชั่นไหน ฐานข้อมูลอะไร

Moderator: mindphp

กฎการใช้บอร์ด
คำถามหมวดนี้ ควรระบุ รายละเอียดของ Server OS, เวอร์ชั่น ของ PHP, CMS ที่ท่านใช้
รวมถึง Hosting หรือ Control Panel Hosting
ภาพประจำตัวสมาชิก
AePongsak
PHP VIP Members
PHP VIP Members
โพสต์: 4996
ลงทะเบียนเมื่อ: 17/09/2016 10:09 am

สอบถามการเขียน Extension BBCode ที่จะ Query ข้อมูลจาก SQL ครับ

โพสต์โดย AePongsak » 18/07/2018 6:35 pm

ตอนนี้ผมสร้างไฟล์

ตอนติดตั้ง Extension ในไฟล์ Migrations

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

   public function install_m_embed_bbcode()
   {

      $bbcode_data = array(
         'tab' => array(
            'bbcode_helpline'   => 'Embed BBCode',
            'bbcode_match'      => '[Topic={TEXT1}]{TEXT2}[/Topic]',
            'bbcode_tpl'      => '<div class="tab"><h4 class="tabtitle">{TEXT1}</h4><div class="tabcontent"><div class="tabcontent_top"></div>{TEXT2}</div></div>',
         ),         
      );

      global $db, $request, $user;
      $acp_manager = new \mindphp\m_embed_bbcode\includes\acp_manager($db, $request, $user, $this->phpbb_root_path, $this->php_ext);
      $acp_manager->install_bbcodes($bbcode_data);
   }


และไฟล์สร้าง BBcode ใน adm เมื่อติดตั้ง
ตอนนี้สามารถสร้างแค่ HTML แสดงตอนใช้ BBcode หน้า Topic

แต่ยังไม่เข้าใจว่าถ้าต้องการ Query ข้อมูลจาก SQL ให้ทำงานตอนใช้ bbcode ต้องสร้างยังไง และใช้งานยังไงครับ ขอวิธีแนะนำตัวอย่างง่ายๆให้ดูหน่อยครับ ส่วนข้อมูลผมจะไปศึกษาต่อ
รูปภาพ
ξν℮ry story has an end but in life every end is a neω ßeginning.

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 12742
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

Re: สอบถามการเขียน Extension BBCode ที่จะ Query ข้อมูลจาก SQL ครับ

โพสต์โดย thatsawan » 21/07/2018 12:05 pm

ประมาณว่า ใส่ bbcode ไปเเล้ว จากนั้น ดึงเลขที่อยู่ใน bbcode ออก จากนั้นก็ไปหาข้อความใน id ที่เราต้องการมาแปะกลับที่ post นั้น

เมื่อเรา add bbcode ได้เเล้ว ลองใช้ event นี้ดู

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

   static public function getSubscribedEvents() {
        return array(

            'core.modify_text_for_display_before' => 'modify_text_for_display_before',

        );
    }



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

public function modify_text_for_display_before($event) {
 
        $post_text 
= $event['text'];
        
//        print_r($post_text);
        
        $post_view 
= $this->post_view($post_text);
             
        $event
['text'] = $post_view;
         
    
}


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

public function post_view($post_text) {
//        $post_text ข้อความโพสต์ก่อนถอด bbcode
        @preg_match_all('/\[md_post.*?\](.*?)\[\/md_post(.*?)\]/', $post_text, $message);
//        print_r($message);
        #ตัวอย่าง [md_post]{TEXT}[/md_post] 
        #ตอนใช้งาน[md_post]1501[/md_post]
        #ถอด  match จะได้
        #Array ( [0] => Array ( 
        #[0] => [md_post]1501[/md_post] ) 
        #[1] => Array ( [0] => 1501 ) 
        #[2] => Array ( [0] => ) 
        #)
        #        $message[1] = Array ( [0] => 1501 ) ถ้าใส่ bbcode มากว่า 1 ตัวก็จะมีเพิ่มขึ้น
        #       

        foreach ($message[1] as $post_id) {
//            print_r($post_id);
            ## SQL สำหรับหาข้อมูล post ที่ต้องการมาแสดงที่นี่
            $sqlc = ' SELECT *  FROM ' . POSTS_TABLE . ' WHERE post_id = ' . $post_id;
            $resultc = $this->db->sql_query($sqlc);
//            $post_text = $this->db->sql_fetchfield('text');
            while ($row = $this->db->sql_fetchrow($resultc)) {
                $post_text = $row['post_text']; #'[b]111[/b]'; #$post_text
                $parse_flags = OPTION_FLAG_BBCODE;#($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
                $text = generate_text_for_display($post_text, $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
                
//                $text = bbcode_nl2br($text);
//                $text = smiley_text($text);
            }
        }
         echo $text;

        return $post_text;


ลองดูวิธีนี้ก่อน
มันเเสดงข้อความจาก โพสต์อื่นที่ต้องการได้ เเต่ยังไม่สมบูรณ์ ต้องมาถอดbbcode กลับอีกครั้ง

ภาพประจำตัวสมาชิก
AePongsak
PHP VIP Members
PHP VIP Members
โพสต์: 4996
ลงทะเบียนเมื่อ: 17/09/2016 10:09 am

Re: สอบถามการเขียน Extension BBCode ที่จะ Query ข้อมูลจาก SQL ครับ

โพสต์โดย AePongsak » 21/07/2018 1:20 pm

เดียวลองดูนะครับ
รูปภาพ
ξν℮ry story has an end but in life every end is a neω ßeginning.


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 8 และ บุคคลทั่วไป 0 ท่าน