我想修改一些html标签在jekyll上呈现的方式。我需要的是自动添加一些css类(在本例中为"。
我正在使用红毯降价处理器。我想我需要写一个插件来扩展渲染器,但我找不到任何好的例子…
我想到了这个,但它只是一个复制/粘贴工作,它不起作用…
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
有人能帮忙吗?
我已经测试过,您可以使用kramdown
为markdown元素提供一个类{:.foo}
| First Header | Second Header |
| ------------- | ------------- |
| Content Cell | Content Cell |
| Content Cell | Content Cell |
你的表有一个类foo
注意:这个答案是一个月前在SO给出的
我找到了方法并纠正了代码,我需要一个正确配置的自定义渲染器。使用RedcarpetExt
作为_config中的标记变量。Yaml 将激活它。
# 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
另一个解决方案是使用sass Bootstrap版本。
此版本与twbs/bootstrap同步,sass/scss由Jekyll原生支持。
然后,一旦你的sass工作(这需要五分钟),你只需要创建一个自定义样式的规则。SCSS文件:
table{
@extend .table;
}
然后每个表将使用。table引导规则