phpopencartopencart-3

Changing Opencart Affiliate Variable Name from Tracking to Ref?


I'm working on an opencart website, and I was asked if it was possible to change the current affiliate link from reading mywebsite.com/currentproduct?tracking=tracking-code-here to mywebsite.com/currentproduct?ref=tracking-code-here.

So pretty much the variable named to read ?ref=tracking-code instead of ?tracking=tracking-code-here

My guess is I would just change the the GET varible name from tracking to ref. However, Im not sure exactly where that is.

I found this code in the admin/model/customer/customer.php and was wondering if the part that reads tracking = '" . $this->db->escape($data['tracking']) . "', could just be changed to ref without breaking something important.

    if ($data['affiliate']) {
        $this->db->query("REPLACE INTO " . DB_PREFIX . "customer_affiliate SET customer_id = '" . (int)$customer_id . "', company = '" . $this->db->escape($data['company']) . "', website = '" . $this->db->escape($data['website']) . "', tracking = '" . $this->db->escape($data['tracking']) . "', commission = '" . (float)$data['commission'] . "', tax = '" . $this->db->escape($data['tax']) . "', payment = '" . $this->db->escape($data['payment']) . "', cheque = '" . $this->db->escape($data['cheque']) . "', paypal = '" . $this->db->escape($data['paypal']) . "', bank_name = '" . $this->db->escape($data['bank_name']) . "', bank_branch_number = '" . $this->db->escape($data['bank_branch_number']) . "', bank_swift_code = '" . $this->db->escape($data['bank_swift_code']) . "', bank_account_name = '" . $this->db->escape($data['bank_account_name']) . "', bank_account_number = '" . $this->db->escape($data['bank_account_number']) . "', status = '" . (int)$data['affiliate'] . "', date_added = NOW()");
    }       
}

I haven't coded in opencart for almost 5 years, and it's, unfortunately, starting to show. Any answer to this would be greatly appreciated! Thanks!


Solution

  • If you're looking to edit this in the OC code, you can look at the file /catalog/controller/startup/startup.php

    Around line 126:

    // Tracking Code
    if (isset($this->request->get['tracking'])) {
        setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/');
    
        $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'");
    }       
    

    You can see that it's looking for the value set by the GET parameter tracking which seems to be what you're looking to change.

    Fortunately it seems like OC relies on the cookie thereafter so you shouldn't have to worry about it anywhere else but testing will determine whether that is the case or not