【问题标题】:Define custom title for calendar pages in MiddleMan在 MiddleMan 中定义日历页面的自定义标题
【发布时间】:2014-03-21 15:17:33
【问题描述】:

我刚刚使用middleman 3 和middleman-blogging gems 建立了一个小型静态博客,目前正在完善所有内容。我从 SEO 的角度查看我的页面,并注意到我所有的日历页面都显示相同的标题(这对 SEO 来说非常糟糕,afaik)。

目前,我使用它在我的布局中生成标题标签(Slim 模板引擎):

title
  | #{current_article.title unless current_article.nil?} 
  | #{ " | " unless current_article.nil?}
  | My blog name

对于文章,这很容易,因为我只需要在 frontmatter 中定义标题,但对于动态生成的日历页面,我显然不能这样做。除非我可以在 calendar.slim 的 frontmatter 中使用变量,但到目前为止我什么都做不了。也许通过config.rb 文件?

感谢您的帮助!

【问题讨论】:

    标签: ruby middleman


    【解决方案1】:

    您将获得可以使用的yearmonthday 变量集。您还可以像在其他任何地方一样使用 frontmatter (current_resource.data),并且可以在 articles 中访问该日历页面的文章并循环访问它们以从每个文章中提取数据。很多很多的选择。

    默认生成的calendar.html.erb有使用这些的例子。

    【讨论】:

    • 嗯,是的,但实际上我想在布局中使用来自实际页面的一些数据(例如日历模板)。请参阅我使用的(不太优雅的)解决方案的答案。
    【解决方案2】:

    最后,这是我选择继续的方式:在我的 calendar.slim 和 tag.slim 模板中,我简单地定义了一个 @title 变量,我在默认布局中使用它。在calendar.slim中,我使用内置变量yearmonthday构建标题字符串,在tag.slim中,我使用内置变量tagname

    [calendar.slim]
    
    - case page_type
    - when 'month'
      - date = date_to_fr Date.new(year, month, 1).strftime('%B %Y')
    - when 'year'
      - date = year
    
    - @title = "#{date} - Archives"
    
    (...)
    

    然后在布局中,然后我使用以下代码显示我的@title 变量,后跟我的博客名称,除非@title 不存在(那么我只是使用我的博客名称作为页面标题):

    [layout.slim]
    
    title 
          = "#{@title} | " unless @title.nil?
          | Pierre-Adrien Buisson : Le Blog !
    

    【讨论】:

      【解决方案3】:

      只是在pabuisson's answer 上构建。

      您不能动态设置 frontmatter 变量。

      current_page.data.foo = true
      current_page.data.too #=> nil
      

      而且 frontmatter 没有模板化

      ---
      title: <%= "foo" %>
      ---
      <%= current_page.data.title %> == <%%= "foo" %>
      

      所以我所做的是在布局中我首先检查实例变量,然后返回到 frontmatter。

      <title><%= @title || current_page.data.title %></title>
      

      这样我可以在frontmatter中设置我的大部分变量,但是当我需要一个动态变量时,我可以使用一个实例变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        相关资源
        最近更新 更多