Homeland 问两个关于 Homeland 框架的问题

zemora · 2018年12月23日 · 最后由 zemora 回复于 2018年12月30日 · 6713 次阅读

我想基于 homeland-docker 搭建一个论坛程序,目前我已经能做到让论坛在服务器上跑起来,但是有两个细节问题无法解决,十分苦恼,希望了解的朋友能帮助解决一下,非常感谢!我可以提供报酬,如果你愿意帮助解决,可以留下联系方式。

这两个问题都是跟 mathjax 有关的,第一个是我想在论坛中开启 mathjax 输入数学公式的功能,但是 homeland 默认的 markdown 解释器语法和 latex 冲突,我想调用外部的 pandoc 命令来渲染,不知道应该怎么修改框架?

第二个问题是每次提交回复/修改以后需要手动刷新一次才能显示数学公式,否则就还是显示原来的页面,这个怎么解决呢?

这类需求,你可以 Fork 以后尝试自行解决

楼主不是程序员,他希望外包解决。

对 huacnlee 回复

我想问一下,要修改内部的 markdown 渲染方式的话,是不是要 fork 一份 homeland 项目和一份 homeland-docker 项目,并且把 docker 里面的安装 homeland 的源设置为自己 fork 的那一份?

对 huacnlee 回复

您的意思是我修改这个模块,改好以后推送到我 fork 的分支上,然后把 docker 安装时下载的源设置为我 fork 的分支吗?

对 huacnlee 回复

@huacnlee 是不是我应该修改这个函数:

def call
    html = Render.to_html(@text)
    html.strip!
    html
end

把

html = Render.to_html(@text)

这一行的 Render.to_html 替换为我自己的解释器实现?

另外,我搭建的论坛地址在 https://www.h3space.cn/

时间上确实不允许我先学一遍 ruby + rails 再去自己研究怎么 DIY 框架,所以盼不吝多多指点。

@zemora 是类似这种效果吗?我最近在做的社区项目中对编辑器也有很多样的要求,如果你愿意等的话我会专门抽空研究一下。

对 u1411001432 回复

是这样的,调用 mathjax 写公式很容易,head 标签里面加上那段 js 代码就可以了,但是解决 latex 和 markdown 语法冲突的问题就很麻烦。目前最好的方法还是调用 pandoc。我感觉用 ruby 的 ruby-pandoc 库,替换到前面 huacnlee 提到的那个代码就可以。

还有就是这个框架每次编辑、回复、或者打开之前的页面都要手动刷新才会显示数学公式,也很头疼。

如果您也愿意解决这个问题就太好了,方便的话可以加我微信 pkumathzhao 讨论。

Trix 的体验就很好

如果用户群体不是程序员,使用 MD 文本编辑器可能不太友好吧?

你可以替换掉 MD 编辑器,支持 mathjax 的编辑器有很多,改动也不大。

对 losingle 回复
  1. md 学习成本比 latex 低多了,所以友好度其实不是问题 (能屏蔽掉一些临时抱佛脚发帖的小白用户挺好的)。

  2. trix 这个编辑器支持 latex 吗?我看你的图片里的输入好像类似 mathtype 啊?支持 latex 是硬要求。因为有一些连分式、矩阵、cases 环境等等用普通的数学公式编辑器很麻烦。

  3. 请问我是不是应该 fork 一份 homeland 项目,在这个 fork 的 副本里面修改,然后把 homeland-docker 里的源设置为 fork 的副本?

@huacnlee 我不知道这是不是一个 bug:在 homeland 的 md 格式里面给图片添加超链接:

[![](img_url)](link_url)

点击图片的结果是查看大图,而不是跳转到链接处。

@zemora 谢谢你提供的思路,我试了一下,其实解决语法冲突并不麻烦,有现成的方案. 我测试是可行的:

会被渲染成:

简单的说就是在 markdown 中输入 $..(数学公式)...$ 不换行显示公式, $$..(数学公式)..$$ 单独一行显示公式,其他的 markdown 语法不受影响照常使用,也不需要调用复杂的 pandoc。

我随机抽取了 latex 中的很多数学符号, 基本都可以正常显示。

当然缺点也很明显,这个不是 ruby/rails 的解决方案。

对 u1411001432 回复

不,你这个方法只对最基本的符号和简单的表达式有效,你可以试试显示 matrix, array 环境里面的换行 "\",我这里输入的是两个 "\",但是默认的 markdown 解释器会转义为单个的 "\",所以你只能看到一个。

对 losingle 回复

太棒了!它是可以兼容 latex 的!但是怎么替换掉 homeland 里的编辑器呢?我不懂 ruby,求告知详细一点的操作方式 ...


我发现它很合适,还能跳转到注释超链接,快,快教教我怎么整合到 homeland-docker 里面去 😄


我看它可以作为一个 js 库使用,是不是我应该在服务器上 npm install 这个库,然后在 ruby 里面调用它?


继续追问:homeland 每次修改或者打开上次的页面以后要刷新才能渲染数学公式,这个在哪里改?

@huacnlee 再打扰一下,我找了半天,也没看到 homeland-docker 是在哪里配置的 homeland 的下载源?就那几个文件,没看见有 github 这个个字符串 ...

对 zemora 回复

替换掉原有的 MD 编辑器,还是非常麻烦的,stackedit 是一个独立的 web app,替换 homeland 富文本编辑器,可能流程都会要改变

嵌入你得用这个 https://github.com/benweet/stackedit.js

继续追问:homeland 每次修改或者打开上次的页面以后要刷新才能渲染数学公式,这个在哪里改?

你要把渲染公式的 js 库加入才行。

17 楼 已删除
对 losingle 回复

能麻烦您详细解释一下怎么操作吗?

我在 head 标签里面加入 https://benweet.github.io/stackedit.js/ 中说的

<script src="https://unpkg.com/[email protected]/docs/lib/stackedit.min.js"></script>

是不行的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号