Skip to content

Commit

Permalink
feat(cms): add dynamic sites to resolve routing
Browse files Browse the repository at this point in the history
  • Loading branch information
patzick committed Nov 18, 2019
1 parent 8216f76 commit 5589507
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 2 deletions.
34 changes: 34 additions & 0 deletions packages/default-theme/components/views/CategoryView.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<template>
<div>
<h2> Dumb category component, as a param takes cms page </h2>
<pre> {{ cmsPageDescription }} </pre>
</div>
</template>
<script>
export default {
name: 'CategoryView',
components: {
},
props: {
cmsPage: {
type: Object,
default: () => ({})
}
},
data() {
return {
}
},
computed: {
cmsPageDescription () {
return `${this.cmsPage.name} ${this.cmsPage.type}`
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>
34 changes: 34 additions & 0 deletions packages/default-theme/components/views/ProductView.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<template>
<div>
<h2> Dumb product view component, as a param takes cms page </h2>
<pre> {{ cmsPageDescription }} </pre>
</div>
</template>
<script>
export default {
name: 'ProductView',
components: {
},
props: {
cmsPage: {
type: Object,
default: () => ({})
}
},
data() {
return {
}
},
computed: {
cmsPageDescription () {
return `${this.cmsPage.name} ${this.cmsPage.type}`
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>
22 changes: 20 additions & 2 deletions packages/default-theme/pages/_.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<div>
<h2> Shopware dynamic page </h2>
<pre> {{ cmsPageName }} </pre>
<component :is="getComponent" :cms-page="cmsPage"/>
</div>
</template>
<script>
Expand All @@ -17,6 +17,18 @@
// } from '@storefront-ui/vue'
import { getPage } from "@shopware-pwa/shopware-6-client";
const pagesMap = {
"frontend.navigation.page": "CategoryView",
"frontend.details.page": "ProductView"
};
export function getComponentBy(resourceType) {
if (!resourceType) return;
let componentName = pagesMap[resourceType];
if (!componentName) componentName = "SwNoComponent";
return () => import(`@/components/views/${componentName}`);
}
export default {
name: 'DynamicRoute',
components: {
Expand All @@ -36,13 +48,19 @@ export default {
return {
cmsPageName: name,
page,
breadcrumbs: page.breadcrumb
breadcrumbs: page.breadcrumb,
cmsPage: page.cmsPage
}
},
data() {
return {
}
},
computed: {
getComponent() {
return getComponentBy(this.page.resourceType);
}
},
methods: {
}
}
Expand Down

0 comments on commit 5589507

Please sign in to comment.