怎样修改phocagallery的详细显示窗口里显示格式 (1) 作者 sun0632
请教Hawkhost.com主机附加域的设置 (7) 作者 mythsky
如何修改首页flash动画的默认链接 (4) 作者 lmiaomiao
SOBI2 for J1.5 分类信息发布组件语言问题 (3) 作者 白建鹏
上載不了tinymce3.3,請各位高手幫忙 (1) 作者 白建鹏
Abivia Redaction 插件滤除phoca gallery 版权,但是刷新一下页面又出来 (16) 作者 mymyhope
phoca gallery 的thumbnail 的重建功能为什么大小不一 (1) 作者 hyj22hyj
请问joomla如何对访问单元设IP限制,如何导入文章 (5) 作者 白建鹏
joomla1.5做的企业网站星谷科技 (9) 作者 vensae
如何在组件中触发插件plugin (2) 作者 langhuayou
SMF论坛:自掘坟墓的愚蠢设计 |
|
| 作者: 白建鹏 | |
| 2007-04-18 | |
|
自从本站发表了《应用JSMF桥接器安装SMF论坛》文章之后,很多[[Joomla]]新手在安装论坛时都倾向选择使用该方法来挂接SMF论坛到Joomla。这其中除了JSMF桥接器设计非常合理之外,还有一个理由就是:Joomla官方论坛就是采用[[SMF]]架设的。我也曾经感到很惊喜:没有想到Joomla和SMF可以桥接得这么完美,运行如此流畅。但是,随着对SMF的了解加深,我逐渐意识到SMF存在一些致命的设计缺陷,足以把SMF引向灭亡。因此,SMF在我眼里就成了自掘坟墓(Self-made Fatality)的缩写。
我首先解释一下,我认为SMF论坛在很多方面都是非常优秀的。大家看看很多著名Joomla网站的论坛几乎都是SMF做的。它允许添加多个附件,所粘贴图片可以自动缩放等等,都是论坛很需要的功能,而作为Joomla唯一论坛组件的JoomlaBoard直到现在还不能满足这两个最基本的需求。SMF还能轻松更换论坛外观模板,使得论坛与Joomla主站的协调统一不那么困难。 那么我说的“愚蠢设计”到底指什么?当你安装过SMF的外挂(modification,简称[[mod]])之后,你就能明白我的意思——SMF对于mod的接口设计是最最愚蠢的! 其愚蠢之处在于:他们的mod接口在论坛的功能(function)与外观模板(theme)之间竟然有千丝万缕的联系,这就使得我们更换模板时绝对会影响到mod的功能!SMF的mod安装过程实际上是针对当前模板的若干文件的代码修改,但是很不幸,mod设计者无法预测用户会使用什么样的模板,因此,所有的mod都是针对默认模板(default)而设计的。其安装脚本里面的代码修改动作都会涉及到 /themes/default 目录下的若干文件。 甚至,在安装mod的时候你已经能够感受到这种愚蠢设计所带来的巨大痛苦:只要你使用的不是默认模板(default),那么就很可能无法安装你需要的mod。比如,有一个叫做Hide Post的mod,其功能是在发帖时设定限制,只允许达到该条件的会员看到帖子内容——例如,回复后才能看到;发帖数在10以上才能看到;经验值在20以上才能看到;等等。这是一般论坛都希望拥有的功能,而SMF本身没有这个功能。如果你使用了其他模板,那么安装之后看不到任何效果——因为该mod安装时只针对default模板修改代码! 当我仔细浏览SMF官方网站的外挂库时,我的兴奋和喜悦与时俱进。很多mod都给论坛增加了新奇而又适用的功能:比如在论坛插入视频播放;在论坛增加RSS;在每个版块的话题列表上,发帖人名字旁边同时显示头像;强制访客在注册时选择头像;在论坛的每个话题首帖下方插播[[Google Adsense 广告]];强制注册时选择性别;允许在签名中使用图像;会员奖励制度;用[[Geshi]]风格的代码框替代默认的代码引用框;等等。 可是,当我回头看看,我的论坛由于使用了非默认模板而无法享用任何一个mod时,我无限沮丧。在我当初选择SMF时,我绝对没有想到将来会因为我选择某个模板而导致无法安装其他外挂! 曾经记得有人说[[Web 2.0]]的基本要求然是网站的功能与外观分离,随时改变外观皮肤绝对不会影响其功能的运行。我觉得这种说法非常人性化:就像我们换件衣服,人还是那个人。可是SMF的设计是:你换了件衣服可能就堵住了嘴巴,没法吃饭了! Sh!T ! 更让人哭笑不得的是,当我在SMF官方论坛发帖提醒他们这样的设计非常不明智,趁早大刀阔斧修改程序时,竟然有若干铁杆SMF迷坚决不同意我的说法!他们的理由是:所有SMF的mod都可以通过手动修改代码安装在非默认模板上,因为每个mod的安装[[脚本]]里面已经写明白要针对哪个文件修改或者添加哪一段代码。他们甚至讥笑我:你不就是懒得去修改代码么? 没错!如果用Notepad++ 这样的文本编辑器打开某个mod的安装文件(.mod 或者 .xml 格式),就能清楚看到里面定义了针对哪个文件进行什么样的代码编辑动作,有的是插入(add)新代码,有的替换(replace)旧代码。根据这些指令手动修改对应文件也能实现mod的安装。我曾经专门研究了一下午,学会了如何手动修改代码来安装一个mod。但是,最后我醒悟了:这难道就是我所期望的生活吗?安装一个mod都要如此费神,要这个鸟论坛干什么?从另一个角度讲,我确实比较懒。但我只是一个论坛用户,没有必要成为SMF专家。我不想知道某个mod修改了哪些代码,我只想在5分钟之内安装成功并且看到它给我带来我需要的功能! phpbb也是一个非常好的免费论坛程序,并且是开源的。phpbb也有很多mod,超过500个!如果安装齐全,甚至可以单纯依靠phpbb建立起一个完整网站,拥有文章系统和图库等等功能。遗憾的是,目前对于phpbb与Joomla的桥接还没有满意的程序,我见过一个免费的桥接器,但是它只针对[[phpbb Przemo]]增强版,而该版本的phpbb没有中文语言包。 我多罗嗦两句:希望所有设计程序的编程高手能够把“人性化”再重视一些。在[[PC World]]杂志评选的2006年IT业界100强产品中,[[Ubuntu]]被评为最佳操作系统。Ubuntu是什么?不就是一个[[Linux]]系统吗?没错,这个免费的Linux系统的优势在于,它在安装过程中能够自动识别绝大多数硬件,包括网络硬件,当你安装完毕,第一次进入系统就能听到悦耳的开机音乐,如果你的电脑通过[[局域网]]连接Internet,你直接打开浏览器就能进入web世界!回想起3年前我安装[[Red Hat]]时的痛苦经历,今天早上我10分钟安装完毕Ubuntu并且享受到自动驱动的体验简直就像在天堂! 可是现在,SMF这样一个小小的论坛程序,竟然把安装外挂这件事搞得玄而又玄,我毫不客气地讲:当初设计这个外挂接口的程序员真TMD是个傻A ! 我如此愤怒不仅仅因为安装一个mod需要手动修改代码,最重要的是因为这种接口设计从根本上就是错误的。我们在进一步分析:由于散布在世界各地的mod开发人员并不知道其他某个mod在安装时需要修改哪个文件的哪一行代码,那么就有可能发生这种悲剧:张三开发的mod需要修改的那段代码也许被Mike或者Tom开发的另一个mod已经修改过了——假如用户先安装了后者的话。当该用户想要安装张三的mod时,程序会报告:找不到要修改的代码,因此无法安装。请注意,在这种情况下,即使你仍然在使用default模板,也无济于事。 不要以为我这是凭空想象,我已经体验过了:当我用“手动安装”的方法连续安装8个mod时,其中某一个所要求替换的代码我已经在源文件中找不到了,很明显已经被前面安装的某个mod早就替换掉了!这样的故事还会发生,并且随着SMF的mod越来越多,最后这种“撞车”的几率会越来越大!还有一点我要提醒你:手动修改之前,最好备份源文件。当我在安装某个mod的中途进行不下去的时候,我发现我也无法“撤销”这个mod了!最终导致我的论坛成了畸形儿:现在论坛的头像不能显示,帖子中的图片点击之后变成叉叉,我无法引用别人的帖子!鉴于我几乎等于零的编程知识,这将意味着我这个论坛会一直这么带病工作下去。难道我不能说:SMF被自己的外挂(mod)杀掉了! 或许有人说:“哎呀呀,不就是几个mod吗?SMF的功能已经够强大了,我不需要安装那些mod”。那么,请问:这些mod真的不需要吗?如果你能忍受一个完全不安装任何mod的SMF,为何不直接安装 JoomlaBoard ?后者是真正的组件,可以完美整合。 或者有人说:“没那么严重吧?手动安装mod也不是很复杂,只是对于普通用户来说难了点”。呵呵,说这话的人估计已经忘记了,Joomla的出现正是为了解决“易用性”的问题,把以往非常复杂的建站过程简化到如同搭积木那么简单。现在,你要求我们去手动修改代码安装一个mod,那么何不直接把mod用.txt 文件编写,为何还要费力去做一个安装包?更重要的是,上面已经说过,除了“易用性”,这种外挂接口的设计还错在不应该把程序的核心(Core)与皮肤(Skin)搅在一起。我想任何一个懂一点程序设计的人都能看出这是多么愚蠢的设计。 我奉劝还在迷恋SMF的用户,如果你要在Joomla环境下安装论坛,最好还是选择JoomlaBoard论坛组件。虽然JB的功能还比较弱,但它是一个标准组件,它没有SMF那么强大,同时也没有SMF那么痛苦。 同时我也澄清一下,我撰写[[JSMF]]的文章并非表示SMF是最好的论坛,只是说明可以通过JSMF桥接器使得SMF与[[Joomla]]无缝[[整合]]。假如你确实喜欢SMF,那么我建议你至少在安装SMF之后不要使用其他模板,老老实实地使用default模板。这样,你在未来某一天想要安装一个mod时才不至于像我这么痛苦。 |
| < 上一篇 | 下一篇 > |
|---|