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

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

我想基于 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 库加入才行。

18楼 已删除
losingle 回复

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

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

<script src="https://unpkg.com/stackedit-js@1.0.7/docs/lib/stackedit.min.js"></script>

是不行的。

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