好吧,我必须说结果并不符合我的预期。几乎每个开发者都有“他们自己的”这种方式去做这件事,没有一个单一的例子使用了相同的方法或方法,而且我看得越多,就越对这方面感到困惑。我不敢想象一个对Xoops和PHP了解不多的人会想些什么,我真的非常害怕。
问题源于目前实际可用的所有不同的编辑器,以及没有人费心去咨询彼此对于如何统一和兼容整个问题的最佳方法(包括我本人)的情况,除了DJ之外,对他的努力也表示敬意。
对我来说,Xoops Editors 应该成为所有开发者的标准惯例,如果用户需要一个专业的编辑器,那么应该寻找执行这些任务的开发者,并且用户应该自己安装这些编辑器。
无论如何,回到Xoops Editors的问题。最初,这个类是为Xoops 2.2编写的,而不是2.016分支,这是所有开发者面临问题的所在。如果你查看Xoops 2.2包,特别是Xoops Editors类,并将其与DJ公开的类进行比较,它们之间有一些差异;主要是在2.2版本中包含而在Xoops Editors包中缺失的文件。
在sampleform.php示例中,说明了将此类添加到自己的模块的方法以下内容
// 为编辑器设置选项
// 必须配置
$options['name'] ='required_element';
$options['value'] = empty($_REQUEST['message'])? "" : $_REQUEST['message'];
// 可选配置
$options['rows'] = 25; // 默认值 = 5
$options['cols'] = 60; // 默认值 = 50
$options['width'] = '100%'; // 默认值 = 100%
$options['height'] = '400px'; // 默认值 = 400px
 ;“textarea”:如果使用名为 $editor 的选择编辑器无法创建,则将使用 "textarea" 编辑器
 ;如果没有设置 $onFailure,则将使用第一个可用的编辑器
 ;如果 dohtml 被禁用,则将 $noHtml 设置为 true
$sample_form->addElement(new XoopsFormEditor(_MD_MESSAGEC, $editor, $editor_configs, $nohtml = false, $onfailure = "textarea"), true);
然而,如果在 2.018+ 分支上这样做,我会遇到以下错误
引用
致命错误:在 'blah blah' 中找不到类 'XoopsFormEditor'
这一点是可以预料的。因为 XoopsForm 类中根本就没有包含这个类的 'hook'。当然,我可以在调用这条语句之前添加以下行
require_once XOOPS_ROOT_PATH.'./class/xoops_editor.php';
引用
$sample_form->addElement(new XoopsFormEditor(_MD_MESSAGEC, $editor, $editor_configs, $nohtml = false, $onfailure = "textarea"), true);
但实际上我们不需要这样做。如果 XoopsForm 类需要 XoopsEditor 正确工作,那么我们应在 XoopsForm 类中已经具备这些机制,而不必开发者担心额外的代码行以使其工作。XoopsForm 类应该处理这个问题。
因此请注意,XoopsEditor 类最初是为 Xoops 2.20编写的,Xoops 编辑器将按上述方式正常工作,但我希望它在 Xoops 2.18+ 版本上也能正常工作,而无需添加大量的代码来破坏兼容性。
让我们以新闻模块中的一个例子来看,如果这个类是针对 2.00 和 2.20 分支编写的,赫维的补救措施就不需要了。
引用
包含文件 XOOPS_ROOT_PATH . '/ class/xoopsform/formselecteditor.php';
然后将上述文件从2.20版本复制到您使用的2.00分支中。
希望DJ会把这些包含在他的优秀的XoopsEditor类中,开发者开始使用上述方法在自己的模块中包含编辑器,恢复一些一致性并减少Xoops中兼容性问题的影响。
希望这能稍微帮助到每个人。