Ghost网站搭建手册
1. Ghost介绍
Ghost是一个轻量级的博客平台,专注于简单、易用和高效的博客出版。它提供了一套功能强大的工具,帮助用户轻松创建和管理个人或者团队的博客网站。以下是Ghost的一些关键特性:
- 支持Markdown编辑器:Ghost采用Markdown作为文章编辑格式,让写作变得更加简单和直观。Markdown是一种轻量级的标记语言,易于学习和使用,同时可以输出高质量的HTML文档。
- 内容支持多图片、视频、音频:使得文章内容更加丰富,界面更加美观。
- 支持主题定制:Ghost提供了丰富的主题库,用户可以根据自己的需求选择合适的主题模板,或者通过自定义主题来定制网站的外观和风格。Ghost主题通常由一组模板文件、样式表和脚本文件组成,用户可以根据需要进行修改和扩展。
- 支持本地化:Ghost支持多语言本地化,用户可以轻松地将网站内容翻译成不同的语言,以满足不同用户群体的需求。Ghost的本地化功能包括界面文本、日期格式、时区设置等,让用户可以在全球范围内发布多语言内容。
2. Ghost主题模板文件分析
Ghost主题是由一组模板文件、样式表和脚本文件组成的,它们定义了网站的布局、样式和交互效果。以下是Ghost主题常见的文件和其作用:
-
default.hbs
:定义网站的默认布局,包括头部、导航栏、侧边栏和页脚等。这个文件通常包含网站的整体结构和共用部分,其他模板文件会基于这个文件进行扩展和修改。 -
post.hbs
:定义单篇文章的页面布局,包括文章标题、内容、作者信息和评论等。这个文件用于显示单个文章的详情页面,用户可以在这里自定义文章的展示方式和排版样式。 -
page.hbs
:定义页面的布局,与文章类似,但通常没有评论功能。这个文件用于显示网站的静态页面,如关于页面、联系页面等,用户可以在这里添加自定义内容和布局。 -
index.hbs
:定义首页的布局,通常包括最新文章列表或者特色文章展示。这个文件用于显示网站的首页内容,用户可以在这里设置首页的排版和展示方式,吸引用户的注意力。 -
tag.hbs
:定义标签页面的布局,展示特定标签下的文章列表。这个文件用于显示特定标签的文章列表,用户可以在这里添加标签相关的介绍和内容。 -
author.hbs
:定义作者页面的布局,展示特定作者的文章列表和信息。这个文件用于显示特定作者的文章列表和个人信息,用户可以在这里添加作者的介绍和社交链接。
除了以上文件外,还有一些用于定义样式和交互效果的CSS和JavaScript文件,以及一些辅助文件如图片和字体等。具体详细了解可以去对应的网站学习相关语法。本次我们使用的是基于已有主题进行简单的修改模板。
3. Ghost本地化
Ghost支持多语言本地化,用户可以根据需要将网站内容翻译成不同的语言。以下是实现本地化的一般步骤:官方文档
1. 创建文件夹并添加语言文件locales
创建一个名为 的文件夹。如果使用已经可翻译的主题,则可能已经存在。locales
在文件夹中,为网站上使用的每种可翻译语言添加目标语言文件。例如,英语和汉语。必须使用有效的语言代码。locales``locales/en.json``locales/zh.json
2.翻译包含的句子
将主题中使用的句子翻译到新的语言文件中。
例如,在:locales/en.json
{
"Back": "Back",
"Newer Posts": "Newer Posts",
"Older Posts": "Older Posts",
"Page {page} of {pages}": "Page {page} of {pages}",
"Subscribe": "Subscribe",
"Subscribe to {blogtitle}": "Subscribe to {blogtitle}",
"Subscribed!": "Subscribed!",
"with the email address": "with the email address",
"Your email address": "Your email address",
"You've successfully subscribed to": "You've successfully subscribed to",
"A collection of posts": "A collection of posts",
"A collection of 1 post": "A collection of 1 post",
"A collection of % posts": "A collection of % posts",
"Get the latest posts delivered right to your inbox": "Get the latest posts delivered right to your inbox",
"Latest Posts": "Latest Posts",
"<a href='{url}'>More posts</a> by {name}": "<a href='{url}'>More posts</a> by {name}",
"No posts": "No posts",
" (Page %)": " (Page %)",
"Read More": "Read More",
"Read <a href='{url}'>more posts</a> by this author": "Read <a href='{url}'>more posts</a> by this author",
"See all % posts": "See all % posts",
"Share this": "Share this",
"Stay up to date! Get all the latest & greatest posts delivered straight to your inbox": "Stay up to date! Get all the latest & greatest posts delivered straight to your inbox",
"This post was a collaboration between": "This post was a collaboration between",
"youremail@example.com": "youremail@example.com",
"1 post": "1 post",
"% posts": "% posts",
"1 min read": "1 min read",
"% min read": "% min read"
}
并编辑翻译成汉语:locales/es.json
{
"Back": "Volver",
"Newer Posts": "Artículos Siguientes",
"Older Posts": "Artículos Anteriores",
"Page {page} of {pages}": "Página {page} de {pages}",
"Subscribe": "Suscríbete",
"Subscribe to {blogtitle}": "Suscríbete a {blogtitle}",
"Subscribed!": "¡Suscrito!",
"with the email address": "con el correo electrónico",
"Your email address": "Tu correo electrónico",
"You've successfully subscribed to": "Te has suscrito con éxito a",
"A collection of posts": "Una colección de artículos",
"A collection of 1 post": "Una colección de 1 artículo",
"A collection of % posts": "Una colección de % artículos",
"Get the latest posts delivered right to your inbox": "Recibe los últimos artículos directamente en tu buzón",
"Latest Posts": "Últimos Artículos",
"<a href='{url}'>More posts</a> by {name}": "<a href='{url}'>Más artículos</a> de {name}",
"No posts": "No hay artículos",
" (Page %)": " (Página %)",
"Read More": "Lee Más",
"Read <a href='{url}'>more posts</a> by this author": "Lee <a href='{url}'>más artículos</a> de este autor",
"See all % posts": "Ver todos los % artículos",
"Share this": "Comparte",
"Stay up to date! Get all the latest & greatest posts delivered straight to your inbox": "¡Mantente al día! Recibe todos los últimos y mejores artículos directamente en tu buzón",
"This post was a collaboration between": "Este artículo fue una colaboración entre",
"youremail@example.com": "tucorreo@ejemplo.com",
"1 post": "1 artículo",
"% posts": "% artículos",
"1 min read": "1 min de lectura",
"% min read": "% min de lectura",
"< 1 min read": "< 1 min de lectura"
}
在主题模板中,使用翻译帮助程序,如下所示:
<a href="#/portal/signup" data-portal="signup">{{t "Subscribe"}}</a>
{{! output when Ghost Admin is set to "en" for English }}
<a href="#/portal/signup" data-portal="signup">Subscribe</a>
{{! output when Ghost Admin is set to "es" for Spanish }}
<a href="#/portal/signup" data-portal="signup">Suscríbete</a>
可以在左侧使用任何翻译键,但建议使用可读的英语,以便在没有可用的翻译时利用翻译帮助程序中的回退选项。{{t}}
带有月份名称的日期会自动转换。您不需要将它们包含在翻译文件中。
使用 HTML 实体而不是字符,例如,使用 .<``<
3.启用语言
验证活动主题的翻译文件是否就位,然后在 Ghost admin 的常规设置中激活语言。在设置菜单中输入正确的语言代码,然后点击保存。.json
4. 确保模板存在
为确保您的主题完全可翻译,您的主题中必须存在两个核心模板。检查以下模板是否存在:
pagination.hbs - 存在于 中,复制模板content/themes/mytheme/partials
navigation.hbs - 存在于 中,复制模板content/themes/mytheme/partials
5. 使用翻译助手
主题中的任何纯文本都必须换行在翻译帮助程序中,分别位于文本的左侧和右侧。{{t}}``{{t``}}
在主题的所有模板文件中查找任何纯文本,并确保翻译帮助程序存在。.hbs
6. 在 HTML 中声明语言
建议使用 Ghost 的助手将 HTML lang 属性添加到主题模板开头的标签中: . 将在网站上自动替换为 Ghost Admin 中设置的相应语言区域设置标记。<html>``default.hbs``{{@site.locale}}``<html lang="{{@site.locale}}">``{{@site.locale}}
4.开始搭建DW多语言官网首页
我们采用每个语言搭建一个ghost服务:
- 原因:ghost无法实现单网站发布多语言的内容
- 劣势:部署服务成本增加
- 优势:每种语言内容允许不一致
- 问题解决方案:使用docker部署,将其中一个语言对应的服务发布为镜像,其它语言使用该镜像部署。至于每个语言对应的网站内容需要单独手动发布。
搭建步骤:
1 docker 部署第一个服务实例,并调整
2 将第一个服务实例发布为镜像
3 部署后续实例
4. Ghost管理端如何使用
Ghost的管理端提供了一个直观和易用的界面,用于管理网站内容和设置。以下是Ghost管理端的一些常见功能:
-
文章管理:在管理端可以新增、编辑和删除文章,设置文章的发布时间和状态。用户可以在这里管理网站的内容,发布新的文章或者更新现有的文章。
-
标签和作者管理:可以管理文章的标签和作者信息,方便对内容进行分类和组织。用户可以在这里添加新的标签或者作者,管理已有的标签和作者信息。
-
主题定制:可以选择或者上传主题,自定义网站的外观和样式。Ghost提供了丰富的主题库,用户可以根据自己的需求选择合适的主题模板,或者通过自定义主题来定制网站的外观和风格。
-
设置:在设置页面可以配置网站的基本信息、SEO设置、社交媒体链接等。用户可以在这里设置网站的名称、描述、Logo等基本信息,以及配置网站的SEO设置和社交媒体链接。
希望这份更加详细的手册可以帮助你更好地搭建和管理你的Ghost网站!