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

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

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

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

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

Post by 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 แล้วเพิ่มโคดเข้าไป

Code: Select all


  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
ตัวอย่างโคด

Code: Select all


<?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

Code: Select all

<?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

Code: Select all


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



Post Reply

Return to “PHP Knowledge”

Users browsing this forum: No registered users and 3 guests