133 lines
5.0 KiB
HTML
133 lines
5.0 KiB
HTML
<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>
|