gridsome-source-confluence
v1.1.0
Published
Confluence source for Gridsome
Downloads
652
Maintainers
Readme
gridsome-source-confluence
Confluence source for Gridsome.
Install
yarn:
yarn add gridsome-source-confluence
npm:
npm install gridsome-source-confluence
Usage
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>