hexo
This commit is contained in:
4
themes/next/layout/_third-party/analytics/analytics-with-widget.swig
vendored
Normal file
4
themes/next/layout/_third-party/analytics/analytics-with-widget.swig
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{% include 'busuanzi-counter.swig' %}
|
||||
{% include 'tencent-mta.swig' %}
|
||||
{% include 'tencent-analytics.swig' %}
|
||||
{% include 'cnzz-analytics.swig' %}
|
11
themes/next/layout/_third-party/analytics/application-insights.swig
vendored
Normal file
11
themes/next/layout/_third-party/analytics/application-insights.swig
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{% if theme.application_insights %}
|
||||
<script type="text/javascript">
|
||||
var appInsights=window.appInsights||function(config){
|
||||
function i(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s="AuthenticatedUserContext",h="start",c="stop",l="Track",a=l+"Event",v=l+"Page",y=u.createElement(o),r,f;y.src=config.url||"https://az416426.vo.msecnd.net/scripts/a/ai.0.js";u.getElementsByTagName(o)[0].parentNode.appendChild(y);try{t.cookie=u.cookie}catch(p){}for(t.queue=[],t.version="1.0",r=["Event","Exception","Metric","PageView","Trace","Dependency"];r.length;)i("track"+r.pop());return i("set"+s),i("clear"+s),i(h+a),i(c+a),i(h+v),i(c+v),i("flush"),config.disableExceptionTracking||(r="onerror",i("_"+r),f=e[r],e[r]=function(config,i,u,e,o){var s=f&&f(config,i,u,e,o);return s!==!0&&t["_"+r](config,i,u,e,o),s}),t
|
||||
}({
|
||||
instrumentationKey:"{{ theme.application_insights }}"
|
||||
});
|
||||
window.appInsights=appInsights;
|
||||
appInsights.trackPageView();
|
||||
</script>
|
||||
{% endif %}
|
11
themes/next/layout/_third-party/analytics/baidu-analytics.swig
vendored
Normal file
11
themes/next/layout/_third-party/analytics/baidu-analytics.swig
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{% if theme.baidu_analytics %}
|
||||
<script type="text/javascript">
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?{{ theme.baidu_analytics }}";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
21
themes/next/layout/_third-party/analytics/busuanzi-counter.swig
vendored
Normal file
21
themes/next/layout/_third-party/analytics/busuanzi-counter.swig
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{% if theme.busuanzi_count.enable %}
|
||||
<div class="busuanzi-count">
|
||||
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
|
||||
|
||||
{% if theme.busuanzi_count.site_uv %}
|
||||
<span class="site-uv">
|
||||
{{ theme.busuanzi_count.site_uv_header }}
|
||||
<span class="busuanzi-value" id="busuanzi_value_site_uv"></span>
|
||||
{{ theme.busuanzi_count.site_uv_footer }}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
{% if theme.busuanzi_count.site_pv %}
|
||||
<span class="site-pv">
|
||||
{{ theme.busuanzi_count.site_pv_header }}
|
||||
<span class="busuanzi-value" id="busuanzi_value_site_pv"></span>
|
||||
{{ theme.busuanzi_count.site_pv_footer }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
7
themes/next/layout/_third-party/analytics/cnzz-analytics.swig
vendored
Normal file
7
themes/next/layout/_third-party/analytics/cnzz-analytics.swig
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{% if theme.cnzz_siteid %}
|
||||
|
||||
<div style="display: none;">
|
||||
<script src="//s95.cnzz.com/z_stat.php?id={{ theme.cnzz_siteid }}&web_id={{ theme.cnzz_siteid }}" language="JavaScript"></script>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
19
themes/next/layout/_third-party/analytics/facebook-sdk.swig
vendored
Normal file
19
themes/next/layout/_third-party/analytics/facebook-sdk.swig
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
{% if theme.facebook_sdk.enable %}
|
||||
<script>
|
||||
window.fbAsyncInit = function() {
|
||||
FB.init({
|
||||
appId : '{{ theme.facebook_sdk.app_id }}',
|
||||
xfbml : true,
|
||||
version : 'v2.10'
|
||||
});
|
||||
};
|
||||
|
||||
(function(d, s, id){
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) {return;}
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/{{ config.language|replace('-', '_') }}/sdk.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));
|
||||
</script>
|
||||
{% endif %}
|
99
themes/next/layout/_third-party/analytics/firestore.swig
vendored
Normal file
99
themes/next/layout/_third-party/analytics/firestore.swig
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
{% if theme.firestore.enable %}
|
||||
<script src="https://www.gstatic.com/firebasejs/4.6.0/firebase.js"></script>
|
||||
<script src="https://www.gstatic.com/firebasejs/4.6.0/firebase-firestore.js"></script>
|
||||
{% if theme.firestore.bluebird %}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.5.1/bluebird.core.min.js"></script>
|
||||
{% endif %}
|
||||
<script>
|
||||
(function () {
|
||||
|
||||
firebase.initializeApp({
|
||||
apiKey: '{{ theme.firestore.apiKey }}',
|
||||
projectId: '{{ theme.firestore.projectId }}'
|
||||
})
|
||||
|
||||
function getCount(doc, increaseCount) {
|
||||
//increaseCount will be false when not in article page
|
||||
|
||||
return doc.get().then(function (d) {
|
||||
var count
|
||||
if (!d.exists) { //has no data, initialize count
|
||||
if (increaseCount) {
|
||||
doc.set({
|
||||
count: 1
|
||||
})
|
||||
count = 1
|
||||
}
|
||||
else {
|
||||
count = 0
|
||||
}
|
||||
}
|
||||
else { //has data
|
||||
count = d.data().count
|
||||
if (increaseCount) {
|
||||
if (!(window.localStorage && window.localStorage.getItem(title))) { //if first view this article
|
||||
doc.set({ //increase count
|
||||
count: count + 1
|
||||
})
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
if (window.localStorage && increaseCount) { //mark as visited
|
||||
localStorage.setItem(title, true)
|
||||
}
|
||||
|
||||
return count
|
||||
})
|
||||
}
|
||||
|
||||
function appendCountTo(el) {
|
||||
return function (count) {
|
||||
$(el).append(
|
||||
$('<span>').addClass('post-visitors-count').append(
|
||||
$('<span>').addClass('post-meta-divider').text('|')
|
||||
).append(
|
||||
$('<span>').addClass('post-meta-item-icon').append(
|
||||
$('<i>').addClass('fa fa-users')
|
||||
)
|
||||
).append($('<span>').text('{{ __("post.visitors")}} ' + count))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
var db = firebase.firestore()
|
||||
var articles = db.collection('{{ theme.firestore.collection }}')
|
||||
|
||||
//https://hexo.io/zh-tw/docs/variables.html
|
||||
var isPost = '{{ page.title }}'.length > 0
|
||||
var isArchive = '{{ archive }}' === 'true'
|
||||
var isCategory = '{{ category }}'.length > 0
|
||||
var isTag = '{{ tag }}'.length > 0
|
||||
|
||||
if (isPost) { //is article page
|
||||
var title = '{{ page.title }}'
|
||||
var doc = articles.doc(title)
|
||||
|
||||
getCount(doc, true).then(appendCountTo($('.post-meta')))
|
||||
}
|
||||
else if (!isArchive && !isCategory && !isTag) { //is index page
|
||||
var titles = [] //array to titles
|
||||
|
||||
var postsstr = '{% for post in page.posts %}titles.push("{{ post.title }}");{% endfor %}' //if you have a better way to get titles of posts, please change it
|
||||
eval(postsstr)
|
||||
|
||||
var promises = titles.map(function (title) {
|
||||
return articles.doc(title)
|
||||
}).map(function (doc) {
|
||||
return getCount(doc)
|
||||
})
|
||||
Promise.all(promises).then(function (counts) {
|
||||
var metas = $('.post-meta')
|
||||
counts.forEach(function (val, idx) {
|
||||
appendCountTo(metas[idx])(val)
|
||||
})
|
||||
})
|
||||
}
|
||||
})()
|
||||
</script>
|
||||
{% endif %}
|
10
themes/next/layout/_third-party/analytics/google-analytics.swig
vendored
Normal file
10
themes/next/layout/_third-party/analytics/google-analytics.swig
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{% if theme.google_analytics %}
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', '{{ theme.google_analytics }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
{% endif %}
|
5
themes/next/layout/_third-party/analytics/index.swig
vendored
Normal file
5
themes/next/layout/_third-party/analytics/index.swig
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{% include 'facebook-sdk.swig' %}
|
||||
{% include 'vkontakte-api.swig' %}
|
||||
{% include 'google-analytics.swig' %}
|
||||
{% include 'baidu-analytics.swig' %}
|
||||
{% include 'application-insights.swig' %}
|
108
themes/next/layout/_third-party/analytics/lean-analytics.swig
vendored
Normal file
108
themes/next/layout/_third-party/analytics/lean-analytics.swig
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
{% if theme.leancloud_visitors.enable %}
|
||||
|
||||
{# custom analytics part create by xiamo #}
|
||||
<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.4.js"></script>
|
||||
<script>AV.initialize("{{theme.leancloud_visitors.app_id}}", "{{theme.leancloud_visitors.app_key}}");</script>
|
||||
<script>
|
||||
function showTime(Counter) {
|
||||
var query = new AV.Query(Counter);
|
||||
var entries = [];
|
||||
var $visitors = $(".leancloud_visitors");
|
||||
|
||||
$visitors.each(function () {
|
||||
entries.push( $(this).attr("id").trim() );
|
||||
});
|
||||
|
||||
query.containedIn('url', entries);
|
||||
query.find()
|
||||
.done(function (results) {
|
||||
var COUNT_CONTAINER_REF = '.leancloud-visitors-count';
|
||||
|
||||
if (results.length === 0) {
|
||||
$visitors.find(COUNT_CONTAINER_REF).text(0);
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < results.length; i++) {
|
||||
var item = results[i];
|
||||
var url = item.get('url');
|
||||
var time = item.get('time');
|
||||
var element = document.getElementById(url);
|
||||
|
||||
$(element).find(COUNT_CONTAINER_REF).text(time);
|
||||
}
|
||||
for(var i = 0; i < entries.length; i++) {
|
||||
var url = entries[i];
|
||||
var element = document.getElementById(url);
|
||||
var countSpan = $(element).find(COUNT_CONTAINER_REF);
|
||||
if( countSpan.text() == '') {
|
||||
countSpan.text(0);
|
||||
}
|
||||
}
|
||||
})
|
||||
.fail(function (object, error) {
|
||||
console.log("Error: " + error.code + " " + error.message);
|
||||
});
|
||||
}
|
||||
|
||||
function addCount(Counter) {
|
||||
var $visitors = $(".leancloud_visitors");
|
||||
var url = $visitors.attr('id').trim();
|
||||
var title = $visitors.attr('data-flag-title').trim();
|
||||
var query = new AV.Query(Counter);
|
||||
|
||||
query.equalTo("url", url);
|
||||
query.find({
|
||||
success: function(results) {
|
||||
if (results.length > 0) {
|
||||
var counter = results[0];
|
||||
counter.fetchWhenSave(true);
|
||||
counter.increment("time");
|
||||
counter.save(null, {
|
||||
success: function(counter) {
|
||||
var $element = $(document.getElementById(url));
|
||||
$element.find('.leancloud-visitors-count').text(counter.get('time'));
|
||||
},
|
||||
error: function(counter, error) {
|
||||
console.log('Failed to save Visitor num, with error message: ' + error.message);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var newcounter = new Counter();
|
||||
/* Set ACL */
|
||||
var acl = new AV.ACL();
|
||||
acl.setPublicReadAccess(true);
|
||||
acl.setPublicWriteAccess(true);
|
||||
newcounter.setACL(acl);
|
||||
/* End Set ACL */
|
||||
newcounter.set("title", title);
|
||||
newcounter.set("url", url);
|
||||
newcounter.set("time", 1);
|
||||
newcounter.save(null, {
|
||||
success: function(newcounter) {
|
||||
var $element = $(document.getElementById(url));
|
||||
$element.find('.leancloud-visitors-count').text(newcounter.get('time'));
|
||||
},
|
||||
error: function(newcounter, error) {
|
||||
console.log('Failed to create');
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
console.log('Error:' + error.code + " " + error.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(function() {
|
||||
var Counter = AV.Object.extend("Counter");
|
||||
if ($('.leancloud_visitors').length == 1) {
|
||||
addCount(Counter);
|
||||
} else if ($('.post-title-link').length > 1) {
|
||||
showTime(Counter);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endif %}
|
10
themes/next/layout/_third-party/analytics/tencent-analytics.swig
vendored
Normal file
10
themes/next/layout/_third-party/analytics/tencent-analytics.swig
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{% if theme.tencent_analytics %}
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "//tajs.qq.com/stats?sId={{ theme.tencent_analytics }}";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
14
themes/next/layout/_third-party/analytics/tencent-mta.swig
vendored
Normal file
14
themes/next/layout/_third-party/analytics/tencent-mta.swig
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
{% if theme.tencent_mta %}
|
||||
<script>
|
||||
var _mtac = {};
|
||||
(function() {
|
||||
var mta = document.createElement("script");
|
||||
mta.src = "https://pingjs.qq.com/h5/stats.js?v2.0.4";
|
||||
mta.setAttribute("name", "MTAH5");
|
||||
mta.setAttribute("sid", "{{theme.tencent_mta}}");
|
||||
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(mta, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
27
themes/next/layout/_third-party/analytics/vkontakte-api.swig
vendored
Normal file
27
themes/next/layout/_third-party/analytics/vkontakte-api.swig
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
{% if theme.vkontakte_api.enable %}
|
||||
|
||||
<div id="vk_api_transport"></div>
|
||||
<script type="text/javascript">
|
||||
window.vkAsyncInit = function() {
|
||||
VK.init({
|
||||
apiId: {{ theme.vkontakte_api.app_id }}
|
||||
});
|
||||
|
||||
{% if not is_home() and (is_post() and theme.vkontakte_api.like) %}
|
||||
VK.Widgets.Like("vk_like", {type: "mini", height: 20});
|
||||
{% endif %}
|
||||
|
||||
{% if page.comments and theme.vkontakte_api.comments %}
|
||||
VK.Widgets.Comments("vk_comments", {limit: {{ theme.vkontakte_api.num_of_posts }}, attach: "*"});
|
||||
{% endif %}
|
||||
};
|
||||
setTimeout(function() {
|
||||
var el = document.createElement("script");
|
||||
el.type = "text/javascript";
|
||||
el.src = "//vk.com/js/api/openapi.js";
|
||||
el.async = true;
|
||||
document.getElementById("vk_api_transport").appendChild(el);
|
||||
}, 0);
|
||||
</script>
|
||||
|
||||
{% endif %}
|
Reference in New Issue
Block a user