Я использую Piwik для отслеживания аналитики на моем сайте Drupal 7. Модуль Piwik установлен и отлично отслеживается. У меня проблема с отчетами с использованием метода PHP. Когда я использую пример кода из документации Piwik, это вызывает ошибку, из-за которой вся страница отображается в виде обычного текста HTML / исходный текст, а не на отрендеренном веб-сайте. Однако использование кода в базовом файле PHP вне Drupal работает нормально.
Это код из документации Piwik (который я изменил, чтобы включить мой токен аутентификации):
<?php
use Piwik\API\Request;
use Piwik\FrontController;
define('PIWIK_INCLUDE_PATH', realpath('../..'));
define('PIWIK_USER_PATH', realpath('../..'));
define('PIWIK_ENABLE_DISPATCH', false);
define('PIWIK_ENABLE_ERROR_HANDLER', false);
define('PIWIK_ENABLE_SESSION_START', false);
// if you prefer not to include 'index.php', you must also define here PIWIK_DOCUMENT_ROOT
// and include "libs/upgradephp/upgrade.php" and "core/Loader.php"require_once PIWIK_INCLUDE_PATH . "/index.php";
require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
FrontController::getInstance()->init();
// This inits the API Request with the specified parameters
$request = new Request('
module=API
&method=UserSettings.getResolution
&idSite=7
&date=yesterday
&period=week
&format=XML
&filter_limit=3
&token_auth=anonymous
');
// Calls the API and fetch XML data back
$result = $request->process();
echo $result;
Если я изменяю определенные константы на true, тогда отображается страница с ошибкой:
сессия уже была запущена сессией .auto-start или session_start ()
В .htaccess Drupal уже отключен auto.start, и я также попытался изменить Piwik для хранения данных сеанса в БД вместо файлов, но ни один из них не работал.
Только для справки, код был помещен в шаблон узла (node - 183.tpl.php), чтобы переопределить вывод одной страницы.
Спасибо за любую помощь!
Код, который вы используете, работает, если вы находитесь в проекте Piwik.
Если вы хотите позвонить в Piwik из вашего приложения на Drupal, вы можете использовать HTTP API. Вот пример кода из документов:
<?php
// this token is used to authenticate your API request.
// You can get the token on the API page inside your Piwik interface
$token_auth = 'anonymous';
// we call the REST API and request the 100 first keywords for the last month for the idsite=7
$url = "http://demo.piwik.org/";
$url .= "?module=API&method=Referrers.getKeywords";
$url .= "&idSite=7&period=month&date=yesterday";
$url .= "&format=PHP&filter_limit=20";
$url .= "&token_auth=$token_auth";
$fetched = file_get_contents($url);
$content = unserialize($fetched);
// case error
if (!$content) {
print("Error, content fetched = " . $fetched);
}
print("<h1>Keywords for the last month</h1>");
foreach ($content as $row) {
$keyword = htmlspecialchars(html_entity_decode(urldecode($row['label']), ENT_QUOTES), ENT_QUOTES);
$hits = $row['nb_visits'];
print("<b>$keyword</b> ($hits hits)<br>");
}
Других решений пока нет …