切换主题

This commit is contained in:
tangly1024
2023-06-19 22:50:12 +08:00
parent 9759f8fb50
commit 16bdf3a745
3 changed files with 34 additions and 36 deletions

View File

@@ -24,53 +24,47 @@ export const ALL_THEME = [
*/
export const getLayoutByTheme = (router) => {
const theme = getQueryParam(router.asPath, 'theme') || BLOG.THEME
let Layout = null
// 根据路由 pages的文件名加载主题文件
switch (router.pathname) {
const layout = getLayoutNameByPath(router.pathname)
console.log('加载组件', theme, layout)
return dynamic(() => import(`@/themes/${theme}/${layout}`), { ssr: true })
}
/**
* 路径 对应的Layout名称
* @param {*} path
* @returns
*/
export const getLayoutNameByPath = (path) => {
switch (path) {
case '/':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutIndex`), { ssr: true })
break
return 'LayoutIndex'
case '/page/[page]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutPage`), { ssr: true })
break
return 'LayoutPage'
case '/archive':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutArchive`), { ssr: true })
break
return 'LayoutArchive'
case '/search':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutSearch`), { ssr: true })
break
return 'LayoutSearch'
case '/search/[keyword]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutSearch`), { ssr: true })
break
return 'LayoutSearch'
case '/search/[keyword]/page/[page]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutSearch`), { ssr: true })
break
return 'LayoutSearch'
case '/404':
Layout = dynamic(() => import(`@/themes/${theme}/Layout404`), { ssr: true })
break
return 'Layout404'
case '/tag':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutTagIndex`), { ssr: true })
break
return 'LayoutTagIndex'
case '/tag/[tag]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutTag`), { ssr: true })
break
return 'LayoutTag'
case '/tag/[tag]/page/[page]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutTag`), { ssr: true })
break
return 'LayoutTag'
case '/category':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutCategoryIndex`), { ssr: true })
break
return 'LayoutCategoryIndex'
case '/category/[category]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutCategory`), { ssr: true })
break
return 'LayoutCategory'
case '/category/[category]/page/[page]':
Layout = dynamic(() => import(`@/themes/${theme}/LayoutCategory`), { ssr: true })
break
return 'LayoutCategory'
default:
Layout = dynamic(() => import(`@/themes/${theme}/LayoutSlug`), { ssr: true })
break
return 'LayoutSlug'
}
return Layout
}
/**