如何在旧的wordpress帖子的sinatra中呈现类似档案的结构?

时间:2010-09-10 11:11:24

标签: sinatra

假设我废弃了旧的wordpress安装,并将以下目录放入/ public(sinatra应用程序)

2006        2008        2010        category    my-work
2007        2009        archives    tag

年份目录以这种格式下载:

/年/月/日/冠军的员额/

问题1: 我可以通过/year/month/day/title-of-post/index.html加载页面,但我希望能够加载/年/月/日/标题帖/加载页面而无需加载页面最后输入index.html。

问题2:

我希望能够输入/存档并获得上面提到的每个子目录的<li><a href="path-to-archived-post">post title</a></li>。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用一些选项让index.html在您的公用文件夹中运行。最快的选择是让您的负载平衡服务器(例如Nginx或Apache)提供静态文件。 Nginx和Apache基本上都是开箱即用的。

另一种方法是从Sinatra路线手动读取和发送文件。你会以这种方式获得更多控制权,但会失去一点速度并使用更多内存。你可以这样做:

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

答案 1 :(得分:0)

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