【问题标题】:Load plain/markdown text (.txt/.md) files in Middleman在 Middleman 中加载纯文本/降价文本 (.txt/.md) 文件
【发布时间】:2021-07-10 22:05:02
【问题描述】:

Middleman 会自动加载存在于 /data 文件夹中的 .json.yml data files 的内容。

有没有办法在这个文件夹中加载 any .txt.md 文件的内容?

我找到了这个extension,但我不知道如何实现。

示例

鉴于此结构和以下文件:

data/
├── foo.yml
└── bar.txt
  • foo.yml:
text: "I can load this text."
  • bar.txt
I want to load this text.

我可以访问data.foo.text 并检索I can load this text.

我想访问data.bar 并检索I want to load this text.

【问题讨论】:

  • 您可能必须编写自己的扩展程序或 MonkeyPatch Middleman。将文本文件转换为 yaml 可能更容易。
  • 是的,这似乎是唯一的选择。谢谢

标签: ruby markdown middleman static-site


【解决方案1】:

我不确定您要通过读取 txt 数据(或降价)来实现什么。中间人数据不打算包含数组/散列形式以外的数据。假设您要加载长(或格式化)文本,这是 IMO 更好的方法

posts.yml:

-
  title: First Post
  file: foo.txt
-
  title: Second Title
  file: bar.txt

在你看来:

<% data.posts.each do |post| %>
  <%= post[:title] %>
  <%= simple_format(File.read("data/#{post[:file]}").html_safe) %>
<% end %>

【讨论】:

    【解决方案2】:

    我找到了一种解决方法,直到我弄清楚如何编写自己的扩展来加载纯文本文件。

    有以下数据文件:

    • data/bar.yml
    ---
    title: bar
    # Content in plain text can be placed after ---
    ---
    ## H2 test
    - Hello __world__!
    

    然后可以使用data.bar.postscript访问内容:

    <div class="container">                 
        <h1><%= data.bar.title %></h1>
        <%= makrdown data.bar.postscript %> # In this case, I want to render it in Markdown
    </div>
    

    为了渲染 Markdown,我在 config.rb 中定义了一个辅助函数:

    helpers do 
      def markdown(text=nil)
        text ||= yield
        return Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true).render(text)
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2020-09-07
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多