数据库到达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');
网友评论