gridsome-source-confluence
v1.3.0
Published
Confluence source for Gridsome
Maintainers
Readme
gridsome-source-confluence
Confluence source for Gridsome.
Install
yarn:
yarn add gridsome-source-confluencenpm:
npm install gridsome-source-confluenceUsage
gridsome.config.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 | |
| space_key | Force spaceKey(s) comma separated | - | "AX,BG" | |
| public_only | Only retrieve public confluence pages | false | false | |
| prefix | Prefix of all types | Confluence | false | |
| download_images | Download images and replace img url | false | true | |
| username | Username for the private confluence page | - | [email protected] | 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 | |
| debug | Show debug information | false | true | |
Creating pages
You can automaticly create pages based on the Confluence data.
gridsome.server.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
<template>
<Layout>
<h1>{{ $context.title }}</h1>
<div v-html="$context.body"></div>
</Layout>
</template>