Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Plugin to exclude / include only some Urls parameter #5461

Closed
mattab opened this Issue · 11 comments

3 participants

Matthieu Aubry Anonymous Piwik user Anthon Pang
Matthieu Aubry
Owner

This feature in phpMyVisites was very useful. It is mostly used on websites with no readable URLs (?module=news&newsid=14&action=view)

The plugin would provide:

  • exclude given parameters from URLs
  • include only given parameters
  • exclude all parameters during statistics logging

This feature would be available:

  • “exclude parameters” would be available
    • in a general list applying to all websites (by default it would exclude PHPSESSID, jsessionid, SESSIONID, etc.)
  • at the website level: each website define their own parameters to exclude (evaluated on top of the global list)
“Include only given parameters” available for each website “Exclude all parameters” available for each website by default, Piwik campaigns parameter would be excluded from URLs

The UI would call the API directly, hence ensuring that all these features are available through the UI too.

For example the url``` example.com/page/index.php?userid=8571498752487&module=homepage``` could be``` example.com/page/index.php?module=homepage``` after removing the userid parameter.

The UI for this feature should be designed to be part of a “preference page” for a website, as we need to add several new preferences for each website: #41, #42, #43, #56. Ideally, all the UI would be ajax (very quick to go from the list of websites in the admin UI, to load one website details page, to come back to the list of websites).

Outstanding question: should it be in the SiteManager plugin, or a new plugin? Should it be part of the core (to minimize overhead of loading plugins at Tracker time…)

Anonymous Piwik user

This might be solved for the time being with a small plugin. To discuss: alexander dot schwartz at gmx dot net. This has hardcoded cleaning for sessions.

<?php
/**
 * Piwik - Open source web analytics
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
 * @version $Id$
 *
 * @package Piwik_TidyUrl
 */

require_once "Tracker/Action.php";

class Piwik_TidyUrl_Tracker_Action extends Piwik_Tracker_Action {
        public function getActionName() {
                $actionName = parent::getActionName();
                $actionType = parent::getActionType();
                if ($actionType == 1) {
                        // remove tomcat jsession id
                        $actionName = preg_replace("/;jsessionid=[A-Za-z0-9\.]*/","",$actionName);
                        // remove seam conversation id (assuming always at end of url)
                        $actionName = preg_replace("/&amp;conversationId=[0-9]*/","",$actionName);
                        $actionName = preg_replace("/\\?conversationId=[0-9]*/","",$actionName);
                }
                return $actionName;
        }
}

/**
 *
 * @package Piwik_TidyUrl
 */
class Piwik_TidyUrl extends Piwik_Plugin
{
    public function getInformation()
    {
        $info = array(
            'name' => 'TidyUrl',
            'description' => 'TidyUrl',
            'author' => 'ahus1',
            'homepage' => 'http://www.ahus1.de/',
            'version' => '0.1',
            'TrackerPlugin' => true, // this plugin must be loaded during the stats logging
        );

        return $info;
    }

    function getListHooksRegistered()
    {
        $hooks = array(
            'Tracker.newAction' => 'logTidyUrl',
        );
        return $hooks;
    }


    /**
     * URL Tidy
     */
    public function logTidyUrl($notification)
    {
            $action =& $notification->getNotificationObject();
            $action = new Piwik_TidyUrl_Tracker_Action();
    }

}

Anthon Pang
Collaborator

I still like the idea of possibly doing the tidying in piwik.js (see #519).

Anthon Pang
Collaborator

In #1023, the user appears to propagate/persist the campaign parameters in the URL.

In conjunction with #79, we could have an option to filter all campaign parameters.

Anonymous Piwik user

While exluding params as a whole is required for session params, I could also see a drill down behaviour for certain parameters (like it's already done with sites and folders in Actions/Pages).

First, I get a total of all hits, and on click these hits are splitted based on parameter value.

Example:

/index.php -> 6 pageviews

After drill down:

/index.php?message=logout -> 5 pageviews

/index.php?message=invalid-credentials -> 1 pageview

This is perfectly possible for only one parameter, but get's tricky (at least UI-wise) with more params.

Matthieu Aubry
Owner

Also, the page providing this feature could have an option "Record all page names as lowercase to avoid duplicated page names with or without capital letters"

(if you have a better wording please suggest)

Anthon Pang
Collaborator

From #1180, add ability to filter out the anchor/fragment after the hashmark.

Matthieu Aubry
Owner

(In [2023]) Fixes #5461 Adding URL Query parameters exclude setting, per website, and global. We also by default exclude sessionid, phpsessid, etc.
The query parameters are excluded case insensitive.

Matthieu Aubry
Owner

(In [2024]) Refs #5461 The url shouldn't be htmlspecialchared

Also fixing notice when triggering a goal manually (piwik.trackGoal(goalId)) where the location_ip used to get the country, wasn't set for a known visitor

Anthon Pang
Collaborator

There's a typo in the 0.6 update script. excluded_parameters should be added to the table after excluded_ips is added.

Anthon Pang
Collaborator

(In [2037]) fixes #5461 - re-order schema change (dependencies)

Anthon Pang
Collaborator

(In [2193])
refs #5461, refs #1347 - regenerate cache files

Matthieu Aubry mattab added this to the Piwik 0.6 milestone
Matthieu Aubry mattab self-assigned this
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.