phpcms自定义内容页url的方法

1月 26, 2015 phpcms

内容-模型管理-选择你要修改的模型,一般是文章模型,然后是字段管理,添加字段
作为主表字段,选择 是,非常重要,否则在批量生成url中会无法生成自定义字段
字段名为prefix 不建议修改,因为要跟后面的代码关联起来
字段别名为 html文件名 ,这个随意,好记即可
值唯一选 是,你不希望2篇文章的url是同一个吧,这样就会覆盖上一篇文章
其他保持默认即可

打开/phpcms/modules/content/classes/url.class.php
大概在 67行 找到
$day = date(“d”,$time);
在其下方插入
$tmp_id = $content_ishtml && $prefix ? $prefix : $id; //增加自定义HTML文件名支持
代码大概的意思是,如果纯在字段prefix则使用该字段的值,如果不存在则直接显示文章ID
紧接着下一行的代码应该是
$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}’,'{$tmp_id}’,'{$page}’),array($categorydir,$catdir,$year,$month,$day,$catid,$tmp_id,$page),$urlrule);

第三步:在url规则中使用,扩展 > URL规则管理 > 添加或修改URL规则时候添加{$prefix},例如我就添加了一个用于伪静态的url规则:

it/product/2010/0720/1_2.html
{$categorydir}{$catdir}/{$tmp_id}_{$page}.html

添加文章,修改文文章试试。可以了吧

可是出了新的问题。在批量生成的时候获取不到{$prefix}的数据

V9系统在批量生成的时候分两个

第一个是:内容管理里下面有个“批量生成HTML”
第二个是:发布管理的“批量更新内容”他又包含了先择模型生成和不选择模型生成

所以还要改三个地方

打开在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’]);

一共有三处要替换
现在就OK了

在删除文章的时候会将所有栏目下的网页全部删除的,所以还需要把phpcms\modules\content\content.php 中的 281行修改成:
$urls = $this->url->show($id, 0, $r[‘catid’], $r[‘inputtime’], $r[‘prefix’]);

本文是 看了两个人的解决办法后结合实现的!完美版本

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注