一、使用步骤
1、将下面函数放入e/class/userfun.php文件尾部?>代码之前
function dp_dec($classid,$id){
global $class_r;
$tid=$class_r[$classid]['tid'];
$in=strlen($tid).$tid.$id;
$d=62;
$dict=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','','x','y','z',
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$re='';
do{
$y=$in%$d;
$re=$dict[$y].$re;
$in=floor($in/$d);
}while($in>0);
return $re;
}
2、在e/class/functions.php文件中搜索[filename]==2
(1)将代码:
$filename=$class_r[$classid][filename_qz].md5(uniqid(microtime()));
前加//注释掉,或直接删掉。
(2)换成如下代码:
$filename=dp_dec($classid,$id);
3、设置要使用此功能的栏目,将 “内容页文件命名形式” 修改为 md5()
二、常见问题
1、影响以前的网址吗?
答:不影响
2、效率怎么样?
答:影响忽略不计
3、如何将老网址也换成短网址?
答:自己写批量处理老信息的代码,或者客服..
4、帝国CMS升级后怎么办?
答:按照上面说明再改一次就行了
5、编码原理是什么?
答:帝国cms的信息全局id是唯一的,编码方式为1+数据表id(5位)+信息id(10位),合计16位。我们这里针对这个编码进行了压缩。方法是:
去掉开始的1,第一位表示表id的位数,接着为表id,剩余的为信息id。
假定全局id为1 00056 0000012345,则压缩后的编码为25612345。容易证明这种编码可逆的,不会发生碰撞。
压缩编码后,转换为62进制(26个小英文字母+26个大写英文字母+10个数字为基数集)的表示,就是我们需要的短网址。