【问题标题】:Dynamic Variables Jekyll Liquid动态变量 Jekyll 液体
【发布时间】:2012-05-20 15:43:10
【问题描述】:

我想为我的 jekyll + 液体安装使用动态变量。 我想使用动态变量动态访问 _config.yml 文件 名字。

最好用一个例子来解释:

页面:

---
layout: default
title: title_homepage
---

默认布局:

{{ site.locales[site.default_locale].page.title }}

_config.yml:

default_locale: "en"

locales:
  en:
    title_homepage: "This is my homepage title!"
  pirate:
    title_homepage: "Yaaawwwr. Homepage title."

那么如何使用动态变量名访问 _config.yml?

【问题讨论】:

  • 确保我清楚。您的 '_config.yml' 文件将始终准确命名。要进行更改,您需要将“_config.yml”中的“default_locale”变量从“en”更新为“pirate”。那时,当您运行 jekyll 时,您希望默认布局中的输出显示“Yaaawr. Homepage title”。而不是“这是我的主页标题!”。准确吗?
  • 嗨艾伦,是的。那是对的。然后我会为 en 生成一个 _site,为 _pirate 生成另一个

标签: ruby jekyll liquid


【解决方案1】:

您要提取的标题来自站点配置。不是页面本身。您需要做的就是将默认布局列表中的调用更改为:

{{ site.locales[site.default_locale].title_homepage }}

当您设置default_locale: "en" 时,输出将是“这是我的主页标题!”。当您将 _config.yml 文件更新为 default_locale: "pirate" 时,输出将是“Yaaawr. Homepage title”。我已经在 J​​ekyll 0.11.2 上对此进行了测试,它按预期工作。

【讨论】:

  • 感谢您的想法。但这仍然会给我留下一个问题,即我必须为多个页面定义多个布局。我想在页面内定义页面标题。选项 1:在页面的 YAML 前端内容中翻译页面标题,或选项 2:在默认布局中动态翻译。
  • 啊。我以为您正在寻找在 _config.yml 文件中定义的全局标题。我觉得这个问题还是有用的。我的建议是,我们保持原样并创建一个新问题,重点关注使用 _config.yml 中的设置来更改每个页面/帖子中单独定义的标题。
【解决方案2】:

Jekyll 是一个静态网站生成器,它不能使用变量。但我想对于自己的语言环境,有一个简单的解决方案。

遵循这个文件结构(或类似的东西):

root
  - _include
    home.html
  - _layout
    default.html
  - en
    index.html
  - pirate
    index.html
  index.html

那么简单,现在使用包含 {{content}} 并创建带有变量和一行的简单文件 {% include index.html %}

_include/index.html:

<h1>{{page.title}}</h1>

zh/index.html:

---
layout: default
title: "This is my homepage title!"
---
{% include home.html %}

海盗/index.html:

---
layout: default
title: "Yaaawwwr. Homepage title."
---
{% include home.html %}

所以……就是这样。

现在创建一个页面变量来处理每个页面的语言环境 url....

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 2020-05-15
    • 1970-01-01
    • 2016-07-07
    • 2013-01-07
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多