Api Piwik插件

Api Piwik插件,api,plugins,matomo,Api,Plugins,Matomo,我正在构建一个插件,我希望有一个子表,这样我的用户就可以点击概览数据,并从中显示数据 以下是我收集到的代码: public function getCompanyList($idSite, $period, $date ) { $dataTable = new Piwik_DataTable(); $query = Piwik_Query("SELECT cl.id, cl.company_name name, sf.id sf_id FROM sitedb.company_l

我正在构建一个插件,我希望有一个子表,这样我的用户就可以点击概览数据,并从中显示数据

以下是我收集到的代码:

public function getCompanyList($idSite, $period, $date )
{
    $dataTable = new Piwik_DataTable();

    $query = Piwik_Query("SELECT cl.id, cl.company_name name, sf.id sf_id FROM sitedb.company_lookup cl INNER JOIN sitedb.storefronts sf ON cl.id = sf.company_id");
    while ($row = $query->fetch()) {
        $piwik_row = new Piwik_DataTable_Row;
        $piwik_row->setSubTable( $this->getProductsForCompany($idSite, $period, $date, $row['id']) );
        $piwik_row->setColumns( array('id' => $row['id'], 'Company Name' => $row['name']) );
        $dataTable->addRow($piwik_row);

    }
    return $dataTable;
}

public function getProductsForCompany($idSite, $period, $date, $company_id )
{
    if (!defined('PIWIK_ENABLE_DISPATCH')) define('PIWIK_ENABLE_DISPATCH', false);
    if (!defined('PIWIK_ENABLE_ERROR_HANDLER')) define('PIWIK_ENABLE_ERROR_HANDLER', false);
    require_once PIWIK_INCLUDE_PATH . "/index.php";
    require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
    Piwik_FrontController::getInstance()->init();
    $request = new Piwik_API_Request('
            method=Actions.getActions
            &idSite=' . $idSite . '
            &date=' . $date . '
            &period=' . $period . '
            &format=PHP
            &filter_column=label
            &filter_pattern=product.php
            &filter_sort_column=nb_visits
            &filter_sort_order=desc
            &token_auth=anonymous
            ');
    $result = $request->process();

    // contains an array of visits to storefront.php
    $result = unserialize($result);

    $query = Piwik_Query("SELECT sp.product_id id, sp.name, sp.storefront_id sf_id, cl.company_name FROM sitedb.storefront_products sp INNER JOIN sitedb.storefronts sf ON sp.storefront_id = sf.id INNER JOIN sitedb.company_lookup cl ON sf.company_id = cl.id WHERE cl.id = {$company_id}");
    $dataTable = new Piwik_DataTable();

    while ($row = $query->fetch()) {
        // piwik returns & escaped to & -- make sure that's what you use to search!
        $this->array_search_in_level("/product.php?id=" . $row['id'] . "&sf_id=" . $row['sf_id'], $result, 'label', $storefront_array, 1);

        if (is_array($storefront_array) && array_key_exists('nb_visits', $storefront_array)) {
            $piwik_row = new Piwik_DataTable_Row;
            $piwik_row->setColumns( array('id' => $row['id'], 'Product Name' => $row['name'], 'Page Views' => $storefront_array['nb_visits']) );
            $dataTable->addRow($piwik_row);
        }
    }
    return $dataTable;
}

然而,子表从未出现。我做错什么了吗?

也许您需要将“expanded=1”参数添加到API请求中

如果您正在查找有关如何使用piwik框架在插件中绘制自定义数据的示例代码,那么它们似乎有一些文档: