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


数据库到达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(age="默认年龄")

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

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

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

但可以获取

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

相关内容

    暂无相关文章