- โดยถ้าหากผู้ใช้งาน ต้องการเพิ่มความสามารถการทำงานของ 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.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')),
),
);
}
}
โค้ด: เลือกทั้งหมด
<?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.1. สร้าง html ชื่อว่า ucp_m_favorite_stock_system_news
โค้ด: เลือกทั้งหมด
<!-- INCLUDE ucp_header.html -->
เนื้อหาที่ต้องการให้เเสดง
<!-- INCLUDE ucp_footer.html -->