Piwik插件

时间:2009-06-15 20:52:33

标签: api plugins matomo

我正在构建一个插件,我希望有一个Subtable,以便我的用户可以点击概览数据,并从那里显示数据。

遵循我能够收集的代码:

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;
}

然而,subTable永远不会出现。我做错了吗?

1 个答案:

答案 0 :(得分:0)

您是否需要在API请求中添加'expanded = 1'参数?

http://piwik.org/docs/analytics-api/reference/#toc-optional-api-parameters

如果您正在寻找有关如何使用piwik框架在插件中绘制自定义数据的示例代码,看起来他们有一些doc:Piwik plugins docs