【问题标题】:Macro in Liquid Template languageLiquid 模板语言中的宏
【发布时间】:2015-05-29 06:50:28
【问题描述】:

我正在使用 Jekyll,它使用 Liquid 模板语言。我过去使用过 Jinja 模板,它具有 macro 的概念(只是一个命名函数)。 Liquid 是否有提供同等功能的东西?如果没有,是否有一些 Jekyll 插件可以扩展 Liquid 来提供它?

【问题讨论】:

  • 由于在 Liquid 中看起来不存在这种情况,所以我打开了 issue on Github

标签: ruby jekyll liquid github-pages jekyll-extensions


【解决方案1】:

您可以创建接受参数的包含。它不是相当宏,但它是我在 GitHub Pages 上成功使用的。

有关管理包含和使用参数的更多详细信息和提示可以找到in the Jekyll documentation

这是一个例子:

_includes/email_link.html

<a href="mailto:{{ include.user.email_address }}"
   title="Email {{ include.user.name }}">
    <i class="fa fa-fw fa-envelope"></i>
</a>

about.md

---
layout: page
title: About
---
{% include email_link.html user=site.users.erik %}

_config.yml

users:
    erik:
        name: Erik
        email_address: erik.gillespie@wizbang.com

【讨论】:

  • 这里有一些问题,我记得,其中最大的问题是 include 没有限制范围,因此在 include 中更改的变量将在 include 之后保持更改。
【解决方案2】:

这正是 Jekyll tags plugins 的用途。

【讨论】:

  • 关于 supported Jekyll plugins 和 GitHub Pages plugin dependencies 的 GitHub 帮助没有列出 Jekyll 标签插件,所以很遗憾,我认为这个解决方案不适用于 GitHub Pages。
  • 那你为什么要谈论插件?尽管如此,在 github 页面上,@erik-gillespie 解决方案就是其中之一。并感谢您的反对票。
  • OP 可能不知道 GitHub Pages 上的可用插件是有限的,所以我认为有必要指出。如果 OP is 使用 GitHub Pages 作为标签建议,那么您的答案将不起作用,如果尝试,将引起很多头痛,因此投反对票。
  • 很抱歉给您带来了困惑。在我当前的项目中,我使用 Github 进行托管,但使用 Travis 进行编译,因为我有一些 Pages 不会执行的额外步骤。但是,拥有一个适用于页面的解决方案对于未来的项目来说会很好。此外,据我了解您建议的标签解决方案,我必须在 Ruby 中为我想要重用的每个 HTML 的 sn-p 创建一个新的自定义标签。这不是很好。
猜你喜欢
  • 2018-09-11
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
相关资源
最近更新 更多