jekyll — автоматически добавлять материалы на страницы на страницах github

Есть ли способ получить URL-адрес страницы в Jekyll? Под страницами я подразумеваю текстовые файлы без публикации, такие как about.html и download.html в следующей иерархии:

root
 |
 +- _includes
 |
 +- _layouts
 |
 +- _posts
 |
 +- _config.yml
 |
 +- index.textile
 |
 +- about.textile
 |
 `- download.textile

Я хотел бы сделать что-то вроде этого:

<h1><a href="{{ page.url }}">{{ page.title }}</a></h1>

Это работает с сообщениями, потому что их URL-адрес включен в метод to_liquid сообщения. Страницы, с другой стороны, похоже, не содержат ничего подобного — у них есть свойства, которые мне нужны (или около того кажется), но они не экспортируют их на to_liquid; Я хотел бы переопределить его, чтобы он делал. Есть ли способ сделать это?

Я нашел jekyll_extensions, но не не знаю, работает ли это в моей целевой среде (страницы github).

Я хотел бы избежать необходимости включать параметр url во все заголовки yaml, если это возможно.

Большое спасибо!


person kikito    schedule 28.05.2010    source источник


Ответы (3)


Похоже, что page.rb to_liquid теперь поддерживает данные "url", которые вам нужны...

https://github.com/mojombo/jekyll/blob/master/lib/jekyll/page.rb

person Chris Jacob    schedule 06.02.2011
comment
Да, это так. Я сам модифицировал вики, чтобы отразить это. Спасибо! - person kikito; 06.02.2011

Я думаю, что нет. Вот вики Jekyll о том, что находится в глобальном элементе page:

Для сообщений это объединение данных в основной информации YAML и вычисляемых данных (таких как URL-адрес и дата). Для обычных страниц это просто основная часть YAML.

Даже если бы вы могли перенастроить движок Jekyll, чтобы он делал это за вас локально, я не уверен, как вы могли бы заставить это работать на собственных страницах Github (поскольку они будут использовать ванильный Jekyll, а не ваш).

person Telemachus    schedule 28.05.2010
comment
проклятие. Хотел бы я, чтобы это не было так... ограничено. Большое спасибо, я думаю, я просто буду использовать YAML (или создавать посты с поддельными датами, например, 0000-01-01) - person kikito; 30.05.2010
comment
Одним из вариантов является создание файлов Jekyll _site/ в вашей локальной системе (вы можете модифицировать Jekyll так, как хотите, включая плагины). Это все в вашей основной ветке. Затем используйте Grancher ( timeless.judofyr.net/grancher ), чтобы скопировать _sites/ в ветку gh-pages, зафиксируйте и нажмите с помощью простой команды rake publish. - person Chris Jacob; 06.02.2011

Теперь можно манипатить классы jekyll с помощью новой системы плагинов!

Просто добавьте этот файл (page.rb) в каталог _plugins:

module Jekyll
  class Page
    def to_liquid
      self.data.deep_merge({
        "url" => File.join(@dir, self.url),
        "content" => self.content,
        "dir" => self.dir,
        "name" => self.name,
        "ext" => self.ext,
        "basename" => self.basename
      })
    end
  end
end

Я только что изменил здесь to_liquid, но мог бы добавить больше методов и т. д.

person kikito    schedule 26.06.2010