首页 文章

为github PROJECT页面配置Jekyll

提问于
浏览
11

我在这里结束了我的智慧 . 我一直在试图查看我能找到的所有其他示例github项目页面,甚至是博客,但没有一个表现出我遇到的问题 . 首先,我正在尝试为我的仓库创建一个项目页面 . 我按照通常的教程,在我的项目仓库和推送中创建了一个gh-pages分支 .

我设法做了这些并模板化我的文件 . 我甚至设法使用HAML和SASS(它们仍然被转换为html / css,这就是我推送到repo所以没有问题) . 我只是认为我正在配置我的jekyll错误 . 首先,我没有看到在config.yml上使用baseurl或url的其他人页面中的任何配置 .

我的问题是在我的帖子中循环:

{% for post in site.posts %}
  <a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}

它始终生成href为 href="/post-title"

我的 _config.yml btw只有这个:

permalink: /exercises/:title

单击链接时出现此问题,它总是指向http://corroded.github.com/exercises/title-here,它实际应该是http://corroded.github.com/projectname/exercises/title-here

我实际上尝试通过以下方式对路径进行硬编码:

<a href="http://corroded.github.com{{ post.url }}"> 这有效 . 它转到帖子但是它显示为纯文本而不是生成的html . 我知道我在这里错过了一些非常简单的事情,但我整个周末都在努力解决这个问题 .

哦,我忘了添加:在我的localhost中执行此操作,我可以访问以下所有内容:

http://localhost:4000/ 点击链接会让我看到 http://localhost:4000/exercises/title-here 和IT WORKS . 所以我很好地猜测它与配置有关 .

2 回答

  • 9

    如果在永久链接的前面有斜杠,则表示所有URL都应该相对于站点根目录 . 这就是它将 http://corroded.github.com/exercises/title-here 而不是 http://corroded.github.com/projectname/exercises/title-here 的原因 . 没有第一个斜线尝试它:

    permalink: exercises/:title
    

    您使用HTML创建的任何网址都是一样的 . 如果你有:

    <a href="/about">
    

    它将始终转到域的根目录(例如 http://corroded.github.com/about ) . 如果你're project is called ' projectname',你可以使用HTML之类的

    <a href="/projectname/about">
    

    直接链接到页面(例如 http://corroded.github.com/projectname/about ) .

    当然,您也可以使用relative URLs(即没有前导斜杠的URL) . 您只需要知道您在目录树中的位置 .

  • 27

    编辑:此答案已添加到http://jekyllrb.com/docs/github-pages/的Jekyll文档中 .


    如果你正在寻找一个带有GitHub页面标准URL的解决方案( username.github.io/project-name/ ),我终于找到了诀窍 . 这是做什么的:

    _config.yml 中,将 baseurl 选项设置为 /project-name - 记下前导斜杠和尾部斜杠的 absence .

    现在,您需要通过以下两种方式更改模板和帖子中的链接方式:

    在引用JS或CSS文件时,请执行以下操作: {{ site.baseurl }}/path/to/css.css - 请注意紧跟在变量之后的斜杠(在"path"之前) .

    在执行永久链接或内部链接时,请执行以下操作: {{ site.baseurl }}{{ post.url }} - 请注意两个变量之间存在 no 斜杠 .

    最后,如果您想在使用 jekyll serve 提交/部署之前预览您的站点,请务必将 empty string 传递给 --baseurl 选项,这样您就可以正常查看 localhost:4000 的所有内容(没有 /project-name 进入那里以清除所有内容): jekyll serve --baseurl ''

    这样,您可以从localhost上的站点根本地预览您的站点,但是当GitHub从gh-pages分支生成您的页面时,所有URL将以 /project-name 开头并正确解析 .

    关于这个问题的更多对话issue #332 .

相关问题