2015-05-29 2 views
4

Я использую Jekyll, который использует язык жидких шаблонов. Я использовал шаблоны Jinja в прошлом, и у нее есть концепция macro (только именованная функция). Имеет ли жидкость что-то, что обеспечивает эквивалентную функциональность? Если нет, есть ли какой-нибудь Jekyll-плагин, который продлит Liquid, чтобы обеспечить его?Macro in Liquid Язык шаблона

+0

Поскольку это не похоже на Liquid, я открыл [вопрос о Github] (https://github.com/Shopify/liquid/issues/580). –

ответ

2

Это именно то, для чего сделаны Jekyll tags plugins.

+0

Справка GitHub о [поддерживаемых плагинах Jekyll] (https://help.github.com/articles/using-jekyll-plugins-with-github-pages/) и страницах GitHub [зависимостей плагина] (https: // pages .github.com/versions /) не перечисляет плагин Jekyll tags, поэтому, к сожалению, я не думаю, что это решение будет работать на страницах GitHub. –

+0

Так почему вы говорите о плагинах? Тем не менее, на страницах github решение @ erik-gillespie - это одно. И спасибо, что вы проголосовали. –

+0

OP может не знать, что доступные плагины на страницах GitHub ограничены, поэтому я счел нужным указать. Если OP * * использует GitHub Pages в качестве подсказок, то ваш ответ не будет работать, и если его попробуют, это вызовет много головных болей, следовательно, downvote. –

7

Вы можете создавать включенные, которые принимают параметры. Это не довольно макрос, но это то, что я успешно использовал на страницах GitHub.

Более подробную информацию и советы по управлению включением и использованием параметров можно найти 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: [email protected] 
+0

Здесь, как я помню, есть некоторые gotchas, самый большой из которых включает в себя не ограниченную область действия, поэтому переменные, измененные внутри include, будут оставаться после включения. –