dynamic route generation

This commit is contained in:
thomas
2020-03-02 19:05:30 +01:00
parent a1f2a5bf02
commit fa8ed1c104
5 changed files with 63 additions and 20 deletions
+2 -7
View File
@@ -19,7 +19,7 @@
Policy Policy
</p> </p>
<p class="footer-link"> <p class="footer-link">
<nuxt-link :to="`/policy/${privacyPolicy.handle}`"> <nuxt-link to="/policy/privacy-policy">
Privacy Policy Privacy Policy
</nuxt-link> </nuxt-link>
</p> </p>
@@ -36,12 +36,7 @@
<script> <script>
export default { export default {
name: 'TheFooter', name: 'TheFooter'
computed: {
privacyPolicy () {
return this.$store.state.shop.privacyPolicy
}
}
} }
</script> </script>
+58 -1
View File
@@ -1,4 +1,5 @@
require('dotenv').config() require('dotenv').config()
const axios = require("axios")
export default { export default {
mode: 'universal', mode: 'universal',
/* /*
@@ -28,7 +29,7 @@ export default {
*/ */
plugins: [ plugins: [
{ src: '~/plugins/localStorage.js', ssr: false }, { src: '~/plugins/localStorage.js', ssr: false },
{ src: '~/plugins/moment', ssr: false } { src: '~/plugins/moment' }
], ],
/* /*
** Nuxt.js dev-modules ** Nuxt.js dev-modules
@@ -61,6 +62,62 @@ export default {
domain: process.env.DOMAIN, // your shopify domain domain: process.env.DOMAIN, // your shopify domain
storefrontAccessToken: process.env.STOREFRONT_ACCESS_TOKEN// your shopify storefront access token storefrontAccessToken: process.env.STOREFRONT_ACCESS_TOKEN// your shopify storefront access token
}, },
generate: {
routes () {
return axios({
url: process.env.API_URL,
method: 'POST',
headers: {
'X-Shopify-Storefront-Access-Token': process.env.STOREFRONT_ACCESS_TOKEN,
Accept: 'application/json'
},
data: {
query: `query {
blogs (first: 250) {
edges {
node {
handle,
articles (first: 250) {
edges {
node {
handle
}
}
}
}
}
},
products (first: 250) {
edges {
node {
handle
}
}
}
}`
}
}).then((response) => {
const blogRoutes = response.data.data.blogs.edges
const productRoutes = response.data.data.products.edges
const CollectionRoutes = response.data.data.collections.edges
// eslint-disable-next-line no-console
console.log(blogRoutes)
const res = []
blogRoutes.forEach((blog) => {
blog.node.articles.edges.forEach((article) => {
res.push('/blog/' + blog.node.handle + '/article/' + article.node.handle)
})
})
productRoutes.forEach((product) => {
res.push('/products/' + product.node.handle)
})
CollectionRoutes.forEach((collection) => {
res.push('/collection/' + collection.node.handle)
})
return res
})
}
},
/* /*
** Build configuration ** Build configuration
*/ */
@@ -19,7 +19,7 @@
<p class="title article-title">{{ article.title }}</p> <p class="title article-title">{{ article.title }}</p>
<div class="tags has-addons level-item"> <div class="tags has-addons level-item">
<span class="tag is-rounded is-info">@{{ article.authorV2.name }}</span> <span class="tag is-rounded is-info">@{{ article.authorV2.name }}</span>
<span class="tag is-rounded">{{ $moment(article.publishedAt).format('DD MMMM Y') }}</span> <span class="tag is-rounded">{{ $moment(article.publishedAt, $moment.ISO_8601).format('DD MMMM Y') }}</span>
</div> </div>
</div> </div>
</div> </div>
+1 -10
View File
@@ -51,16 +51,7 @@ export default {
query: `query { query: `query {
shop { shop {
name, name,
description, description
privacyPolicy {
handle
},
termsOfService {
handle
},
refundPolicy {
handle
}
}, },
blogs(first: 10) { blogs(first: 10) {
edges { edges {
@@ -1,6 +1,6 @@
<template> <template>
<div class="container"> <div class="container">
<h1>Policy</h1> <h1>Privacy Policy</h1>
</div> </div>
</template> </template>