【问题标题】:Middleman sitemap resources select - query on locale中间人站点地图资源选择 - 查询区域设置
【发布时间】:2014-05-21 14:58:44
【问题描述】:

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

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

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

    = data.request_path

基本上我只想获取一个区域设置的站点地图 - 但不知道这个的语法

任何帮助表示赞赏

【问题讨论】:

  • 您找到解决方案了吗?
  • 嗨,我不认为我这样做了 - 我想我恢复使用博客了。

标签: ruby middleman


【解决方案1】:

我遇到了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

【讨论】:

    【解决方案2】:

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

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

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

    middleman-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
    

    【讨论】:

    • 我希望通过站点地图访问我需要完成的任务。
    • 我试图先为您找到一个站点地图解决方案,但站点地图资源似乎没有提供语言环境数据。
    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多