quadrille-elsa.fr/themes/zhaohuabing/layouts/partials/page_view_counter.html
Adrian Amaglio c5b2a334f7 init
2023-09-18 21:27:59 +02:00

133 lines
5.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<span id="{{ .RelPermalink }}" class="leancloud_visitors meta_data_item" data-flag-title="">
<span class="post-meta-item-icon">
<span class="octicon octicon-eye"></span>
</span>
<i class="fa fa-eye"></i>
<span class="old-visitors-count" style="display: none;"></span>
<span class="leancloud-visitors-count"></span>
</span>
<!-- View counter -->
<!--访问LeanCloud的js包装脚本-->
<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.1.js"></script>
<!--初始化LeanCloud的AV对象-->
<script>
AV.initialize("{{ .Site.Params.leancloud_app_id }}", "{{ .Site.Params.leancloud_app_key }}");
</script>
<!--实现计数的js包装脚本-->
<script type="text/javascript">
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';
var OLD_COUNT_CONTAINER_REF = '.old-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() == '') {
var oldCountSpan = $(element).find(OLD_COUNT_CONTAINER_REF).text();
if(oldCountSpan!=''){
countSpan.text(0+parseInt(oldCountSpan));
}else{
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);
var OLD_COUNT_CONTAINER_REF = '.old-visitors-count';
var $element = $(document.getElementById(url));
var oldCountSpan = $element.find(OLD_COUNT_CONTAINER_REF).text();
if(oldCountSpan!=''){
newcounter.set("time", parseInt(oldCountSpan)+1);
}else{
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");
//如果只有1个.leancloud_visitors则说明是博客页需要显示查看数并将查看数+1
//超过1个则说明是文章列表只需要显示查看数
if ($('.leancloud_visitors').length == 1) {
addCount(Counter);
} else {
showTime(Counter);
}
});
</script>