PHPCMS 自定义内容页HTML文件名称

序言:帮一个客户用PHPCMS做了一个网站,要自定义内容页HTML文件名称。

下面将一步一步来修改程序文件,一共涉及到model.sql、url.class.php、html.class.php这三个文件,并抓图做演示:

一、修改model.sql

打开 phpcms\modules\content\fields\model.sql,找到:

`updatetime` int(10) unsigned NOT NULL default '0',

在下面增加代码:

`prefix` char(20) NOT NULL default '',

并在文件的最后一行增加一下代码:

INSERT INTO `$table_model_field` (`modelid`, `siteid`, `field`, `name`, `tips`, `css`, `minlength`, `maxlength`, `pattern`, `errortips`, `formtype`, `setting`, `formattribute`, `unsetgroupids`, `unsetroleids`, `iscore`, `issystem`, `isunique`, `isbase`, `issearch`, `isadd`, `isfulltext`, `isposition`, `listorder`, `disabled`, `isomnipotent`) VALUES($modelid, $siteid, 'prefix', 'html文件名', '请输入生成的HTML文件名,为空将系统默认。', '', 0, 20, '/^[0-9a-z]+$/i', '', 'text', 'array (\n  ''size'' => ''20'',\n  ''defaultvalue'' => '''',\n  ''ispassword'' => ''0'',\n)', '', '', '', 0, 1, 0, 0, 0, 0, 0, 0, 56, 0, 0);

二、修改url.class.php

打开 phpcms\modules\content\classes\url.class.php,找到68行的代码:

$day = date('d',$time);

在下面增加一下代码:

 

if($content_ishtml) {
 if($prefix) {
 $cid = $id;
 $id = $prefix;
 }
 }

并且,找到下面这一段代码:

 

 
//生成静态 ,在添加文章的时候,同时生成静态,不在批量更新URL处调用
 if($content_ishtml && $data) {
 $data['id'] = $id;
 $url_arr['content_ishtml'] = 1;
 $url_arr['data'] = $data;
 }

修改第二行$data['id'] = $id; 为

$data['id'] = $cid;

将修改第三个文件html.class.php,以及新增模型字段

三、修改html.class.php

打开phpcms\modules\content\classes\html.class.php,找到代码:

$pageurls[$i] = $this->url->show($id, $i, $catid, $data['inputtime'],'','','edit',$upgrade);

修改为:

$pageurls[$i] = $this->url->show($id, $i, $catid, $data['inputtime'],$data['prefix'],'','edit',$upgrade);

到这里,修改的3个文件基本完成,需要注意的是:注意使用英文半角的引号和分号,以免产生错误!

四、模型添加prefix字段,让原有的模型显示自定义html文件名的编辑框

可以看出,在上面的修改中,已经定义了一个字段prefix当作html的文件名,但是prefix默认是没有数值的,于是需要在模型自定义字段中添加一个字段:prefix,在发表内容的时候填入自定义的html名称。

PHPCMS 自定义内容页HTML文件名称_第1张图片

具体位置:后台》内容》模型管理》文章模型(也可以是其他模型)》字段管理,添加字段:

字段类型:单行文本,作为主表字段
字段名:prefix
字段别名:html文件名
字段提示:请输入生成的HTML文件名,为空将系统默认。
文本框长度:20
数据校验正则:/^[0-9a-z]+$/i
字符长度取值范围:0 20
值唯一:否
以下全选否

备注说明:关于“数据校验正则”这一点,可以为空,这样不限定输入的自定义html名称类型,这样可以输入下划线,中线,不然只能输入字母和数字了。

本文转自:http://www.cmsyou.com/support/86_2.html


上述方法搞定了自定义html内容页文件名,在使用过程中发现了一个问题,【内容】-》【发布管理】-》【批量更新URL】,执行了这个操作,你会发现自定义的文件名,又变回原来的id文件名啦。在网上找了很久,没有解决方法,自己花了我两个小时终于解决了。

第一步:找到目录 phpcms\modules\content下的create_html.php文件  86行,156行找到下列代码

//更新URL链接
$this->urls($r['id'], $r['catid'], $r['inputtime'], $r['prefix']);

更改成:

if($r['url']){
$aurl=explode("/",$r['url']);
$burl=explode(".",$aurl[count($aurl)-1]);
$r['prefix']=$burl[0];
}
//更新URL链接
$this->urls($r['id'], $r['catid'], $r['inputtime'], $r['prefix']);


搞定,是不是很简单啊。

你可能感兴趣的:(phpcms)