如何从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()));
}
答案 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();
。