基于 SuiteCRM 进行二次开发一些总结 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gouchaoer
V2EX    PHP

基于 SuiteCRM 进行二次开发一些总结

  •  
  •   gouchaoer 2020-07-18 16:16:29 +08:00 2460 次点击
    这是一个创建于 1961 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近公司需要一款 CRM (或者 ERP )系统来管理客户关系以及分发资料, 调研了 Salesforce 、SharePoint 、Dynamic 以及开源的方案之后,打算先基于开源的 SuiteCRM 先尝试开发看看效果。我也是第一次接触 CRM 管理系统,因为 SuiteCRM 是基于 PHP 写的,我写了很多 PHP 所以二次开发起来还算顺利。这里把我二次开发的一些经验和坑记录一下。

    搭建 SuiteCRM 还好,为了方便我写了一个 Dockerfile,在里面装上 nginx+fpm,然后基于 GitHub 上官方文档进行安装,这个还是比较 easy 的。接下来是流程业务问题了,我们的需求主要是给用户分发资料文档,分发的这些资料的方式有自己的一点特殊需求,然后资料文档的上线内部用户有审核机制(虽然目前看上去比较简单,但是后期可能会添加一些功能)。然后遇到的第一个难点就是熟悉 SuiteCRM 的用户权限系统,然后把这个权限系统拿来套我们自己的业务。官方的文档以及一些中文资源我也看了,看了蛮长时间的,有些功能选项我到现在还是没有搞清楚,但是基本的功能用法已经够用了。

    在二次开发的时候说说我的一点经验,因为我们只是做一点改动来满足自己的需求,所以完全没有必要去理解 SuiteCRM 的那一套框架开发方法,只需要找到渲染对应组件的地方往里面塞自己的代码逻辑就 OK 了。把 XDEBUG 单步调试打开,便 debug 便写搞起来很快。

    然后官方商店有一些付费的插件可以大幅度减轻我的工作量,我买了一个插件装上,然后去审计代码的时候发现里面全是 sql 注入漏洞,总之非常震惊。详情见:
    https://www.reddit.com/r/PHP/comments/h06fxs/find_sql_injection_where_after_paid_a_suitecrm/。最后没办法只有自己基于官方的一个 joomla 插件二次开发了,就是这个插件: https://github.com/salesagility/SuiteCRM-Portal-Joomla

    然后我又安装了一个 joomla,然后把插件装上发现功能蛮简陋的,需要做一些定制才行。后来发现可能是 SuiteCRM 版本更新了,有个函数变了但是这个插件没有更新,于是新建 Case 的时候部分信息会丢掉。我提了个 PR 给官方,见: https://github.com/salesagility/SuiteCRM/pull/8824,不过这个插件 N 年没人维护,所以有的用就不错了。由于这个 joomla 插件和 SuiteCRM 是通过 Rest API 来通信的,导致 XDEBUG 不太好调试,我最后摸索出来一个办法就是这个 Rest API 是 curl 写的,只需要在 curl 设置我本机的 fiddler 代理,就能抓到这些 http 的 api 请求了。然后用 fiddler 的重放功能触发 XDEBUG 就能很方便的调试了。

    还有就是 SuiteCRM 内部的邮件系统需要去调整很久才能满足可用的状态,有时候还比较 tricky 。
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     813 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:13 PVG 04:13 LAX 12:13 JFK 15:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86