Spec-Zone.ru › Jekyll 4

Теги

Если вы хотите включить пользовательские теги Liquid в свой сайт, вы можете сделать это, подключившись к системе тегирования. Встроенные примеры, добавленные Jekyll, включают теги highlight и include. Ниже приведен пример пользовательского тега Liquid, который выведет время рендеринга страницы:

module Jekyll
  class RenderTimeTag < Liquid::Tag

    def initialize(tag_name, text, tokens)
      super
      @text = text
    end

    def render(context)
      "#{@text} #{Time.now}"
    end
  end
end

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTag)

Как минимум, теги Liquid должны реализовывать:

Метод Описание

render

Выводит содержимое тега.

Вы также должны зарегистрировать пользовательский тег в движке шаблонов Liquid следующим образом:

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTag)

В примере выше, мы можем разместить следующий тег в любом месте одной из наших страниц:

<p>{% render_time page rendered at: %}</p>

И мы получим что-то вроде этого на странице:

<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>

Блоки тегов

Тег render_time , показанный выше, также можно переписать как блок тега, унаследовав класс Liquid::Block. Посмотрите пример ниже:

module Jekyll
  class RenderTimeTagBlock < Liquid::Block

    def render(context)
      text = super
      "<p>#{text} #{Time.now}</p>"
    end

  end
end

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTagBlock)

Теперь мы можем использовать блок тега где угодно:

{% render_time %}
page rendered at:
{% endrender_time %}

И мы по-прежнему получим тот же вывод, что и выше, на странице:

<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>
В приведенном выше примере и блок тега, и тег зарегистрированы с именем render_time, но регистрация тега и блока тега с одним именем в одном проекте не рекомендуется, так как это может привести к конфликтам.

© 2020 Jekyll Core Team and contributors
Licensed under the MIT license.
https://jekyllrb.com/docs/plugins/tags/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API