在一个网站上使用多个主题jekyll。

7
我最近了解到 jekyll,想要用它创建一个项目的着陆页。我希望有一个主页使用一个主题(例如ubuild),并且另外一页为文档(通过顶部导航栏访问),使用不同的主题(例如just-the-docs)。如何实现这一点?

编辑:我想要在 Github Pages 上实现这个目标。


你成功让它工作了吗? - doubllle
是的,我刚刚发布了一个答案。我完全忘记了它,谢谢你的提醒!如果解决方案适用于您,请告诉我。实际上,我已经有一段时间没有接触Jekyll了,所以可能会错过一些东西 :) - Monolith
5个回答

1
由于您计划仅在单个页面上使用其中一个主题,我认为最好的解决方案是使用两个基本布局而不是两个主题。
这需要一些初步工作,但将极大地简化未来的维护。
首先设置网站以渲染just-the-docs主题的所有页面,包括着陆页面。然后修改_layouts/home.html以成为一个父布局(类似于default布局),以呈现来自ubuild..主题的标记。

好主意!我会尝试一下,并会回复你。 - Monolith

1

在@JoostS的答案帮助下,我解决了这个问题,但做了一些修改:

  1. 在GitHub页面上创建一个名为<org-name>.github.io的仓库,用于存放主页的主题(例如我的是ubuild)和所有内容。

  2. 创建另一个名为docs的jekyll网站仓库。该网站应包含您想要用于另一个页面的主题(例如我的是just-the-docs)和所有相关内容。

  3. _config.yml中的docs仓库中添加baseurl: "/docs"

  4. <org-name>.github.io仓库现在应托管在<org-name>.github.io/下:

    Site is published

  5. docs仓库现在应托管在<org-name>.github.io/docs url中:

    Docs repo

  6. 要链接到docs页面,现在只需使用/docs即可。


只有在GitHub页面上有一个单一项目时,此方法才有效。如果您有多个项目,则此方法无效,因为它只会劫持主GitHub页面。 - jcubic

0
使用Jekyll和GitHub Pages在同一站点上维护两个布局的最简单方法是创建一个新的存储库来存放新布局,这样主站点就在GitHub组织中,需要使用不同布局的页面必须在您的存储库中。
但是,如果您没有使用GitHub,只是使用jekyll,只需将每个文件夹配置为一个新的Jekyll项目,并将它们指向写入_site文件夹中的各自子文件夹。为了使所有内容正常工作,您需要从主文件夹启动Jekyll Server,然后分别构建每个子文件夹,以便更新而不删除主文件夹。

0
解决方案是创建两个独立的网站。第一个网站只包含主页,应部署到您的 Web 文件夹的根目录下。第二个网站包含所有文档,应该部署到子目录中,例如 '/docs/'。您可能想要使用 baseurl 来实现这一点: https://byparker.com/blog/2014/clearing-up-confusion-around-baseurl/ 我不认为您可以在 Github 页面上使用此解决方案。您可以尝试将相同的 CNAME 添加到两个存储库中,但我不能百分之百确定。任何其他静态托管环境都应该可以。
您可以通过链接到 '/' 从文档链接到主页。您可以通过链接到 '/docs/pagename/'(假设您使用 permalink: pretty)从主页链接到文档。

我该如何在类似Github Pages的服务上部署两个网站?如果我这样做,我能否使用相对链接直接链接到另一个网站?如果不行,我该如何链接到保存文档的另一个网站? - Monolith
好的,我想让它能够托管在Github页面上(抱歉我应该在我的问题中添加这个)。 - Monolith
我认为这是不可能的(如所述)。 - Mr. Hugo
我可能能够为一个组织创建一个网站,并为文档使用不同的 base_url,然后将其作为绝对链接链接(例如,org_name.github.io/docs/home 作为不同的网站)。我想类似于 这个,但是我想避免这种情况,因为它看起来有点 hacky。 - Monolith
我认为主题通常假定您将它们用于整个代码库。我在这里看不到明显的解决方案。 - Mr. Hugo
我的意思是在一个组织下创建两个不同的代码库,并将它们托管在该组织的不同base_names上。例如,如果我有一个域名org.github.io,它可以有两个基本名称org.github.io/homeorg.github.io/docs,分别托管在不同的代码库中。但我还不太确定。 - Monolith

0

在一个基于Jekyll的Github Pages站点中可以使用多个Jekyll主题。 我采用的方法是基于@Delfino的答案,使用子文件夹作为独立的Jekyll项目。需要配置设置以确保站点在本地和Github Pages上正确构建。

之前提到的文章中有所有的细节。变量keep_filesexclude在根文件夹的_config.yml中设置,而destination需要在子文件夹中正确设置。然后,在子文件夹中构建站点,提交生成的文件夹_site并推送更改到gh-pages

该存储库也可以在Github上找到,而且这个提交包含了所需的配置。 希望以上内容对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接