如何限制首帖的某些 Markdown 功能?

我想限制主题的第一个帖子(来自我的插件)的某些 Markdown 功能。

这可以通过访问 composer 模型中的 topicFirstPost 属性在客户端轻松实现。但是,在服务器端的 lib/pretty_text.rbmodel/post.rb 中,我发现只有 topic_id 被传递给了 cook 方法。我或许可以检查主题的 posts_count 属性,但这在重新烘焙时将不起作用。

也许我不应该在 markdown-it 进程中使用任何状态?

另一种实现此目的的方法是生成一个使用 Markdown 的占位符,然后手动更新预览并在服务器端监听一些 cook 后处理事件,但这可能需要一些额外的工作。

如果可能的话,我更倾向于第一种方法。感谢任何建议。

我不知道,但你用 HTML 做什么?它甚至允许使用 Markdown,对吧?

您编写了一个插件,该插件生成的文本您不希望被渲染?

您能多说一些您想做什么吗?

@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 个赞