在include语句jekyll中使用页面属性

时间:2016-04-20 11:40:02

标签: ruby jekyll

我有一个jekyll页面,其中有两个文件夹:products _products/product_name

我有一个包含此产品的产品页面md文件:

---
title: product_title
subtitle: subtilte
layout: product
description: long description
product_icon: product_image_path
---

这个简单的布局:

---
layout: default
---
<!-- Main -->
<div id="main">
  <div id="content" class="container">
    <header id="product_header">
      <div class="half_left center">
        <img id="product_icon" src="/assets/{{ page.product_icon }}" alt="">
    <h2 id="product_title">{{ page.title }}</h2>
        <h3 id="product_subtitle">{{page.subtitle}}</h3>
      </div>
      <div class="half_right center">
        {% markdown _products/page.title/short.md %}
      </div>
      <div class="clear"></div>

    </header>
        {{content}}
  </div>
</div>

然而在:{% markdown _products/page.title/short.md %}我似乎无法捕获页面标题,我该怎么做?

我的降价标记:

# From: http://wolfslittlestore.be/2013/10/rendering-markdown-in-jekyll/
=begin
  Jekyll tag to include Markdown text from _includes directory preprocessing with Liquid.
  Usage:
    {% markdown <filename> %}
  Dependency:
    - kramdown
=end
module Jekyll
  class MarkdownTag < Liquid::Tag
    def initialize(tag_name, text, tokens)
      super
      @text = text.strip
    end
    require "kramdown"
    def render(context)
      tmpl = File.read File.join Dir.pwd, "", @text
      site = context.registers[:site]
      tmpl = (Liquid::Template.parse tmpl).render site.site_payload
      html = Kramdown::Document.new(tmpl).to_html
    end
  end
end
Liquid::Template.register_tag('markdown', Jekyll::MarkdownTag)

有人可以告诉我如何抓取{% markdown _products/page.title/short.md %}中的page.title我收到此错误:Liquid Exception: No such file or directory @ rb_sysopen - /home/tools/git/pagename.github.io/_products/page.title/short in _layouts/product.html

1 个答案:

答案 0 :(得分:1)

我在jekyll的解决方案中发现了一个不同的构建版本,因此我没有使用插件

我们假设您在路径john.md中有降价文件markdown_files,我们可以执行以下操作:

{% capture john %}
    {% include_relative markdown_files/john.md %}
{% endcapture %}

然后,我们想要输入john.md中现在捕获的john文字,我们可以将此{{ john | markdownify }}

它不是一个光滑的,不是一个班轮,但它的工作原理。根据您的设置,您可以使用include代替include_relative

希望它可以帮助其他人,并感谢Jekyll IRC社区帮助我找到解决方案。