Middleman站点地图资源选择 - 查询语言环境

时间:2014-05-21 14:58:45

标签: ruby middleman

我想查询SiteMap - 从每个页面获取任务列表 - 不幸的是,这是一个国际化的网站,它有几种语言

因此,下面重复系统中每种语言的任务。

- sitemap.resources.select { | r | r.data.todo.present? }.each do | data |

    = data.request_path

基本上我只想获取一个区域设置的Sitemap - 但是不知道这个的语法

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

我遇到了https://forum.middlemanapp.com/t/querying-proxy-pages-by-locals/1195。您可以使用以下内容过滤与当前区域设置匹配的页面:

sitemap.resources.select do |r|
  r.metadata[:options][:lang] == I18n.locale &&
  r.data.todo.present?
end

或者如果您需要遍历所有语言环境,可以使用以下内容:

(langs).each do |locale|
  sitemap.resources.select do |r|
    r.metadata[:options][:lang] == locale &&
    r.data.todo.present?
  end
end

答案 1 :(得分:1)

考虑使用middleman-blog来存储,分类和访问您的网页。

这样可以方便地过滤您的网页。未经测试的例子:

- blog.articles.select { | a | a.data.todo.present? && a.lang == I18n.locale }.each do | article |

  = article.request_path

midman-blog扩展允许定义多个博客。这允许将其用作临时数据库适配器:博客是数据库表,帖子是数据库项。

考虑这个(config.rb):

activate :blog do |blog|
  blog.name = 'dev_en'
  blog.sources = "blogs/development/{year}-{month}-{day}-{title}.html"
  blog.permalink = "devblog/{title}.html"
  blog.layout = :blog_article
end

activate :blog do |blog|
  blog.name = 'dev_ru'
  blog.sources = "ru/blogs/development/{year}-{month}-{day}-{title}.html"
  blog.permalink = "ru/devblog/{title}.html"
  blog.layout = :blog_article
end

我为不同的语言定义了两个博客。我可以像这样访问每个人:

- blog('dev_en').articles.select { | a | a.data.todo.present? }.each do | article |

  = article.request_path