请教:editors 类型插件与配套 content 类型插件的安装问题

为了解决诸如
如何在后台编辑器中方便地使用中文字体如“宋体”、“隶书” 这样的问题,我决定自己打造一款比较好用的编辑器。
由于本人对编程一窍不通,因此采用了“照猫画虎”的办法,通过改造一款现有的开源 Joomla 编辑器插件来实现。
目前已经取得了喜人的进展。
现在遗留一个问题:为了实现其中一个功能,需要同时安装并启用一个配套的文章内容插件(content 类型)。该插件的功能就是给页面的 部分注入 (inject)几行 CSS 和 JavaScript 调用链接。
尽管让用户通过手动修改网站模板的 index.php 文件 部分也能实现同样的目标,但是我历来都提倡“自动化”,尽量避免让用户手动修改文件;同理,虽然可以让用户分别安装这个编辑器插件(editors 类型)和内容插件(content 类型),但是我仍然希望能够将两步操作变成一步操作:用户只需要安装一个 zip 格式的插件文件即可,无需关心这个安装包进行了哪些自动设置操作。
因此,我有两个打包方向:
1、合并两个插件的安装包,使得最终文件只有一个,以“编辑器插件”的面目出现,用户安装该 zip 文件时,能够自动安装
已邀请:

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

举个例子
$script='';
if(!$addScriptVotitalyPlugin){
$addScriptVotitalyPlugin = 1;
JApplication::addCustomHeadTag($script);
}
添加就是这句JApplication::addCustomHeadTag($script);

妥协 - 不会轻易妥协的人不愿意将就的人任性自由的人总是活得比较累

赞同来自:

这样应该是一个 反向安装的方法, 就是 你先安装好 所有插件,然后在数据库导出插件数据,下面就把插件数据做成安装文件,所有文件全部写入XML安装文件里,同时卸载也是一样。说简单点就是多个插件当成一个看当成一个安装。

~~~~~~~~~ - 上帝给我的使命,就是证明你们都不是最糟糕的

赞同来自:

不是反向安装。我手头有两个完整的插件安装包,但是我希望合并为一个插件。
ufonba 给出的代码似乎比较接近了,从 addCustomHeadTag 这个字面看,也能猜出是给 HTML 代码添加 部分 tag 代码。不过说的有点太简单,我还不知道这段代码应该添加到哪个文件里面去。希望 ufonba 能详细指点一下。
我这个周末抽时间摸索一下,如果还不能成功,就放出内测版,仅供站内开发高手测试,同时希望能得到诸位指点,共同把这个新编辑器打造出来。谢谢!

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

我再详细点说明吧
$script=''; 
              JApplication::addCustomHeadTag($script);
这相就可以插入CSS文件进去
如果你想插入多个就
$script=''.'';
然后如果想插入JS也差不多,同里改就可以了

赤木@晴子 - 明月百年心

赞同来自:

