用过2008版的网友都知道,内容模型在发布内容的时候可以自定义生成的HTML文件名,这个功能对于SEO来说非常有好处,但是到了V9之后却很遗憾,这个功能却没有了,现在你只要对V9进行一个小小的修改即可令V9重新拥有08版的自定义HTML文件名的功能,操作方法如下:
1、修改你需要设置的模型,添加一个字段,配置如下:
2、打开/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']);
3、打开/phpcms/modules/content/classes/url.class.php,找到代码
$day = date('d',$time);
在其下方插入
$tmp_id = $content_ishtml && $prefix ? $prefix : $id; //增加自定义HTML文件名支持
找到
$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);
修改为
$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$tmp_id,$page),$urlrule);
有的修改方法是这样的,
第一步相同,
第二步:
在phpcms/modules/content/classes/url.class.php 文件的 public function show函数,即55行的array添加$prefix查询。
$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);
修改成以下代码注意有两个,一个是{$prefix},一个是$prefix。
$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}'
,'{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);
第三步:
在url规则中使用,扩展 > URL规则管理 > 添加或修改URL规则时候添加{$prefix},例如我就添加了一个用于伪静态的url规则:
{$catdir}-{$catid}/{$prefix}-{$id}.html|{$catdir}-{$catid}/{$prefix}-{$id}-{$page}.html
因为新版的phpcms V9的show页面有catid参数,如果像我习惯使用rewrite伪静态的朋友要考虑添加
{$catid},而生成html的话无需考虑这个参数。
新闻热点
疑难解答