hawm
(Hawm)
1
我想限制主题的第一个帖子(来自我的插件)的某些 Markdown 功能。
这可以通过访问 composer 模型中的 topicFirstPost 属性在客户端轻松实现。但是,在服务器端的 lib/pretty_text.rb 和 model/post.rb 中,我发现只有 topic_id 被传递给了 cook 方法。我或许可以检查主题的 posts_count 属性,但这在重新烘焙时将不起作用。
也许我不应该在 markdown-it 进程中使用任何状态?
另一种实现此目的的方法是生成一个使用 Markdown 的占位符,然后手动更新预览并在服务器端监听一些 cook 后处理事件,但这可能需要一些额外的工作。
如果可能的话,我更倾向于第一种方法。感谢任何建议。
Jagster
(Jakke Lehtonen)
2
我不知道,但你用 HTML 做什么?它甚至允许使用 Markdown,对吧?
pfaffman
(Jay Pfaffman)
3
您编写了一个插件,该插件生成的文本您不希望被渲染?
您能多说一些您想做什么吗?
hawm
(Hawm)
4
@Jagster @pfaffman
请想象一下,该插件添加了一些自定义的BBCode标签,或者用自定义的HTML标签包装任何文本以供以后使用,例如进行装饰。我不想让它在第一篇帖子之外(或基于其他条件)生效,因为我不需要它,而且它可能会产生一些副作用。
另外,我可能在服务器端找到了一个可能的解决方案。它包装了Post模型的cook方法。我还没有测试过。
class ::Post
# 包装原始的cook方法以添加功能选项
# 请参阅 lib/pretty_text.rb 中的 markdown 方法
alias_method :original_cook, :cook
def cook(raw, opts = {})
features = {
'feature-name': is_first_post?
}
if opts.has_key?(:features)
opts[:features].merge!(features)
else
opts[:features] = features
end
original_cook(raw, opts)
end
end
4 个赞