【问题标题】:Setting BaseURLs per subfolder with Jekyll (GitHub Pages)使用 Jekyll (GitHub Pages) 为每个子文件夹设置 BaseURL
【发布时间】:2023-04-10 17:49:02
【问题描述】:

有没有办法将特定值附加到不同子文件夹中的site.baseurl?例如,我有两个不同的子文件夹,每个子文件夹都使用一种特定的语言 (lang),我想将此值附加到 site.baseurl 以用于子文件夹中的页面和文档。比如,

  • 子文件夹lang1 中的A.md 将具有/my_site_url/lang1/ 的BaseURL,并且
  • 子文件夹 lang2 中的 B.md 的 BaseURL 为 /my_site_url/lang2/

这是否可以通过 GitHub Pages 实现,而无需事先在本地构建+服务我的网站?

编辑:我需要 BaseURLs 来管理导航栏,该导航栏会遍历子文件夹中的所有单独页面。在这种情况下,在 site.baseurl 前面加上子文件夹是最经济的选择吗?

【问题讨论】:

  • 您是否尝试过在前端使用permalinks 来控制网址? jekyllrb.com/docs/permalinks
  • 我有,但baseurl 用于使用导航栏。恐怕永久链接似乎还不够。应该在原帖中澄清,对不起。
  • 循环浏览您的site.posts 并从每个post.url 构建hrefs 是否足以构建您的导航栏?您甚至可以对 post.url 的某些部分进行一些逻辑处理,如果您只查找每个帖子的部分 URL(例如,/lang1/A.html 的 URL 的 /lang1
  • 我对@9​​87654341@ 目录了解不多,但假设您建议将两个lang 子文件夹的内容移动到_posts 目录,然后循环,我是否正确通过 HTML 对循环语句的使用?不幸的是,我也有每种语言的子目录,请问site.posts的循环是否也可以在必要时产生class="opener"
  • 哦,对不起。我错误地使用了site.posts,这意味着_posts 目录中的markdown 文件。由于您使用的是自定义目录,因此您可以为每个目录 jekyllrb.com/docs/step-by-step/04-layouts 定义一个布局。然后你会做类似{% assign langOnePages = site.pages | where: 'layout', 'lang1' %}的事情。当您循环浏览langOnePages 时,我希望每个page.url 在网址中都有/lang1。希望这对您有所帮助,我主要只是提出一些想法,看看您是否可以取得进展。

标签: jekyll github-pages base-url


【解决方案1】:

_config.yml

    baseUrl: /sub
    lang1Url: /lang1
    lang2Url: /lang2

nav.html、footer.html

    <li><a href="{{ site.baseUrl }}{{ site.lang1Url }}/index.html">Home - lang 1</a></li>
    <li><a href="{{ site.baseUrl }}{{ site.lang2Url }}/index.html">Home - lang 2</a></li>

【讨论】:

  • 感谢您的回答!但是,我的目标是使用当前页面使用的任何语言,并仅在侧边栏上链接相应语言的页面,这就是为什么我需要灵活的 BaseURL 配置。
  • 那么您可以在每个页面的前面设置 currentLang 并检查侧边栏部分上的变量并有条件地显示链接@PaulKim
  • 能否再麻烦您一点,是否可以为每个子目录在不同的配置文件中预设这个“前事”?
  • 我想,对于每篇文章,您都必须在前面提到语言。这样您就可以在每个文件夹中进行查找和替换,并为该文件夹设置一次语言以节省时间@PaulKim
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 2014-07-16
  • 2017-11-20
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多