目前见到的在线可视编辑器基本都是先加载一个页面的textarea,后来用自己的实例(instance)来replace成编辑器自己的textarea。这些在线可视编辑器实际上是调用的浏览器的编辑功能,不是在服务端执行的,是在客户端执行的js脚本。而且它们的各种整合方式无所谓,纯js整合和php整合的区别在变量的传递上,比如session值什么的。
每种在线可视编辑器有自己的上传组件,整合到cms中这个是个难度,tinymce和fck都不是太好弄。换过来想不如用自己的组件来上传,而只用编辑器提供的接口函数来操纵实例,就是所谓的外挂式整合,这样有一个好处就是不用考虑编辑器的上传和安全问题,是整个程序的安全更系统化;而且可以整合任何一种编辑器。
tinymce的接口函数是
tinyMCE.execCommand('mceInsertContent',false,vstr);
新窗口打开就加一个opener
而fck的是
FCKeditorAPI.GetInstance('newstext');
自己20多天的苦恼总算结束了。
打开一个子窗口,并且可与父窗口相互传递数据,它与window.open的最大区别就在于由ShowModalDialog打开子窗口后,父窗口将不能操作。
使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
参数说明:
sURL
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
dialogWidth: 对话框宽度。
dialogLeft: 距离桌面左的距离。
dialogTop: 离桌面上的距离。
center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no [Modal]。
scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
参数传递方法:
父窗口向子窗口传递参数采用ShowModalDialog的第2个参数即可,父窗口要获取子窗口传回的参数则可通过ShowModalDialog函数的返回值获取。
子窗口获取父窗口参数的方法为采用子窗口window对象dialogArguments属性获取,例如:
var a=window.dialogArguments;
子窗口向父窗口返回参数采用window.returnValue属性,如:
window.returnValue=1;
window.close();
将tag函数改为
function user_keylink($url)
{global $navinfor;
$keyword=$navinfor[keyboard];
$keyarray=explode(",",$keyword);
for($i=0;$i<count($keyarray);$i++)
{
echo "<a href='http://".$url."/tag/".urlencode($keyarray[$i])."\.html' target='_blank'>".$keyarray[$i]."</a> ";
}
}
注意urlencode函数,还有.htaccess自己考虑一下,网上规则多了。
公共模板变量下的变量权重问题,比如[!--temp.header--]中要加入[!--temp.sitename--]。那个[!--temp.header--]的变量排序的号要大,而[!--temp.sitename--]的号要小,后台说的那个容易理解错了。