新增和自定義排序用戶下拉菜單

  1. 主頁
  2. 文檔
  3. B2主題使用教程
  4. B2主題二開
  5. 新增和自定義排序用戶下拉菜單

B2主題的用戶下拉菜單(如下圖加框部分),默認并不支持新增菜單項,更不支持排序。今天倡萌就來分享下如何實現(xiàn)新增菜單項,并且支持自由排序。

新增和自定義排序用戶中心的菜單 - B2 User Menus
B2 用戶下拉菜單

讓菜單選項支持排序和新增項目

讓菜單選項支持排序

首先,要讓菜單項支持排序,我們就需要修改B2主題的菜單設置選項【B2主題設置 – 模塊設置 – 頂部】的字段類型。

以下是原來的設置字段類型,不支持排序:

新增和自定義排序用戶中心的菜單 - B2 User Menus 0
B2 User Menus 0

我們修改為可支持多選和排序的字段類型:

新增和自定義排序用戶中心的菜單 - B2 User Menus 1
B2 用戶下拉菜單項設置

讓菜單支持新增項目

在查看了 b2\Modules\Templates\Header.php 文件的代碼后,我們找到了 b2_user_menu_list 過濾鉤子,允許我們新增菜單項,但是,如果你設置了上圖的菜單選項,你會發(fā)現(xiàn),新增的菜單項仍舊不會顯示,這是因為,B2主題代碼中還做了一個比對,只有后臺選擇的菜單項才會顯示。但是,B2主題并沒有為后臺的菜單項選項添加過濾鉤子,后臺都沒辦法勾選我們新增的菜單項,前端也就無法顯示了。

所以,綜上所述,我們需要解決兩個問題。

修改方案

在文件 b2\Modules\Settings\Template.php 中搜索 點擊頭像要顯示的菜單,將這個字段的整段代碼替換為下面的代碼:

        $top->add_field(array(
            'name'    => __( '點擊頭像要顯示的菜單', 'b2' ),
            'desc'    => __( '用戶登陸狀態(tài)下,點擊頭像要顯示的菜單,支持拖放排序。', 'b2' ),
            'id'=>'user_menus',
            'type'             => 'pw_multiselect',
            'default'          => self::get_default_settings('user_menus'),
            'options'          => apply_filters('b2_settings_user_menus', array(
                'directmessage' => __( '私信列表', 'b2' ),
                'gold'   => __( '財富管理', 'b2' ),
                'distribution'=>__( '推廣中心', 'b2' ),
                'task'=>__( '任務中心', 'b2' ),
                'vip'=>__( '成為會員', 'b2' ),
                'certification'=>__( '認證服務', 'b2' ),
                'dark_room'=>__( '小黑屋', 'b2' ),
                'orders'=>__( '我的訂單', 'b2' ),
                'settings'=>__( '我的設置', 'b2' )
            )),
            'default'=>['directmessage','gold','task','orders','settings']
        ));

以上代碼將字段類型更改為 pw_multiselect,允許多選和排序,新增了默認值;還新增了一個 b2_settings_user_menus 過濾鉤子,允許新增后臺菜單選項。

通過上面的代碼修改,就允許我們對菜單項目進行排序,同時新增了后臺菜單選項的鉤子,為下一步做好了基礎。

以上涉及到B2父主題的修改,已經(jīng)反饋給春哥,后續(xù)更新應該會集成。

新增用戶菜單項

要新增用戶菜單項,需要使用到兩個鉤子:

  • b2_settings_user_menus:在后臺菜單設置中新增項目。
  • b2_user_menu_list:設置前端輸出的菜單項內容。

最終的示例【新增我的收藏】代碼如下,添加到子主題即可:

/**
 * 新增后臺用戶菜單選項【示例:新增我的收藏】
 * http://www.ydqwiac.cn/docs/b2/b2-dev/user-menus
 */
function b2child_settings_user_menus( $menus ) {
    
    $menus['collections'] = __('我的收藏','b2'); // 注意 collections 和下面新增的前端菜單項的保持一致
    
    return $menus;
}
add_filter('b2_settings_user_menus', 'b2child_settings_user_menus');

/**
 * 新增前端用戶菜單項【示例:新增我的收藏】
 * http://www.ydqwiac.cn/docs/b2/b2-dev/user-menus
 */
function b2child_ser_menu_list( $arg ) {
    
    $arg['collections'] = array( // 注意 collections 和上面新增的后臺菜單項的保持一致
                'text'=>__('我的收藏','b2'),
                'link'=>'<a :href="userData.link+\'/collections\'"', //注意修改菜單網(wǎng)址
                'new'=>false,
                'class'=>'',
                'attr'=>'',
                'des'=>__('查看收藏的內容','b2'),
                'icon'=>b2_get_icon('b2-star-line') // 修改圖標
            );
    
    return $arg;
}
add_filter('b2_user_menu_list', 'b2child_ser_menu_list');

這篇文章對您有用嗎? 22 1
6 條回復 A文章作者 M管理員
  1. Q哥

    我的評論中的代碼給屏蔽了。。 我截圖中,我把紅線標示的地方直接換成了我想跳轉的鏈接,URL直鏈,結果頭像不顯示。 是不是不能用直鏈,這塊應該怎么寫呢?

    • 網(wǎng)站編輯

      如果你直接添加的并不是B2用戶中心默認已經(jīng)有的網(wǎng)址(即不是用戶個人網(wǎng)址開頭的),應該也是可以的,只不過可能要在所有斜桿前面添加反斜杠和單引號,具體你可以問問春哥

  2. Q哥

    您好,倡萌! ‘link’=>’

?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

海原县| 淮阳县| 土默特右旗| 镇安县| 陇西县| 嫩江县| 临西县| 清远市| 城固县| 瑞金市| 平舆县| 灌云县| 清流县| 郓城县| 惠安县| 正蓝旗| 松阳县| 黑龙江省| 彭阳县| 镇雄县| 宣威市| 凉城县| 安新县| 邓州市| 盘锦市| 金阳县| 牡丹江市| 北安市| 申扎县| 英德市| 敖汉旗| 武山县| 凤翔县| 贵定县| 保靖县| 桐庐县| 定州市| 巴东县| 杭州市| 从江县| 贵溪市|