gridsome-source-confluence
Version:
Confluence source for Gridsome
119 lines (105 loc) • 3 kB
Markdown
# gridsome-source-confluence
> Confluence source for Gridsome.
- [gridsome-source-confluence](#gridsome-source-confluence)
- [Install](#install)
- [Usage](#usage)
- [Options](#options)
- [Creating pages](#creating-pages)
## Install
yarn:
```bash
yarn add gridsome-source-confluence
```
npm:
```bash
npm install gridsome-source-confluence
```
## Usage
`gridsome.config.js`
```js
module.exports = {
plugins: [
{
use: 'gridsome-source-confluence',
options: {
base_url: "https://example.atlassian.net",
space_key: "AS",
debug: true,
public_only: true,
retry_request: true
download_images: true
}
}
],
}
```
## Options
| Option | Explanation | Default | Example | Required |
|-|-|-|-|-|
| `base_url` | The base URL of your Confluence instance | - | https://example.atlassian.net | <input type="checkbox" disabled checked /> |
| `space_key` | Force spaceKey(s) comma separated | - | "AX,BG" | <input type="checkbox" disabled /> |
| `public_only` | Only retrieve public confluence pages | false | false | <input type="checkbox" disabled /> |
| `prefix` | Prefix of all types | Confluence | false | <input type="checkbox" disabled /> |
| `download_images` | Download images and replace img url | false | true | <input type="checkbox" disabled /> |
| `username` | Username for the private confluence page | - | johndoe@atlassian.net | required if public_only is false|
| `password` | Password for the private confluence page | - | supersecretpassword | required if public_only is false|
| `retry_request` | Retry failed request | false | true |<input type="checkbox" disabled /> |
| `debug` | Show debug information | false | true | <input type="checkbox" disabled /> |
## Creating pages
You can automaticly create pages based on the Confluence data.
`gridsome.server.js`
```js
module.exports = function (api) {
api.createPages(async ({ graphql, createPage }) => {
const { data } = await graphql(`{
allConfluenceParent {
edges {
node {
title
body
slug
}
}
}
allConfluenceChild {
edges {
node {
title
body
slug
}
}
}
}`)
data.allConfluenceParent.edges.forEach(({ node }) => {
createPage({
path: `${node.slug}`,
component: './src/templates/ConfluenceBody.vue',
context: {
body: node.body,
title: node.title
}
})
})
data.allConfluenceChild.edges.forEach(({ node }) => {
createPage({
path: `${node.slug}`,
component: './src/templates/ConfluenceBody.vue',
context: {
body: node.body,
title: node.title
}
})
})
})
}
```
`src/templates/ConfluenceBody.vue`
```html
<template>
<Layout>
<h1>{{ $context.title }}</h1>
<div v-html="$context.body"></div>
</Layout>
</template>
```