往head里边添加有很多种方法...比如joe常用的字符串替换法也行...不过不推荐:(
具体有两种$css =  '/plugins/yoursplugin/scritpts/style.css';
$js =  '/plugins/yoursplugin/scritpts/yours.js';
$document =& JFactory::getDocument(&#41
$document-addStyleSheet($css&#41
$document-addScript($js'&#41

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

jackyking 说的没错!我也考虑到了过多的 CSS 和 JS 调用会减慢页面速度。
这个新功能需要在模板的 部分插入大约7、8行代码,分别调用多个 CSS 和 JS,因此给页面体积还是增加了不少。我们可以安装 joeguo 开发的 CSS 和 JS 压缩插件
来减少这个影响。
目前我是想分两步走:首先实现自动插入 head 部分调用代码;然后实现自动判断页面是否需要载入这些代码。
今天利用休息日自己摸索了几个小时,还是无法成功。我今晚简单打包一下,明天就发布内测版,下载链接将通过 PM 或 QQ 或 e-mail 告知以上各位关注此编辑器插件的高手。请大家群策群力,共同攻克这个难题。谢谢!

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

我记得原来带的tinymce编辑器是比较好用的
好长时间 没看joomla了
原来改过的一个tinymce 3的插件,也不知道放那里去了

不是本人 - no no no!

赞同来自:

感谢 dghabc 也来关注这个问题。TinyMCE 我用过,觉得不如 FCKeditor 好用。因此这次就选择 FCKeditor 作为核心了。
问题已经有了新的进展:现在只需要安装一个插件,然后手动在前台模板的 index.php 文件中插入一些代码,就能顺利工作。
需要进一步改进的是:如何让编辑器插件在安装时自动插入这些代码,而不是要求用户去手动修改 index.php ?
新版本(4月14日1点修订版)我已经重新上传,只有一个压缩包(文件比较大,请使用“通过网址安装”),无需解压。内有说明文档。
下载链接不变,请收到内测版下载地址的朋友重新下载新版本,然后提出代码修订意见。可以在此回复,也可以用 email 联系我。谢谢!

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

个人的建议就是还是分成两个插件比较好...
可以写到一个安装文档中,但是合在一个插件里边并不是很合适
syntaxhighlighter是需要在content事件中触发的,在每个页面都会加载
而editor插件类不是在每个页面都会触发的...
强行合在一起不确定会不会正确触发

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

问题已经有了新的进展:现在只需要安装一个插件,然后手动在前台模板的 index.php 文件中插入一些代码,就能顺利工作。
需要进一步改进的是:如何让编辑器插件在安装时自动插入这些代码,而不是要求用户去手动修改 index.php ?这个问题就好解决了,再做一个插件用来处理这件事情是比较容易地,附件就是用来处理该事务的一个插件。
另:根据老白的要求,PHP脚本中尽可能详细的写上了注释,嘿嘿,虽然没几行代码

跑堂小2 - 冇钱;冇房子;冇成就。要吃饭;要住宿;要消费

赞同来自:

晕,hoping兄好快。
我凌晨收到代码,刚才看了一下,发现俺以前似乎做过类似的,改了改正好拿过了。
不同的是,俺是直接改的jck.php
line 189-line 238为新增的
根据是否存在代码引用及是否已经有代码,确定是否需要额外附加代码。
请老白或者哪一位将js文件拼合压缩后再将这个文件简化一些。

妥协 - 不会轻易妥协的人不愿意将就的人任性自由的人总是活得比较累

赞同来自:

个人的建议就是还是分成两个插件比较好...
如果从技术上无法实现一个插件解决,我可以很方便地退回“两个插件”的解决方案,因为这两个插件都是现成的,人家已经做得很好了。
但是,我宁可相信:凡事皆有可能。如果我们将两个插件合并,对于终端用户来说,将是非常方便的。所以,请大家放手一试,如果实在解决不了,再退回起点。这个问题就好解决了,再做一个插件用来处理这件事情是比较容易地,附件就是用来处理该事务的一个插件。
汗!本来就是要将两个插件合并,现在 hoping 反倒拆分成两个插件了,呵呵。可能我没有给你解释清楚。在本帖下面我会再次解释一下我的创意。俺是直接改的jck.php
虽然我还没有测试,但是我认为 kolidon 这个思路跟我差不多,一定要想方设法在 JCK 编辑器上修改代码,而不能借助于另一个内容插件。
OK,为了让各位高手有一个明确的目标,我重新梳理一下:
各位能够下载到的新版本已经是一个插件加上一段代码,这段代码如果能自动插入到模板的 index.php 就完成了初步合并。
接下来的问题是:用户可能会换模板;某个文章中可能没有插入程序代码,或者文章系统以外的页面上几乎不需要加载这些 JS,如何让插件自动判断?
我的想法是:最好不要修改 jck.php 文件,因为这个编辑器插入源代码的那个弹出对话框并不是 FCKeditor 本身的功能,而是一个插件。
参看: Code Syntax Highlight Plugin for FCKedito
也就是说,只有当用户在编辑器上点击那个按钮插入源代码时,才需要触发这种语法高亮系统。
因此,我建议大家在这个 syntaxhighlight 插件上动心思。
可否这样:
目前已知不管我们插入什么代码,都会在页面的 HTML 代码中生成 这样的片段,不管其它参数怎样,前面这一段总是不变。因此我觉得这个可以作为一个探测对象。
能否让这个 syntaxhighlight 插件在用户按下“确定”按钮并插入代码之后,就自动给当前页面的 部分以及 之前插入我在 readme 中提到的那些代码?如果用户没有插入代码,比如说先插入后来又删除了,那么通过自动探测 是否存在而决定是否插入这些代码。
另外,一篇文章中可能插入好几次程序代码,必须让这个插件智能一些,不能每次展示源代码它就插入一次 JS 调用,那就重复了。
除了文章系统,我们还应该考虑到,某些评论组件是允许调用系统编辑器的。因此,读者也可能会通过这个编辑器给评论内容中插入程序代码,这个插入动作仍然需要某个插件去动态探测。
所以说,这个插件的改造还是有一定难度的。如果大家觉得实现起来太困难 —— 我希望各位高手充分发挥自己的编程水平,不要轻易放弃 —— 如果最终还是不行,我们就退回起点,用两个插件来解决。
感谢各位的分享!静候佳音。

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

哦,看来是我理解错了。
既然要这样,那么可将kolidon兄的那段代码加在jck的plugin:syntaxhighlight里面就得了
嘿嘿,不过,我倒是不怎么喜欢数据库里同时存放一些重复的东东
刚看了下那个plugin的代码,似乎不大可能实现,因为它不获取jck的编辑框的内容,哪位对fck有研究可以跟进

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

刚才在尝试着修改这个JS的plugin,不保证会成功。
下面再提两点意见:
如果是在编辑器中处理:
1、无法处理SEO后的URL,可能会导致路径不对而无法获取JS及CSS文件(当然以绝对路径写入的就无谓了)
2、如果是以blog格式输出,而intro中恰好有代码的话,那么,同一页面将会有至少1个CSS及JS引用,导致页面内重复代码过多。

追梦人 - 梦想每个人都有,但不是每个人都有勇气去坚信,我有

赞同来自:

我是按照下面的步骤测试地:
在code对应的窗体中点了OK以后,先检查一个预设值,当预设值不存在时,自动插入需要插入的代码。
这样,可以避免重复插入相同的代码。
但是这样产生的问题就是:
只有第一段code可以高亮,在插入的js以后的code不会再被此plugin处理到。
那么,换一句话说,就是必须将这段js保存在正文的最后。
这样,不修改jck似乎很难办到。
当然,如果熟悉fck的内部数据调用机制,使用此方法还是可以地。

QQ被盗了

赞同来自:

OK,如果确实需要修改 jck.php 这个文件,那么我希望能增加几个参数。
因为,这个方案的初始版本:两个插件那个方法,其中那个内容插件( Joomler's SyntaxHighlighter Plugin
)就能完成 JS 调用,并且支持同一个页面内多次展示源代码,同时它还有几个参数,例如:排除某个文章单元/类别。因为某些文章单元或类别根本不会发生展示源代码的情况,比方说新闻栏目,这样就能减少页面体积,加快载入速度。
而我现在的最终想法就是:将 JCK 编辑器与 Joomler's SyntaxHighLighter 插件融合为一个插件。如果做不到,我们可以回到同时安装这两个插件的方案去。

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

这样做还会遇到一个问题,就是JCK每打开一篇文章都 得判断一下,上一次是否已经做了code处理,或者干脆点,每篇文章都加对code的引用。
分类的排除,也会有这种情况:每篇文章都加?还是每次打开时都判断?还是在保存时判断是否已经加了CODE的引用,本次是否需要加?
每篇都加的后果就是:如果BLOG引用的话,有可能CODE会没效果。因为CODE引用的代码需要加在至少是文章的最后。
个人的观点:不推荐。

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

听 hoping 一言,恍然大悟。
而且我回头看 Joomler's SyntaxHighLighter 插件,似乎他并没有在 中添加任何代码(或许我没看清楚?)。
请 hoping 抽空研究一下 Joomler's SyntaxHighLighter 插件
,我们来决定一件事情:将这个插件与 JCK 编辑器合并为一个插件好,还是分别安装两个插件好?
如果能方便地合并,同时又完全不影响使用效果,我还是赞成合并,毕竟对用户来说少执行一次安装操作。
另外,今天再提出一个新命题:我发现 JCK 编辑器在卸载的时候,不能自动删除 plugins/editors/jck 这个目录。我在 JCK 的安装包里面也没有找到 install.php 或 uninstall.php ,是不是缺少 uninstall.php 文件造成的?能否给它添加一个“卸载时自动删除 plugins/editors/jck 目录”的功能?
我昨晚测试了 kolidon 修改的 jck.php ,似乎不能工作。不知道 kolidon 测试的结果如何?

QQ被盗了

赞同来自:

因为,这个方案的初始版本:两个插件那个方法,其中那个内容插件( Joomler's SyntaxHighlighter Plugin
)就能完成 JS 调用已经看过了,它也是通过content的plugin来实现地,当然可以插入代码,插入多次调用了。
顺便公开一下我站上使用的GeSHI,呵呵 对GeShi插件的一点修改

要回复问题请先登录注册