Ваши жидкие выражения типа {{ site.data.stackexchange.user.id }}
здесь не будут интерпретироваться. Вам нужно использовать переменные для вывода ваших данных.
Поскольку я предполагаю, что вы храните свои данные в файле _data / stackoverflow.yml , который может выглядеть следующим образом:
url: https://stackoverflow.com
id: 2989289
user: artu-hnrq
Этот код сделает работу:
module Jekyll
class FlairTag < Liquid::Tag
def initialize(tag_name, community, tokens)
super
# if this tag is called with {% flair stackoverflow %}
# the "community" variable will be "stackoverflow "
# in order to remove the trailing space, we strip the variable
@community = community.strip
end
def render(context)
site = context.registers[:site]
data = site.data[@community]
url = data["url"]
id = data["id"]
user = data["user"]
alt = "Profile for #{user} on #{@community}"
output = %(
<a href="#{url}/users/#{id}/#{user}">
<img src="#{url}/users/flair/#{id}.png"
width="208" height="58"
title="#{alt}"
alt="#{alt}"
</a>
)
end
end
end
Liquid::Template.register_tag('flair', Jekyll::FlairTag)
Примечание: с моей точки зрения, если этот фрагмент находится в уникальном месте на вашем сайте (cv, footer, ...), это может это достигается простым включением.
Повышение производительности практически не происходит, если этот тег не нужно настраивать для каждой страницы, а ваш код может обслуживаться кем-то, обладающим только знаниями html / liquid.