feat: add disqus plugin, closed #123
This commit is contained in:
parent
025bc5cddf
commit
fd7d4e0e4e
3 changed files with 63 additions and 1 deletions
|
|
@ -48,7 +48,8 @@ var plugins = [
|
||||||
{ name: 'external-script', entry: 'external-script.js' },
|
{ name: 'external-script', entry: 'external-script.js' },
|
||||||
{ name: 'front-matter', entry: 'front-matter/index.js' },
|
{ name: 'front-matter', entry: 'front-matter/index.js' },
|
||||||
{ name: 'zoom-image', entry: 'zoom-image.js' },
|
{ name: 'zoom-image', entry: 'zoom-image.js' },
|
||||||
{ name: 'codesponsor', entry: 'codesponsor.js' }
|
{ name: 'codesponsor', entry: 'codesponsor.js' },
|
||||||
|
{ name: 'disqus', entry: 'disqus.js' }
|
||||||
]
|
]
|
||||||
|
|
||||||
plugins.forEach(item => {
|
plugins.forEach(item => {
|
||||||
|
|
|
||||||
|
|
@ -147,3 +147,17 @@ window.$docsify = {
|
||||||
```
|
```
|
||||||
|
|
||||||
See [here](https://github.com/jperasmus/docsify-copy-code/blob/master/README.md) for more details.
|
See [here](https://github.com/jperasmus/docsify-copy-code/blob/master/README.md) for more details.
|
||||||
|
|
||||||
|
|
||||||
|
## Disqus
|
||||||
|
|
||||||
|
Disqus comments. https://disqus.com/
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script>
|
||||||
|
window.$docsify = {
|
||||||
|
disqus: 'shortname'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script src="//unpkg.com/docsify/lib/plugins/disqus.min.js"></script>
|
||||||
|
```
|
||||||
|
|
|
||||||
47
src/plugins/disqus.js
Normal file
47
src/plugins/disqus.js
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
location.href = location.href.replace('/-/', '/#/')
|
||||||
|
|
||||||
|
function install (hook, vm) {
|
||||||
|
const dom = Docsify.dom
|
||||||
|
const disqus = vm.config.disqus
|
||||||
|
if (!disqus) {
|
||||||
|
throw Error('$docsify.disqus is required')
|
||||||
|
}
|
||||||
|
|
||||||
|
hook.init(_ => {
|
||||||
|
const script = dom.create('script')
|
||||||
|
|
||||||
|
script.async = true
|
||||||
|
script.src = `https://${disqus}.disqus.com/embed.js`
|
||||||
|
script.setAttribute('data-timestamp', +new Date())
|
||||||
|
dom.appendTo(dom.body, script)
|
||||||
|
})
|
||||||
|
|
||||||
|
hook.mounted(_ => {
|
||||||
|
const div = dom.create('div')
|
||||||
|
div.id = 'disqus_thread'
|
||||||
|
const main = dom.getNode('#main')
|
||||||
|
div.style = `width: ${main.clientWidth}px; margin: 0 auto 20px;`
|
||||||
|
dom.appendTo(dom.find('.content'), div)
|
||||||
|
|
||||||
|
window.disqus_config = function () {
|
||||||
|
this.page.url = location.origin + '/-' + vm.route.path
|
||||||
|
this.page.identifier = vm.route.path
|
||||||
|
this.page.title = document.title
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
hook.doneEach(_ => {
|
||||||
|
if (typeof window.DISQUS !== 'undefined') {
|
||||||
|
DISQUS.reset({
|
||||||
|
reload: true,
|
||||||
|
config: function () {
|
||||||
|
this.page.url = location.origin + '/-' + vm.route.path
|
||||||
|
this.page.identifier = vm.route.path
|
||||||
|
this.page.title = document.title
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$docsify.plugins = [].concat(install, $docsify.plugins)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue