1.模型添加prefix字段,让原有的模型显示自定义html文件名的编辑框
以“文章模型”为例,在该模型中添加字段:
字段类型:单行文本
作为主表字段:是(非常重要,否则在批量生成url中会无法生成自定义字段)
字段名:prefix
字段别名:html文件名(自定义)
字段提示:请输入生成的HTML文件名,为空将系统默认。(自定义)
值唯一:是(你不希望2篇文章的url是同一个吧,如果选否会覆盖上一篇文章)
其余项按需更改即可(最好保持默认)
2.phpcms\modules\content\classes\url.class.php
查找:$day = date('d',$time);(约第67行)
在其下面增加以下代码:
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;
3.phpcms\modules\content\classes\html.class.php
查找:
$pageurls[$i] = $this->url->show($id, $i, $catid, $data['inputtime'],'','','edit',$upgrade);
(约第117行)修改为:
$pageurls[$i] = $this->url->show($id, $i, $catid, $data['inputtime'],$data['prefix'],'','edit',$upgrade);
4./phpcms/modules/content/create_html.php
查找:
$urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
共有三处,批量替换成:
$urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime'],$r['prefix']);
因为phpcms生成内容页html文件共有三个地方,所以上面的替换就有三处:
a.创建或编辑内容时会生成HTML
b.“内容管理”里下面有个“批量生成HTML”按钮
c.发布管理的“批量更新内容页”,它又包含了选择模型更新和选择栏目更新
5.添加URL规则
扩展-URL规则管理-添加规则,如下图:
{$catdir}/{$id}.html|{$catdir}/{$id}_{$page}.html
然后找到需要生成静态内容页的栏目,修改-生成HTML设置-内容页URL规则 选定上面添加的规则。
6.到此就算大功告成了,赶快试试吧!
说明:该方法基于版本phpcms_v9.5.10_UTF8
已知bug:“值唯一”仅在add添加文章时起作用,在edit编辑文章时尽管文件名重复却不会提示!
补充:
if($content_ishtml) { if($prefix) { $prefix = str_replace(" ","-",$prefix);//空格用-代替 $prefix = strtolower($prefix);//大小写全部转小写 $cid = $id; $id = $prefix; } }
参考文章:
有朋自远方来...评论一下呗O(∩_∩)O