UNPKG

vue-disqus

Version:

Vue component to integrate Disqus comments in your application, with support for SPA

206 lines (164 loc) 6.13 kB
# Disqus ## Usage You can import the `Disqus` component individually. ```vue <template> <div> <!-- omitted --> <div class='comments'> <Disqus shortname='your_shortname_disqus' /> </div> </div> </template> <script> import { Disqus } from 'vue-disqus' export default { name: 'PostPage', components: { Disqus } } </script> ``` ## Props ### shortname | Type | Required | | -------- | ----------------------------------------------------------- | | String | `It's required if the component is registered locally` | A shortname is the unique identifier assigned to a Disqus site and tells Disqus to load only your site's comments. ```vue <Disqus shortname='your_shortname_disqus' /> ``` ::: tip Learn more about [shortname](https://help.disqus.com/en/articles/1717111-what-s-a-shortname) ::: ### pageConfig | Type | Required | | -------- | --------- | | Object | `false` | Page configuration properties are used as parameters for Disqus' behaviors and settings. | Key | Default | Description (Tells the Disqus service) | ---------------- | ------------------------------------ | --------------------------------------------------------- | url | `document.baseURI` | The URL of the current page. [See more](https://help.disqus.com/en/articles/1717084-javascript-configuration-variables#thispageurl) | identifier | `$route.path` or `location.pathname` | How to identify the current page. <br> The identifier is used to look up the correct thread. [See more](https://help.disqus.com/en/articles/1717084-javascript-configuration-variables#thispageidentifier) | title | `document.title` | The title of the current page. [See more](https://help.disqus.com/en/articles/1717084-javascript-configuration-variables#thispagetitle) | category_id | | The category to be used for the current page. [See more](https://help.disqus.com/en/articles/1717084-javascript-configuration-variables#thispagecategoryid) | slug | | api_key | | author_s3 | | remote_auth_s3 | | language | | integration | ```vue <template> <div class='comments'> <Disqus :pageConfig="pageConfig" /> </div> </template> <script> export default { // ... data: () => ({ pageConfig: { title: 'My custom title', category_id: 'sports' } }) } </script> ``` ::: warning If you are using the vue-router always opt for HTML5 `history: mode`. ::: ### ssoConfig | Type | Required | | -------- | --------- | | Object | `false` | Single sign-on (SSO) is a protocol for authenticating an existing user to comment without registering for a global Disqus account. [See more](https://help.disqus.com/en/articles/1717064-single-sign-on) | Key | Description | ------ | ----------------------------------- | name | Your site's name. We will display it in the Post As window. | button | Address of the image that acts as a button. Disqus 2012 users, see style guide below. | icon | Address of the image that appears on the login modal's SSO tab. Favicons work well here | url | Address of your login page. | logout | Address of your logout page. | width | Width of the login popup window. *Default is 800*. | height | Height of the login popup window. *Default is 400*. ```vue <template> <div class='comments'> <Disqus :ssoConfig="ssoConfig" /> </div> </template> <script> export default { // ... data: () => ({ ssoConfig: { name: 'SampleNews', button: 'http://example.com/images/samplenews.gif', icon: 'http://example.com/favicon.png', url: 'http://example.com/login/', logout: 'http://example.com/logout/', width: '800', height: '400' } }) } </script> ``` ::: tip Learn more about [Integrating Single Sign-On](https://help.disqus.com/en/articles/1717160-integrating-single-sign-on) ::: ### lang | Type | Required | | -------- | --------- | | String | `false` | Disqus currently supports dozens of languages, ranging from Arabic to Ukrainian. For a full list of supported languages, see the Disqus [project on Transifex](https://www.transifex.com/disqus/disqus/). ```vue <Disqus lang="fr_CA" /> ``` ::: tip e.g. French (Canada) => `fr_CA`, see more about [language codes](https://www.transifex.com/explore/languages/) ::: ### lazy | Type | Default | | -------- | ------- | | String | `true` | Apply lazy load in disqus script and embed. ### lazyConfig | Type | Default | | -------- | ----------------------------------------------------- | | Object | `{ root: null, rootMargin: '300px', threshold: 0.5 }` | Customize the options of the IntersectionObserver. ## Events `VueDisqus` registers events ($emit) for each callback available in the disqus API. | Event name | Description | | -------------- | ---------------------------------------------------------------------------------------- | | ready | When Disqus is ready. <br> (*This can be used to show a placeholder or loading indicator*). | | new-comment | When a new comment is posted. <br> (*This can be used to track new comments and replies, for example via Google Analytics*). | | before-comment | | init | | identify | | paginate | | pre-init | | pre-data | | pre-reset | | after-render | ```vue <template> <div class='comments'> <Disqus @new-comment="newComment" /> </div> </template> <script> export default { // ... methods: { newComment ({ id, text }) { // your code } } } </script> ```