Aller directement à la fin des métadonnées
Aller au début des métadonnées

Using JS

This forum comment and this gist demonstrate a way to use a URL parameter to populate a field which is in the current page. This is an approach which works for inputs on the page (eg a text input for donation amount), even hidden ones. It's a very quick demo but might deliver what you need ...

As part of a custom extension

One of the common needs of a contribution or event registration system is to track what campaign that transaction is destined from and what link originated the transaction. This allows organizations to calculate what links / web sites / advertising / mailings are most effective and use that information to influence their current or future campaigns. Some organizations (e.g. wikimedia foundation) use a three level tracking scheme: Campaign, Appeal and Fund, while other organizations might choose to use only one tracking field.

This issue came up at the San Francisco developer camp. There is no built-in support for this in CiviContribute or CiviEvent. However we can accomplish something very similar using a combination of custom fields, populating fields via a GET url and a civicrm buildForm hook. We've made some changes to v2.2.4 to make it easier. Here is the recipe for tracking either a contribution or event registration page.

  1. Create a custom groupcalled "Contribution Tracker" which extends Contribution. Within that group create three custom fields, one each for "Campaign", "Appeal" and "Fund". In my test setup I created these as searchable text fields with a length of 64 characters. Lets assume these custom fields have ids of 4, 5 and 6.

    For Drupal: Administer -> Customize -> Custom Data ->> New Group of Custom Fields

  2. Add these three fields to a Profilewhich is included on that contribution page. let assume the contribution page has an id of 1. As of v2.2.5 release, these profile fields will be hidden via javascript.

    For Drupal: Administer -> Customize -> Profile ->> New CiviCRM Profile

  1. In a Drupal module (lets call it civitracker) create the following hook:

    function civitracker_civicrm_buildForm( $formName, &$form ) {
        // enable tracking feature
        if ( ( $formName == 'CRM_Contribute_Form_Contribution_Main' ||
               $formName == 'CRM_Contribute_Form_Contribution_Confirm' ||
               $formName == 'CRM_Contribute_Form_Contribution_ThankYou' ) &&
               $form->getVar( '_id' ) == 1 ) { // use  CONTRIBUTION PAGE ID here
    	/* If you would like to set defaults for a $_GET value use...
            if (!$_GET['custom_4']) {
            	$_GET['custom_4'] = "Summer2009";
            	require_once 'CRM/Core/BAO/CustomGroup.php';
            	$getDefaults = CRM_Core_BAO_CustomGroup::extractGetParams( $this, "'Contact', 'Individual', 'Contribution'" );
    		if ( ! empty( $getDefaults ) ) {
    			$form->setDefaults( $getDefaults );
           // use the custom field ID and custom field label here
            $trackingFields = array( 'custom_4' => 'Campaign',
                                     'custom_5' => 'Appeal',
                                     'custom_6' => 'Fund' );
            $form->assign( 'trackingFields', $trackingFields );
  2. Make sure your civitracker module is enabled in Drupal.
  3. In the links that you add to your blog post or website, should pass in the values of the above three custom fields as GET parameters. Thus a sample URL would look like:

CiviReport ships with a few reports that will analyze contributions based on "Campaign", "Appeal" and "Fund" custom data fields (these are being built for the Wikimedia Foundation). You can read more detailed specifications of the reports on the wiki. Some of the above changes are in v2.2.4.

  • Aucun