Макрос на языке Liquid Template

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


person Ellis Michael    schedule 29.05.2015    source источник
comment
Поскольку похоже, что этого нет в Liquid, я открыл проблему на Github< /а>.   -  person Ellis Michael    schedule 29.05.2015


Ответы (2)


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

Дополнительные сведения и советы по управлению включениями и использованию параметров можно найти в документации по Jekyll. .

Вот пример:

_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]
person Erik Gillespie    schedule 29.05.2015
comment
Насколько я помню, здесь есть несколько ошибок, самая большая из которых заключается в том, что включение не имеет ограниченной области действия, поэтому переменные, измененные внутри включения, останутся измененными после включения. - person Nathan Arthur; 10.02.2017

Именно для этого созданы плагины Jekyll tags.

person David Jacquel    schedule 29.05.2015
comment
Справка GitHub о поддерживаемых подключаемых модулях Jekyll и На страницах GitHub зависимости плагинов не указан плагин тегов Jekyll, поэтому, к сожалению, я не думаю, что это решение будет работать. на страницах GitHub. - person Erik Gillespie; 29.05.2015
comment
Так почему вы говорите о плагинах? Тем не менее, на страницах github решение @erik-gillespie — единственное. И спасибо за отрицательный голос. - person David Jacquel; 29.05.2015
comment
ОП может не знать, что доступные плагины на страницах GitHub ограничены, поэтому я счел уместным указать. Если OP использует страницы GitHub, как предполагают теги, ваш ответ не будет работать и, если его попытаются, вызовет много головной боли, отсюда и отрицательный голос. - person Erik Gillespie; 29.05.2015
comment
Извините за путаницу. В моем текущем проекте я использую Github для размещения, но компилирую с помощью Travis, потому что у меня есть несколько дополнительных шагов, которые Pages не сделает. Однако иметь решение, которое будет работать на страницах, было бы неплохо для будущих проектов. Более того, насколько я понимаю предлагаемое вами решение с тегами, мне пришлось бы создавать новый настраиваемый тег в Ruby для каждого фрагмента HTML, который я хотел бы использовать повторно. Это не здорово. - person Ellis Michael; 29.05.2015