我想修改一些html标签在jekyll上呈现的方式。我需要的是自动添加一些css类(在本例中为“.table”类到表html标记)。
我正在使用redcarpet降价处理器。我想我需要编写一个扩展渲染器的插件,但我找不到任何好的例子......
我想出了这个,但它只是一个复制/粘贴工作,它不起作用......
require 'redcarpet'
class BootstrapTables < Redcarpet::Render::HTML
def table(header, body)
"\n<table class='table'><thead>\n#{ header }</thead><tbody>\n#{ body }</tbody></table>\n"
end
end
有人可以帮忙吗?
答案 0 :(得分:9)
我已经测试过你可以通过 kramdown
为一个降价元素提供课程{:.foo}
| First Header | Second Header |
| ------------- | ------------- |
| Content Cell | Content Cell |
| Content Cell | Content Cell |
您的表格类为 foo
答案 1 :(得分:2)
我找到了方法并更正了代码,我需要一个正确配置的自定义渲染器。在 _config.yaml 中使用RedcarpetExt
作为降价变量将激活它。
# Create a custom renderer that extend Redcarpet to customize its behavior.
require 'jekyll'
require 'redcarpet'
class RedcarpetExtender < Redcarpet::Render::HTML
# Extend the table to be compatible with the Bootstrap css.
def table(header, body)
"\n<table class='table-bordered table-hover'><thead>\n#{ header }</thead><tbody>\n#{ body }</tbody></table>\n"
end
end
class Jekyll::Converters::Markdown::RedcarpetExt
def initialize(config)
@site_config = config
end
def extensions
Hash[ *@site_config['redcarpet']['extensions'].map {|e| [e.to_sym, true]}.flatten ]
end
def markdown
@markdown ||= Redcarpet::Markdown.new(RedcarpetExtender, extensions)
end
def convert(content)
return super unless @site_config['markdown'] == 'RedcarpetExt'
markdown.render(content)
end
end
答案 2 :(得分:1)
另一种解决方案是使用sass Bootstrap version。
此版本与twbs / bootstrap同步,并且Jekyll本身支持sass / scss。
然后,一旦你有sass工作(需要五分钟),你只需要在自定义style.scss文件中创建一个规则:
table{
@extend .table;
}
然后每个表都将使用.table引导规则。