首先..我很抱歉没有更彻底地搜索论坛..我确实遇到了一些帮助我找到解决方案的文章(虽然没有一个是直接的)..无论如何,这是我的解决方案..
资产表
- ID (int, primary, auto inc)
- 路径(字符串)
- 印象计数(整数)
Assets_model 模型
- GetPathByID ($iID) -> 返回具有给定 ID 的图像的实际路径
- AddImpression ($iID) -> 增加具有给定 ID 的行的展示次数
SimAssets 库
class SimAssets
{
const C_ASSETS_CONTROLLER = 'assets/index';
public function GetTrackingAsset ($iImageID)
{
$sLink = sprintf('%s/%s/%u', config_item('base_url'), self::C_ASSETS_CONTROLLER, $iImageID);
return $sLink;
}
}
资产控制器
class Assets extends CI_Controller
{
public function index ($sID)
{
$iID = intval($sID);
$this->load->model ('assets_model');
$sPath = $this->assets_model->GetPathByID($iID);
if ($sPath !== NULL)
{
if (file_exists($sPath))
{
$this->assets_model->AddImpression ($sID);
header (sprintf('Content-Length: %u', filesize($sPath)));
header (sprintf('Content-Type: %s', 'image/jpg'));
header (sprintf('Content-Disposition: inline; filename=%s', $sPath));
echo readfile ($sPath);
}
}
}
}
用法
echo '<img src="' . $this->simassets->GetTrackingAsset(3) . '">';
// <img src="http://localhost/Testing/index.php/assets/index/3">
正在完成什么
- 每个需要跟踪的页面/电子邮件都将包含一个指向定义为资产的图像的嵌入式链接。
- 1, 1x1.jpg => 用于跟踪特定电子邮件促销的图像
- 2, 1x1.jpg => 用于跟踪另一个特定电子邮件促销的图像
- 3, 1x1.jpg => 在所有电子邮件中使用的图像来跟踪总共打开了多少封邮件
- 4、DishA_thumb.jpg => 搜索页面上使用的图片,看看有多少搜索显示了这个项目
- 5、DishA_large.jpg => 详情页上使用的图片,查看有多少人实际详细查看了此商品。
- 当对
Assets
控制器进行调用时,它会找到具有给定 ID 的图像的路径,将其呈现为图像,并增加其展示次数。
可以进一步做什么
- 可以从
Assets
表中删除 ImpressionCount 并创建一个新表AssetTracking
,如下所示:
- 资产 ID(整数)
- 上次访问时间 (time_stamp)
- 标记(字符串)
- 可以将第二个参数添加到包含标签的资产链接(唯一标识访问者的信息,此链接是否出现在页面或电子邮件中等)
AddImpression 将简单地使用给定的和在AssetTracking
表中添加一个新行。AssetID
Tag
可以将类似的方法添加到SimAssets
返回页面 URL 而不是图像 URL 的库中。
- 可以将另一种方法添加到
Assets
控制器,检查传递的页面 ID、记录命中并重定向到实际页面 URL。这使我能够:
- 发送包含页面 ID 而非页面 URL 的链接的电子邮件
- 当用户点击链接时,控制器会将他们重定向到适当的页面,同时记录给定页面 ID 的点击。
两种方案的结合
创建电子邮件:
<img src="http://localhost/Test/index.php/assets/image/1/User123" style="display:none">
// actually loads http://localhost/Test/1x1.jpg
Hi, we at XYZ have a new promotion offer for a
<a href="http://localhost/Test/index.php/assets/pages/1/User123">New Pizza</a>.
Can we tempt you with it? =)
// actually redirects to http://localhost/Test/index.php/items/detail/newpizza
当电子邮件呈现时,它会记录 User123 请求的 1x1.jpg(因此阅读电子邮件)。如果用户单击链接跳转到我的站点,资产控制器将记录 User123 通过电子邮件到达给定页面。可能性是无止境。=)
希望这对某人有帮助.. =)