首先根据官方提供的插件开发实例中的操作进行插件的创建

这里我的示例插件名为demo

在插件的根目录的Demo.php文件中添加前端用户中心侧边栏菜单的钩子

    /**
     * 会员中心边栏后
     * @return mixed
     * @throws \Exception
     */
    public function userSidenavAfter()
    {
        $request = Request::instance();
        $actionname = strtolower($request->action());
        $data = [
            'actionname' => $actionname
        ];
        return $this->fetch('view/hook/user_sidenav_after', $data);
    }

并且需要引入

use think\Request;


在插件根目录的view文件夹中创建hook文件夹(用于存放钩子的模板文件)

然后根据刚刚创建的钩子新建模板文件 user_sidenav_after.html

代码如下:

<ul class="list-group">
    <li class="list-group-heading">{:__('DEMO')}</li>
    <li class="list-group-item {:$actionname=='demo1'?'active':''}"><a href="{:url('index/demo/demo1')}"><i class="fa fa-cny fa-fw"></i> {:__('DEMO1')}</a></li>
    <li class="list-group-item {:$actionname=='demo2'?'active':''}"><a href="{:url('index/demo/demo2')}"><i class="fa fa-list fa-fw"></i> {:__('DEMO2')}</a></li>
</ul>

文件中的代码为用户中心侧边栏的菜单选项。


然后在插件根目录中创建application文件夹 ,然后在该文件夹中创建index文件夹(这是前端模块文件夹)

然后在index文件夹中创建controller控制器文件夹和view视图文件夹

在控制器文件夹中创建Demo.php控制器文件

<?php

namespace app\index\controller;

use app\common\controller\Frontend;
use think\Exception;

/**
 * 钩子控制器
 */
class Demo extends Frontend
{
    protected $layout = 'default';
   protected $noNeedRight = ['*'];

    /**
     * DEMO1
     * @return string
     */
    public function demo1()
    {

        return $this->view->fetch();
    }

    /**
     * DEMO2
     * @return string
     */
    public function demo2()
    {

        return $this->view->fetch();
    }

}


然后在视图文件夹view中创建demo文件夹

然后根据钩子模板中的菜单响应创建demo1.html和demo2.html

下面是模板代码演示

<div id="content-container" class="container">
    <div class="row">
        <div class="col-md-3">
            {include file="common/sidenav" /}
        </div>
        <div class="col-md-9">
            <div class="panel panel-default panel-demo">
                <div class="panel-body">
                    <h2 class="page-header">标题
                        <span><small class="text-danger">{:__('Demo1')}</small></span>
                        <a href="{:url('demo/demo')}" class="btn btn-info pull-right"> 按钮</a>
                    </h2>
             
                    <div class="row">
                        <div class="col-md-12">
                            <h4>
                              标题
                            </h4>
                            <p class="text-success">内容</p>
                            <p class="text-muted">内容</p>
                        </div>
                    </div>
                    <hr>
    
                    <div class="pager">列表</div>
                </div>
            </div>
        </div>
    </div>
</div>


这样就基本实现了在前端用户中心中显示插件的菜单及内容

在后台上传插件并安装,然后刷新缓存,打开用户中心就可以看到效果了