美文网首页
matomo piwik 创建新插件,新增页面

matomo piwik 创建新插件,新增页面

作者: 王乐城愚人云端 | 来源:发表于2018-11-27 08:49 被阅读0次

    数据库到达50G时会比较卡,如果预计流量大的网站,统计数据可以选择部署多个matomo服务器

    1.先开启开发模式

    ./console development:enable
    

    2.创建插件并激活插件

    ./console generate:plugin --name="MyPlugin"
    ./console plugin:activate MyPlugin
    

    3.生成菜单

    ./console generate:menu
    

    可以绑定到已经有的菜单或者新的菜单

    默认的action是index

    现在我们改成showList,点击菜单就会触发Controller.php中的showList方法

       public function configureAdminMenu(MenuAdmin $menu)
        {
            // or create a custom category
            $menu->addItem('菜单栏名', '菜单名', $this->urlForAction('showList'));
        }
    

    4.创建新的页面

    一般一个页面是View的实例

    但页面一般都会继承一些基础页面

    所以我们在目录下创建templates目录,并从其他插件中复制一个

    xxx.twig文件

    {% extends "admin.twig" %}
    {% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
    
    {% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
    
    {% block content %}
        这里放你自己的页面内容
    {% endblock %}
    

    5.设置View的实例的基础变量

    基础页面中有一些基础变量

     public static function displayWarningIfConfigFileNotWritable()
        {
            $isConfigFileWritable = PiwikConfig::getInstance()->isFileWritable();
    
            if (!$isConfigFileWritable) {
                $exception = PiwikConfig::getInstance()->getConfigNotWritableException();
                $message = $exception->getMessage();
    
                $notification = new Notification($message);
                $notification->raw     = true;
                $notification->context = Notification::CONTEXT_WARNING;
                Notification\Manager::notify('ControllerAdmin_ConfigNotWriteable', $notification);
            }
        }
        protected function configureViewAndCheckPermission($template)
        {
            Piwik::checkUserIsNotAnonymous();
            $view = new View($template);
            $this->setBasicVariablesView($view);
            $this->displayWarningIfConfigFileNotWritable();
            $view->topMenu  = MenuTop::getInstance()->getMenu();
            $view->adminMenu = MenuAdmin::getInstance()->getMenu();
            $view->notifications = NotificationManager::getAllNotificationsToDisplay();
            $view->errorMessage = '';
            return $view;
        }
    

    6.创建css,js文件

    每个插件下都有一个和插件名同名的类文件

    在这个类文件中定义js,css文件路径,或引用其他插件中的js,css

      public function registerEvents()
        {
            return array(
                'AssetManager.getJavaScriptFiles' => 'getJsFiles',
                'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
            );
        }
    
        public function getStylesheetFiles(&$stylesheets)
        {
            $stylesheets[] = "plugins/TianjiService/css/main.less";
        }
    
        public function getJsFiles(&$jsFiles)
        {
            $jsFiles[] = "plugins/TianjiService/js/tianji.js";
        }
    
        /**
         * @return Plugin\Manager
         */
        private static function getPluginManager()
        {
            return Plugin\Manager::getInstance();
        }
     
    

    7.API中可以从参数中直接获取http请求的参数

    请求规则,返回json /index.php?module=API&method=TianjiService.findAllRules&format=JSON
    module为API,方法是:插件名.API方法,默认返回XML,可以添加format=JSON返回json

    在该请求后继续添加get参数,或是post参数,都会传递到API方法的参数中

    例如 say(name="默认名字",age="默认年龄")

    http请求的参数会直接赋值给方法的参数

    8.在Controller.php控制器中获取http请求参数

    控制器不能像API那样直接从方法的参数中获取http请求参数

    但可以获取

    $name = Common::getRequestVar('name');
    

    相关文章

      网友评论

          本文标题:matomo piwik 创建新插件,新增页面

          本文链接:https://www.haomeiwen.com/subject/wtpwqqtx.html