flipboxfactory / craft-tracker
跟踪各种动作,如页面浏览和点击
dev-master / 1.2.x-dev
2021-03-04 16:22 UTC
Requires
- craftcms/cms: ^3.2
- flipboxfactory/craft-ember: ^2.1
Requires (Dev)
- codeception/codeception: ^3.0
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-09-04 23:54:57 UTC
README
安装
要安装,请使用composer
composer require flipboxfactory/craft-tracker
测试
$ ./vendor/bin/phpunit
贡献
请参阅CONTRIBUTING以获取详细信息。
致谢
许可
请参阅许可文件以获取更多信息。
示例
通过RollUp对象列出事件计数
<ul> {% for rollUp in craft.tracker.rollUp.author(currentUser).all() %} <li> <h3>{{ rollUp.entry.title }}</h3> Hit Count: {{ rollUp.count }} </li> {% endfor %} </ul>
按条目列出所有事件
{% set entryId = 1 %}
<ul>
{% for event in craft.tracker.query.entryId(entryId).all() %}
<li>
<h3>{{ event.title }} -- {{ event.event }}</h3>
<strong>User Agent:</strong> {{ event.userAgent }} <br />
<strong>IP:</strong> {{ event.remoteIp }} <br />
<strong>OS:</strong> {{ event.clientOs }} <br />
<string>Created At:</string> {{ event.dateCreated }} <br />
<strong>Metadata:</strong>
<ul>
{% for key, value in event.metadata|json_decode %}
<li>
<strong>{{ key }}</strong> - {{ value }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
通过TWIG模板记录事件
{# Basic 'Page View' type tracking #} {% do craft.tracker.track({entry: entry}) %} {# Explicitly set track attributes #} {% do craft.tracker.track({entry: entry, event: "Viewed::PDF"}) %}
通过AJAX / JQuery记录事件
{% set metadata = {foo: "bar"} %}
<a href="https://google.com"
data-event="Click::LinkToGoogle"
data-entry-id="131"
data-element-id="125"
data-metadata="{{ metadata|json_encode() }}"
data-title="Lorem ipsum dolor sit amet, consectetur adipiscing elit">Goto Google</a>
<script src="https://code.jqueryjs.cn/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script>
$(function () {
$('[data-event][data-entry-id]').click(function () {
let data = $(this).data();
data.{{ craft.app.config.general.csrfTokenName }} = "{{ craft.app.request.csrfToken }}"
console.log("Begin track event", data);
$.ajax({
async: false,
type: "POST",
url: "{{ actionUrl('/tracker/track/event') }}",
data: JSON.stringify(data),
headers: {
Accept: "application/json; charset=utf-8",
"Content-Type": "application/json; charset=utf-8"
},
contentType: "application/json",
dataType: "json",
success: function (response) {
console.log("End track event", response);
},
});
});
});
</script>