Задать вопрос
@neodekvat09

Автоматизация постов в jekyll?

Здравствуйте, недавно загорелся желанием сделать блог на github'e по средствам jekyll'a.
Всё хорошо, но как автоматизировать написание постов, не писать каждый раз дату в названии файла, или первые три строчки ? (Как в hexo.io, или octopress).

И можно ли сделать, чтобы в url отображался id записи, а не slug ? Так как, в маленьких постах (например каком-нибудь цитатнике, что я почти и хочу сделать, краткие названия, они же slug'и не имеют смысла и лишь засоряют url).

Документацию читал, но про это ничего не сказано, видимо, всем нравится писать всё в ручную, или же я не умею гуглить (что вероятнее всего).
Я понимаю, что прошу многого, но прошу, помогите, если это вообще возможно, с этими двумя проблемами >.
  • Вопрос задан
  • 440 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Что касается ссылок:
Link jekyllrb.com/docs/permalinks
Config file: jekyllrb.com/docs/configuration

что касается генерации нового файла статьи: (rake задача из octopress)
desc "Begin a new post in #{source_dir}/#{posts_dir}"
task :new_post, :title do |t, args|
  if args.title
    title = args.title
  else
    title = get_stdin("Enter a title for your post: ")
  end
  raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
  mkdir_p "#{source_dir}/#{posts_dir}"
  filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}"
  if File.exist?(filename)
    abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
  end
  puts "Creating new post: #{filename}"
  open(filename, 'w') do |post|
    post.puts "---"
    post.puts "layout: post"
    post.puts "title: \"#{title.gsub(/&/,'&')}\""
    post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}"
    post.puts "comments: true"
    post.puts "categories: "
    post.puts "---"
  end
end

Ну или bash/cmd скрипт который за вас это сделает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы