Как сделать архивную структуру в синатре старых постов WordPress? - PullRequest
0 голосов
/ 10 сентября 2010

Допустим, я удалил свою старую установку WordPress и поместил следующие каталоги в / public (приложение sinatra)

2006        2008        2010        category    my-work
2007        2009        archives    tag

Каталоги года идут в следующем формате:

/ год / месяц / день / титульный из-пост /

Проблема 1: Я могу получить /year/month/day/title-of-post/index.html для загрузки страницы, но я хочу иметь возможность загрузить / year / month / day / title-of-post / для загрузки страницы без необходимости набрать index.html в конце.

Задача 2:

Я хочу иметь возможность набирать / архивировать и получать <li><a href="path-to-archived-post">post title</a></li> из каждого подкаталога, упомянутого выше. Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

У вас есть несколько способов заставить index.html работать в ваших общих папках. Самый быстрый вариант будет состоять в том, чтобы сервер балансировки нагрузки (например, Nginx или Apache) обслуживал статические файлы. Nginx и Apache в основном делают это из коробки.

Другим способом является ручное чтение и отправка файлов по маршруту Синатры. Таким образом вы получите больше контроля, но немного потеряете скорость и будете использовать больше памяти. Вы можете сделать это так:

get "/:year/:month/:day/:title" do |*path|
  File.read(File.join(settings.public, path, "index.html"))
end

Вы можете получить список своих сообщений, используя класс Dir:

get "/archive" do
  @posts = Dir["#{settings.public}/**/index.html"].map do |post|
    File.dirname(post).sub(settings.public, "")
  end

  haml :archive
end
0 голосов
/ 10 сентября 2010

1.

get "/:year/:month/:day/:title" do
  # render the post
end

2

get "/archive" do
  years = Dir.entries(PUBLIC_DIR)
  # cycle through years and render links
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...