SEO优化
This commit is contained in:
@ -146,9 +146,9 @@ module.exports = {
|
||||
collapsable: false,
|
||||
children: [
|
||||
'install-docker-desktop',
|
||||
['install-k8s', '安装 Kubernetes 单Master节点'],
|
||||
['install-k8s', '安装Kubernetes单Master节点'],
|
||||
'install-kubernetes',
|
||||
['install-k8s-upgrade', '升级 Kubernetes 集群'],
|
||||
['install-k8s-upgrade', '升级Kubernetes集群'],
|
||||
'install-kubectl'
|
||||
]
|
||||
},
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
</p>
|
||||
<div>
|
||||
<a target="_blank" :href="`http://demo.kuboard.cn/#/dashboard?k8sToken=${$site.themeConfig.kuboardToken}`">
|
||||
<img :src="demo_img" style="width: 226px; height: 127px; border: 1px solid #d7dae2;"></img>
|
||||
<img :src="demo_img" style="width: 226px; height: 127px; border: 1px solid #d7dae2;" alt="Kubernetes教程:Kuboard在线体验"></img>
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
@ -22,7 +22,7 @@
|
||||
<Qq/>
|
||||
</p>
|
||||
<p>
|
||||
<img :src="kuboard_qq_img"/>
|
||||
<img :src="kuboard_qq_img" alt="Kubernetes教程:QQ群在线答疑"/>
|
||||
</p>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
home: false
|
||||
layout: HomePage
|
||||
title: Kuboard官网_Kubernetes_k8s_国内安装_部署_入门_免费中文教程_实践_微服务管理界面
|
||||
title: Kuboard官网_Kubernetes_k8s_安装_教程
|
||||
description: Kuboard官网首页_Kubernetes_k8s_国内安装_部署_入门_免费中文教程_实践_微服务管理界面
|
||||
actionText: 在线体验
|
||||
actionText2: 开始使用 →
|
||||
|
||||
131
docker/ClientComputedMixin.js
Normal file
131
docker/ClientComputedMixin.js
Normal file
@ -0,0 +1,131 @@
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Get page data via path (permalink).
|
||||
*
|
||||
* @param {array} pages
|
||||
* @param {string} path
|
||||
* @returns {object}
|
||||
*/
|
||||
|
||||
function findPageForPath (pages, path) {
|
||||
for (let i = 0; i < pages.length; i++) {
|
||||
const page = pages[i]
|
||||
if (page.path.toLowerCase() === path.toLowerCase()) {
|
||||
return page
|
||||
}
|
||||
}
|
||||
return {
|
||||
path: '',
|
||||
frontmatter: {}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Expose a function to get ClientComputedMixin constructor.
|
||||
* Note that this file will run in both server and client side.
|
||||
*
|
||||
* @param {object} siteData
|
||||
* @returns {ClientComputedMixin}
|
||||
*/
|
||||
|
||||
module.exports = siteData => {
|
||||
return class ClientComputedMixin {
|
||||
setPage (page) {
|
||||
this.__page = page
|
||||
}
|
||||
|
||||
get $site () {
|
||||
return siteData
|
||||
}
|
||||
|
||||
get $themeConfig () {
|
||||
return this.$site.themeConfig
|
||||
}
|
||||
|
||||
get $frontmatter () {
|
||||
return this.$page.frontmatter
|
||||
}
|
||||
|
||||
get $localeConfig () {
|
||||
const { locales = {}} = this.$site
|
||||
let targetLang
|
||||
let defaultLang
|
||||
for (const path in locales) {
|
||||
if (path === '/') {
|
||||
defaultLang = locales[path]
|
||||
} else if (this.$page.path.indexOf(path) === 0) {
|
||||
targetLang = locales[path]
|
||||
}
|
||||
}
|
||||
return targetLang || defaultLang || {}
|
||||
}
|
||||
|
||||
get $siteTitle () {
|
||||
return this.$localeConfig.title || this.$site.title || ''
|
||||
}
|
||||
|
||||
get $title () {
|
||||
const page = this.$page
|
||||
const { metaTitle } = this.$page.frontmatter
|
||||
if (typeof metaTitle === 'string') {
|
||||
return metaTitle
|
||||
}
|
||||
|
||||
const siteTitle = this.$siteTitle
|
||||
const selfTitle = page.frontmatter.home ? null : (
|
||||
page.frontmatter.title // explicit title
|
||||
|| page.title // inferred title
|
||||
)
|
||||
if (page.path.indexOf('/learning/') === 0) {
|
||||
return 'Kubernetes教程_' + selfTitle
|
||||
}
|
||||
if (selfTitle === 'Kuboard官网_Kubernetes_k8s_安装_教程') {
|
||||
return selfTitle
|
||||
}
|
||||
return siteTitle
|
||||
? selfTitle
|
||||
? (selfTitle + '_' + siteTitle)
|
||||
: siteTitle
|
||||
: selfTitle || 'VuePress'
|
||||
}
|
||||
|
||||
get $description () {
|
||||
// #565 hoist description from meta
|
||||
const description = getMetaDescription(this.$page.frontmatter.meta)
|
||||
if (description) {
|
||||
return description
|
||||
}
|
||||
return this.$page.frontmatter.description || this.$localeConfig.description || this.$site.description || ''
|
||||
}
|
||||
|
||||
get $lang () {
|
||||
return this.$page.frontmatter.lang || this.$localeConfig.lang || 'en-US'
|
||||
}
|
||||
|
||||
get $localePath () {
|
||||
return this.$localeConfig.path || '/'
|
||||
}
|
||||
|
||||
get $themeLocaleConfig () {
|
||||
return (this.$site.themeConfig.locales || {})[this.$localePath] || {}
|
||||
}
|
||||
|
||||
get $page () {
|
||||
if (this.__page) {
|
||||
return this.__page
|
||||
}
|
||||
return findPageForPath(
|
||||
this.$site.pages,
|
||||
this.$route.path
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getMetaDescription (meta) {
|
||||
if (meta) {
|
||||
const descriptionMeta = meta.filter(item => item.name === 'description')[0]
|
||||
if (descriptionMeta) return descriptionMeta.content
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@ description: Kubernete教程_本文描述了如何获得Kuboard授权
|
||||
|
||||
## Kuboard 授权声明
|
||||
|
||||
* 使用 Kuboard 是免费的,无论您是用于学习还是用于生产
|
||||
* 使用 Kuboard 是 <font color="red">免费</font> 的,无论您是用于学习还是用于生产
|
||||
* 将来会推出 Kuboard Plus,当前所有的功能,将来仍然免费。Kuboard Plus 侧重点:
|
||||
* 更完善的权限管理(当前只区分集群管理员权限和只读权限)
|
||||
* 审计日志
|
||||
@ -24,8 +24,9 @@ description: Kubernete教程_本文描述了如何获得Kuboard授权
|
||||
|
||||
### 微信即时答复
|
||||
|
||||
* QQ群里的人数越来越多,热心的网友也越来越多,作者每天只能抽出一部分时间回答QQ群里的问题
|
||||
* 微信群聊里的问题,通常可立刻答复,并承诺2小时内给出解答
|
||||
* 可提供 TeamViewer 远程协助
|
||||
* 必要时可提供 TeamViewer 远程协助
|
||||
<div>
|
||||
<div style="margin-top: 10px;">
|
||||
<span>扫第一个二维码完成打赏,扫第二个进微信群聊。</span>
|
||||
|
||||
Reference in New Issue
Block a user