Как в Jekyll программно изменить постоянные ссылки для страниц?

На сайте Jekyll со многими страницами (не сообщениями в блогах) я хочу программно настроить постоянную ссылку каждой страницы. Я попробовал плагин Generator, что-то вроде:

module MySite
  class MySiteGenerator < Jekyll::Generator
    def generate(site)
      site.pages.each do |page|
        page.data['permalink'] = '/foo' + page.url
        # real world manipulation of course more complicated
      end
    end
  end
end

Но хотя это запускалось и устанавливало поле page.data['permalink'], вывод оставался прежним.

Я что-то делаю не так, или есть другой способ сделать это? Спасибо!


person skagedal    schedule 23.02.2015    source источник


Ответы (1)


Может быть проще переопределить класс страницы чем-то вроде этого:

module Jekyll
  class Page
    alias orig_permalink permalink
    def permalink
      permalink    = orig_permalink
      newPermalink = "foo/#{permalink}"
    end
  end
end

Не испытано.

person David Jacquel    schedule 23.02.2015
comment
На самом деле я был слишком быстр, это не работает. :( См. пример на github.com/skagedal/permalink_mod_test — там есть страница index.html и две страницы в разделе темы, но в сгенерированный файл _site. - person skagedal; 24.02.2015
comment
Однако, если на странице уже есть постоянная ссылка во вступительной части, она включается в _site с должным образом измененной постоянной ссылкой. Продемонстрировано, что к настоящему времени добавлена ​​третья страница в репо. - person skagedal; 24.02.2015