วิธีการสร้าง เมนูใน user ด้วย Extensio 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] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: วิธีการสร้าง เมนูใน user ด้วย Extensio phpbb

วิธีการสร้าง เมนูใน user ด้วย Extensio phpbb

โดย Ittichai_chupol » 19/01/2019 3:29 pm

- เว็บยอร์ด phpbb จะเป็นเว็บบอร์ดที่สามารถทำงานได้ เลย ตั้งแต่ติดตั้งการใช้งานครั่ง ดดยมีฟั่งชั่นการทำงานหลักๆ มาพร้อมกันทั้งหมด โดยหากไม่มีความจำเป็นอะไร ก็เเทบจะไม่ต้องปรับแต่งอะไรเพิ่มเข้าเลย

- โดยถ้าหากผู้ใช้งาน ต้องการเพิ่มความสามารถการทำงานของ phpbb จะมีวิธีการคือเเก้เพิ่มเข้าไป ในโคด ของ phpbb เลย แต่เป้นการทำที่ไม่ค่อยจะดีสักทำไร แต่จะมีอีก กรณี หนึ่งก็คือ การเขียน Extension ซึ่งจะเป็นการเขียนส่วนขยายเพิ่มเติ่มการทำงานเสริมเข้าไชแทน จะดีกว่าการเข้าไปแก้ข้างโคด ดังเดิม

- ในการสร้าง Extension จะแบ่งส่วนการทำงานแบ่งหลักๆได้ 2 อย่าง คือ Event และ controller และทั้งนี้ ภายใน Extension ดังก็จะมีส่วนการตั้งค่า ทั้งในฝั่ง ของ Admin และส่วน User โดยส่วนของ Admin มีด้วยกันหลายขั้นตอน ดังนี้

- แต่ส่วนใหญ่การตั้งค่า ของ Extension จะตั้งค่าในส่วนของ Admin แต่ในบางครั่ง จะต้องตั้งค่าในส่วนของ user บาง ซึ่งวันนี้เราจะมาแนะนำการสร้าง เมนูสำหรับการตั้งค่า การทำงาน Extension ในส่วนเมนู ของ User

ขั้นตอนการเขียน Extension สำหรับสร้างเมนู ในส่วน ของ User

1.ในกรณีที่เรา Extension สร้างเมนูการตั้งค่าในส่วนของ Admin อยู่แล้ว ให้นำส่วนนั้นมาแก้ได้เลย
2.เข้าไปที่ โฟลเดอร์ migrations แล้วเพิ่มโคดเข้าไป

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


  public function update_data() {
        return array(
   
   --------------- ส่วนที่ต้อง เพิ่มเข้าไป ----------------------------------------------------------             
            public function update_data() {
        return array(
       array('module.add', array(
                    'ucp',
                    'UCP_MAIN',
                    array(
                        'module_basename' => '\mindphp\m_favorite_stock_system\ucp\m_favorite_stock_system_module',
                        'auth' => 'ext_mindphp/m_favorite_stock_system',
                        'modes' => array('m_favorite_stock_system'),
                    ),
                )),
                
                
        );
3.จากนั้นสร้างโฟลเดอร์ เพิ่มเข้ามา ชื่อว่า "ucp"
3.1 แลล้วก้สร้างไฟล์ php ชื่อ ว่า m_favorite_stock_system_info
ตัวอย่างโคด

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


<?php
namespace mindphp\m_favorite_stock_system\ucp;

if (!defined('IN_PHPBB')) {
    exit;
}
class m_favorite_stock_system_info {
    function module() {
        return array(
            'filename' => '\mindphp\m_favorite_stock_system\ucp\m_favorite_stock_system_module',
            'title' => 'UCP_M_FAVORITE_STOCK_SYSTEM_TITLE',
            'version' => '1.0.0',
            'modes' => array(
                'm_favorite_stock_system' => array('title' => 'UCP_M_FAVORITE_STOCK_SYSTEM_MODES_TITLE', 'auth' => 'ext_mindphp/m_favorite_stock_system', 'cat' => array('M_FAVORITE_STOCK_SYSTEM_MOD')),
            ),
        );
    }

}


3.2 แลล้วก้สร้างไฟล์ php ชื่อ m_favorite_stock_system_module

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

<?php

/**
 *
 * @package Share On
 * @copyright (c) 2013 Vinny
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
 *
 */

namespace mindphp\m_favorite_stock_system\ucp;

class m_favorite_stock_system_module {

    var $u_action;

    function main($id, $mode) {
        global $db, $user, $auth, $template, $cache, $request;
        global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
        $this->config = $config;
        $this->request = $request;
        $this->tpl_name = 'ucp_m_favorite_stock_system_news';
        $user->add_lang_ext('mindphp/m_favorite_stock_system', 'ucp/info_ucp_m_favorite_stock_system');

        $this->page_title = 'ALERT_PRIVATE_MESSAGE';
        add_form_key('mindphp/m_favorite_stock_system');
//        $user->add_lang_ext('mindphp/m_alert_private_message', 'acp/info_acp_m_alert_private');
        if ($request->is_set_post('submit')) {
            if (!check_form_key('mindphp/m_favorite_stock_system')) {
                trigger_error('FORM_INVALID');
            }
            $config->set('m_favorite_stock_system_alert', $request->variable('m_favorite_stock_system_alert', 0));
            trigger_error($user->lang['ACP_SETTING_SAVED'] . adm_back_link($this->u_action));
        }
        $template->assign_vars(array(
            'T_ACTION' => $this->u_action,
            'ENABLE_PRIVATE_MESSAG' => $config['m_favorite_stock_system_alert'],
            'U_ACTIPON_FAVORITE' => 'ucp.php?i=-mindphp-m_favorite_stock_system-ucp-m_favorite_stock_system_module&mode=m_favorite_stock_system',
        ));


        include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
        $forum_list = make_forum_select(false, false, true, false, false, false, true);

        // Build forum options
        $s_forum_options = '';
        foreach ($forum_list as $f_id => $f_row) {
            $s_forum_options .= '<option value="' . $f_id . '"' . (($f_row['selected']) ? ' selected="selected"' : '') . (($f_row['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';
        }

//        // Build subforum options
        //$s_subforum_options = $this->build_subforum_options($forum_list);

        $template->assign_vars(array(
            'S_SELECT_FORUM' => true,
            'S_FORUM_OPTIONS' => $s_forum_options,
            'S_SUBFORUM_OPTIONS' => $s_subforum_options,
            'S_FORUM_ALL' => true,
            'S_FORUM_MULTIPLE' => true)
        );
    }

}


4.ส่วนสำหรับการเเทมเพลต นั้นให้ไปสร้าง ใน style เลย
4.1. สร้าง html ชื่อว่า ucp_m_favorite_stock_system_news

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


<!-- INCLUDE ucp_header.html -->
เนื้อหาที่ต้องการให้เเสดง
<!-- INCLUDE ucp_footer.html -->



ข้างบน