add theme
This commit is contained in:
31
themes/butterfly/layout/includes/third-party/card-post-count/artalk.pug
vendored
Normal file
31
themes/butterfly/layout/includes/third-party/card-post-count/artalk.pug
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
- const { server, site } = theme.artalk
|
||||
|
||||
script.
|
||||
(() => {
|
||||
const getArtalkCount = async() => {
|
||||
try {
|
||||
const eleGroup = document.querySelectorAll('#recent-posts .artalk-count')
|
||||
const keyArray = Array.from(eleGroup).map(i => i.getAttribute('data-page-key'))
|
||||
|
||||
const headerList = {
|
||||
method: 'GET',
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams({
|
||||
'site_name': '!{site}',
|
||||
'page_keys': keyArray
|
||||
})
|
||||
|
||||
const res = await fetch(`!{server}/api/v2/stats/page_comment?${searchParams}`, headerList)
|
||||
const result = await res.json()
|
||||
|
||||
keyArray.forEach((key, index) => {
|
||||
eleGroup[index].textContent = result.data[key] || 0
|
||||
})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
}
|
||||
|
||||
window.pjax ? getArtalkCount() : window.addEventListener('load', getArtalkCount)
|
||||
})()
|
||||
25
themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug
vendored
Normal file
25
themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
- const { shortname, apikey } = theme.disqus
|
||||
script.
|
||||
(() => {
|
||||
const getCount = async () => {
|
||||
try {
|
||||
const eleGroup = document.querySelectorAll('#recent-posts .disqus-count')
|
||||
const cleanedLinks = Array.from(eleGroup).map(i => `thread:link=${i.href.replace(/#post-comment$/, '')}`);
|
||||
|
||||
const res = await fetch(`https://disqus.com/api/3.0/threads/set.json?forum=!{shortname}&api_key=!{apikey}&${cleanedLinks.join('&')}`,{
|
||||
method: 'GET'
|
||||
})
|
||||
const result = await res.json()
|
||||
|
||||
eleGroup.forEach(i => {
|
||||
const cleanedLink = i.href.replace(/#post-comment$/, '')
|
||||
const urlData = result.response.find(data => data.link === cleanedLink) || { posts: 0 }
|
||||
i.textContent = urlData.posts
|
||||
})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
}
|
||||
|
||||
window.pjax ? getCount() : window.addEventListener('load', getCount)
|
||||
})()
|
||||
18
themes/butterfly/layout/includes/third-party/card-post-count/fb.pug
vendored
Normal file
18
themes/butterfly/layout/includes/third-party/card-post-count/fb.pug
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
- const fbSDKVer = 'v20.0'
|
||||
- const fbSDK = `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk.js#xfbml=1&version=${fbSDKVer}`
|
||||
|
||||
script.
|
||||
(()=>{
|
||||
function loadFBComment () {
|
||||
if (typeof FB === 'object') FB.XFBML.parse(document.getElementById('recent-posts'))
|
||||
else {
|
||||
let ele = document.createElement('script')
|
||||
ele.setAttribute('src','!{fbSDK}')
|
||||
ele.setAttribute('async', 'true')
|
||||
ele.setAttribute('defer', 'true')
|
||||
ele.setAttribute('crossorigin', 'anonymous')
|
||||
document.body.appendChild(ele)
|
||||
}
|
||||
}
|
||||
window.pjax ? loadFBComment() : window.addEventListener('load', loadFBComment)
|
||||
})()
|
||||
16
themes/butterfly/layout/includes/third-party/card-post-count/index.pug
vendored
Normal file
16
themes/butterfly/layout/includes/third-party/card-post-count/index.pug
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
case theme.comments.use[0]
|
||||
when 'Twikoo'
|
||||
include ./twikoo.pug
|
||||
when 'Disqus'
|
||||
when 'Disqusjs'
|
||||
include ./disqus.pug
|
||||
when 'Valine'
|
||||
include ./valine.pug
|
||||
when 'Waline'
|
||||
include ./waline.pug
|
||||
when 'Facebook Comments'
|
||||
include ./fb.pug
|
||||
when 'Remark42'
|
||||
include ./remark42.pug
|
||||
when 'Artalk'
|
||||
include ./artalk.pug
|
||||
18
themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug
vendored
Normal file
18
themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
- const { host, siteId, option } = theme.remark42
|
||||
|
||||
script.
|
||||
(()=>{
|
||||
window.remark_config = Object.assign({
|
||||
host: '!{host}',
|
||||
site_id: '!{siteId}',
|
||||
},!{JSON.stringify(option)})
|
||||
|
||||
function getCount () {
|
||||
const s = document.createElement('script')
|
||||
s.src = remark_config.host + '/web/counter.js'
|
||||
s.defer = true
|
||||
document.head.appendChild(s)
|
||||
}
|
||||
|
||||
window.pjax ? getCount() : window.addEventListener('load', getCount)
|
||||
})()
|
||||
39
themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug
vendored
Normal file
39
themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
script.
|
||||
(() => {
|
||||
const getCommentUrl = () => {
|
||||
const eleGroup = document.querySelectorAll('#recent-posts .article-title')
|
||||
let urlArray = []
|
||||
eleGroup.forEach(i=>{
|
||||
urlArray.push(i.getAttribute('href'))
|
||||
})
|
||||
return urlArray
|
||||
}
|
||||
|
||||
const getCount = () => {
|
||||
const runTwikoo = () => {
|
||||
twikoo.getCommentsCount({
|
||||
envId: '!{theme.twikoo.envId}',
|
||||
region: '!{theme.twikoo.region}',
|
||||
urls: getCommentUrl(),
|
||||
includeReply: false
|
||||
}).then(function (res) {
|
||||
document.querySelectorAll('#recent-posts .twikoo-count').forEach((item,index) => {
|
||||
if (res[index]) {
|
||||
item.textContent = res[index].count
|
||||
}
|
||||
})
|
||||
}).catch(function (err) {
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
if (typeof twikoo === 'object') {
|
||||
runTwikoo()
|
||||
} else {
|
||||
btf.getScript('!{url_for(theme.asset.twikoo)}').then(runTwikoo)
|
||||
}
|
||||
}
|
||||
|
||||
window.pjax ? getCount() : window.addEventListener('load', getCount)
|
||||
|
||||
})()
|
||||
20
themes/butterfly/layout/includes/third-party/card-post-count/valine.pug
vendored
Normal file
20
themes/butterfly/layout/includes/third-party/card-post-count/valine.pug
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
script.
|
||||
(() => {
|
||||
function loadValine () {
|
||||
function initValine () {
|
||||
let initData = {
|
||||
el: '#vcomment',
|
||||
appId: '#{theme.valine.appId}',
|
||||
appKey: '#{theme.valine.appKey}',
|
||||
serverURLs: '#{theme.valine.serverURLs}'
|
||||
}
|
||||
|
||||
const valine = new Valine(initData)
|
||||
}
|
||||
|
||||
if (typeof Valine === 'function') initValine()
|
||||
else btf.getScript('!{url_for(theme.asset.valine)}').then(initValine)
|
||||
}
|
||||
|
||||
window.pjax ? loadValine() : window.addEventListener('load', loadValine)
|
||||
})()
|
||||
21
themes/butterfly/layout/includes/third-party/card-post-count/waline.pug
vendored
Normal file
21
themes/butterfly/layout/includes/third-party/card-post-count/waline.pug
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
- const serverURL = theme.waline.serverURL.replace(/\/$/, '')
|
||||
script.
|
||||
(() => {
|
||||
async function loadWaline () {
|
||||
try {
|
||||
const eleGroup = document.querySelectorAll('#recent-posts .waline-comment-count')
|
||||
const keyArray = Array.from(eleGroup).map(i => i.getAttribute('data-path'))
|
||||
|
||||
const res = await fetch(`!{serverURL}/api/comment?type=count&url=${keyArray}`, { method: 'GET' })
|
||||
const result = await res.json()
|
||||
|
||||
result.data.forEach((count, index) => {
|
||||
eleGroup[index].textContent = count
|
||||
})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
}
|
||||
|
||||
window.pjax ? loadWaline() : window.addEventListener('load', loadWaline)
|
||||
})()
|
||||
Reference in New Issue
Block a user