在现有的Jekyll安装中切换主题

时间:2015-07-09 19:57:27

标签: ruby jekyll jekyll-bootstrap

杰基尔有很多主题,例如: https://github.com/jekyll/jekyll/wiki/Themes

在EXISTING Jekyll安装中切换到新主题的最简单方法是什么?

4 个答案:

答案 0 :(得分:16)

当您可以迁移到现有安装时,可以通过分配新主题,然后手动复制和粘贴_includes中的CSS,JS,HTML等资源,_layouts和你可能需要的其他文件一样,这可能不是一个好主意,因为你最终混合了新旧资源,这些资源可能不是同一个名字,而是在他们所处的场景中(例如你没有覆盖你的帖子引用的旧样式表,它会导致混合的CSS样式,你必须调试并慢慢修复。

由于我假设您使用Git进行了Jekyll安装(如果您不是真的应该这样做),您可以创建一个名为new-theme的分支并切换来自master作为工作分支的那个分支。 (如果您不想处理Git分支(但实际上,您应该这样做),那么只需复制整个Jekyll安装并将其粘贴到old-Jekyll-install其他地方即可。这帮助我学习)

  1. 下拉新主题的文件。
  2. 手动复制_posts以及您的自定义更改。
  3. 通过手动比较它们并移动到必要的位置,在_config.yml上移植。
  4. 构建网站并查看您遗失的内容,可能会搞砸的内容(例如,在过去您可能添加了一些<br \>代码用于间距而您不希望这样在新的主题)。
  5. master合并(或将其推送到制作中)
  6. 据说这一切都是相当手动和痛苦的,但至少你不必处理资源冲突。这样做的缺点是您的存储库未能与主题存储库同步。因此,您无法获得上游更新。我仍然建议你 fork 主题回购,为你的Jekyll网站定制个人定制,然后重命名该回购用于生产。 (这当然不再使用现有的&#39; Jekyll安装)

答案 1 :(得分:8)

Jekyll v3.2介绍gem-based themes(未来计划见here):

  

基于宝石的主题使主题开发人员可以轻松进行更新   任何拥有主题gem的人都可以使用。当有更新时,   主题开发人员将更新推送到RubyGems

     

基于宝石的主题的目标是让您获得所有好处   一个强大的,不断更新的主题,没有所有的主题   文件妨碍你的方式并使你的内容过于复杂   主要关注点:创建内容。

安装基于gem的主题很简单:

  1. 将主题添加到您网站的Gemfile:gem "jekyll-theme-awesome"
  2. 安装主题:bundle install
  3. 将以下内容添加到您网站的_config.yml以激活主题:theme: jekyll-theme-awesome
  4. 建立您的网站:bundle exec jekyll serve
  5. 要切换主题,我相信这样的事情应该有效:

    1. 更改您网站的Gemfile中的新主题:gem "jekyll-theme-new"
    2. 安装主题:bundle install
    3. 更改您网站的_config.yml以引用新主题:theme: jekyll-theme-new
    4. 建立您的网站:bundle exec jekyll serve
    5. (可选 - 从您的计算机上卸载旧主题)记下旧主题的安装文件夹(bundle show jekyll-theme-awesome)并使用gem uninstall jekyll-theme-awesome将其卸载。为了安全起见,请确保其文件夹确实已删除。
    6. 更新基于宝石的主题很简单:

        

      如果你有主题gem,你可以(如果你愿意)运行bundle update   更新项目中的所有宝石。或者,您可以运行bundle update <THEME>,替换为主题名称,例如minima   只需更新主题宝石。任何新文件或更新主题   开发者已经(如样式表或包括)将被拉   自动进入你的项目。

      重要提示:在撰写本文时,GitHub页面仅支持specific set of gem-based themes架构师 Cayman Dinky 黑客闰日 Merlot 午夜 Minima Minimal Modernist Slate Tactile Time machine 。其中,似乎只有Minima是面向博客的(例如,它是唯一一个内置Disqus支持的人)。但是,如果您愿意run the Jekyll build process yourself,您应该可以使用任何主题。

      另一种选择是GitLab pagestutorialsample site)。

答案 2 :(得分:3)

使用GH-Pages

tested this,但是我做了一个项目,我没有任何我想保存的东西,而且主题相当简单,所以这可能不会很好地复杂化。

  1. 为安全起见,请创建一个新分支

    git checkout -b newtheme
    
  2. 然后将新主题添加为远程

    git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git
    git pull new-theme-upstream HEAD
    
  3. 这个混乱的部分,你会遇到一堆合并冲突。检查哪些文件与git status发生合并冲突,希望这些冲突只能在您要覆盖的样式文件中。如果您想保留任何文件,可以使用文本编辑器编辑它们:git将标记文件中的更改
  4. 推送到您的原点

    git push origin newtheme
    
  5. 转到github上的项目页面,你会发现这样的事情:
  6. 创建拉取请求并合并新的更改。
  7. 您的项目仍将显示为第一个主题的分支,您将无法为新主题的上游创建拉取请求。但您可以使用git pull new-theme-upstream
  8. 合并新主题的新更新

    如果您没有使用gh-pages,或者如果您在推送到github之前在本地构建jekyll(我认为)

    您可以将主题保存在git子模块中,作为单独的文件夹,然后将符号链接为jekyll的关键元素。 不会gh-pages原始示例

    中工作
    blog
    |
    +-- theme_1/
    |
    +-- theme_2/
    |  |
    |  +-- _layouts/
    |
    +-- _layouts ln - theme_2/_layouts
    

    当改变主题时,主题不会发生冲突。

答案 3 :(得分:1)

在现有或新的jekyll安装中切换主题的最简单方法是使用以下插件:jekyll-remote-theme,自2017年11月起可用。

虽然它目前处于测试阶段,但它工作正常,最重要的是它已经在Github Pages上列入白名单,所以除非请求的主题包含不受支持的Gems,否则无需在本地构建。

因此,对于包含网页和博客的简单网站,您可以直接在Github基础架构上托管和编辑内容,并通过键入新远程主题的地址来切换您的网站主题。另一个好处是,您可以在提交其中一个内容之前使用several existing themes测试您的内容。

除了更容易切换之外,jekyll-remote-theme方法应该自动引入新版本的远程主题,只要您进行更改并且有新版本的主题的维护者。如果主题的维护者做了一个你不喜欢的彻底改变,那么你总是会有一些键盘远离新的主题。

我有几个jekyll装置,我已经在使用它而不打算在短期内切换,因为它是目前最优雅和未来的解决方案。

如果您现有的jekyll安装是纯粹的(即,您只编辑了页面,帖子,配置),那么切换是无缝的。如果您现有的主题具有特殊布局(例如,splash.html和新的没有它然后你的页面使用相应的布局成为孤儿(即基本的HTML没有特殊的格式)。我已经切换了一个已经过广泛编辑的现有安装,因此我获得了几个孤立页面,但是我没有得到任何与此处讨论的其他方法可能存在的git合并冲突。