Magento Mixpanel PHP库

时间:2015-01-09 14:15:44

标签: php magento javascript mixpanel

如何从Mixpanel Analytics向Magento添加新的PHP库。

以下是图书馆的实际链接: https://mixpanel.com/help/reference/php

在我下载的github文件中有一个名为lib的文件夹,我将其重命名为Mixpanel并将其放在Magento的/ lib文件夹中 - 但是Magento会自动加载这个或者我是否需要添加一行代码如:

require_once(Mage::getBaseDir('lib') . '/Mixpanel/MixpanelBase.php');

第二部分

现在我需要从我拥有的每个事件中导入数据库中的数据。见演示:http://mpdocs.s3.amazonaws.com/import-old-signup-events-demo.php

在我的档案中,我有以下内容:

class Mixpanel_Model_Observer extends Mage_Core_Model_Abstract
{
public $token;
public $api_key;
public $host = 'http://api.mixpanel.com/';

public function __construct($token_string,$api_key) {
    $this->token = Mage::getStoreConfig('mixpanel_options/settings/mixpanel_token');
    $this->api_key = Mage::getStoreConfig('mixpanel_options/settings/mixpanel_api_key');
}

public function track($event, $properties = array()) {

    $params = array(
        'event' => $event,
        'properties' => $properties
        );
    if (!isset($params['properties']['token'])){
        $params['properties']['token'] = $this->token;
    }
    $url = $this->host . 'import/?data=' . base64_encode(json_encode($params)) . "&api_key=$this->api_key";
    exec("curl '" . $url . "' >/dev/null 2>&1 &"); 
}
}

现在我不确定如何使用此代码使其与我已有的代码一起使用,并且此代码可以针对所有事件运行,还是我需要为所有单个函数创建此代码(而不是生日我希望获得登录数据):

$metrics = new EventImporter("TOKEN_HERE","API_KEY_HERE");

foreach($users as $id=>$birthdate){
 $props = array();
 $props['distinct_id'] = $id; //distinct_id should be your identifier
 $props['time'] = strtotime($birthdate); //time should be their $birthdate
 $event = '$signup'; //you are sending the $signup event. You could also put $born here. 
 echo "\nSending $event event for ".$props['distinct_id']." at $birthdate (".$props['time'].")\n";

 $metrics->track($event, $props);
}

这是我用于跟踪登录的功能:

public function trackCustomerLogin($observer) {

    $this->track('customer_action', array('action'          => 'login',
                                          'distinct_id'     => $this->getCustomerIdentity()));
}

2 个答案:

答案 0 :(得分:0)

如果您已将lib文件夹重命名为Mixpanel,则应将其添加到类名称作为前缀: 例: class Base_MixpanelBase

将成为:

class Mixpanel_Base_MixpanelBase

然后通过对其进行评论来删除所有require_once()调用,并且不要忘记通过在其名称中添加前缀:Mixpanel_来更改所有类名,但不要更改文件名。 这样你将按照Varien和Zend库的编写方式,你可以像这样直接调用类: $mixPanelBase = new Mixpanel_Base_MixpanelBase($options);

没有require_once调用。 Magento将负责自动加载。

答案 1 :(得分:0)

Magento自动加载器将使用斜杠替换下划线,并在末尾添加.php。即:

  • new Some_Class_Name - > require_once 'lib/Some/Class/Name.php'

如果您将文件直接解压缩到lib文件夹中,您应该可以自动加载Mixpanel类,例如这些文件应该在

  • /magento/lib/MixpanelBase.php
  • /magento/lib/Base/MixpanelBase.php

等。然后,您将能够在不使用包含语句的情况下在Magento中使用$var = new MixpanelBase();