网站知识您当前的位置:首页 > 新闻资讯 > 网站知识 >

phpcms文章内容页如何自定义url

发布时间:2024-12-11   作者:洛阳网站建设   点击:

本教程是根据网上的教程做的简单调整

1、添加字段
洛阳网站建设
内容-模型管理-选择你要修改的模型,一般是文章模型,然后是字段管理,添加字段
作为主表字段,选择 是,非常重要,否则在批量生成url中会无法生成自定义字段
字段名为prefix 不建议修改,因为要跟后面的代码关联起来(为什么网上的所有教程都是用的prefix字段么?因为生成url的方法public function show($id, $page = 0, $catid = 0, $time = 0, $prefix = '',$data = '',$action = 'edit',$upgrade = 0)中就有一个prefix字段,默认我们是用不到的,闲着也是闲着,正好我们可以使用此字段,这样就不需要改这个方法了)
字段别名为 html文件名 ,这个随意,好记即可
值唯一选 是,

2、.phpcms\modules\content\classes\url.class.php
查找:$day = date('d',$time);(约第67行)
在其下面增加以下代码:

  1. $tempid = $id;//赋值给临时id 
  2. if($content_ishtml) { 
  3.     if($prefix) { 
  4.         $prefix = strtolower(str_replace(" ","-",$prefix));//空格用-代替并小写 
  5.         $tempid = $prefix; 
  6.     } 

再找到代码

  1. $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule); 

改为:

  1. $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$tempid,$page),$urlrule);//$id改成$tempid; 


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.发布管理的“批量更新内容页”,它又包含了选择模型更新和选择栏目更新


最后一步:
修改增加是否唯一判断:(用了我的校验text字段是否唯一的方法之后,此步骤改不改都行)
我新加的自定义字段,设置了判断唯一值。但是当我不想填写这个字段时,他也提示 重复。所以我想有没有办法让他判断,只有在非空值时才判断唯一值?

打开 /phpcms/modules/content/fields/content_input.class.php

查找

if($this->fields[$field]['isunique'] && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage($name.L('the_value_must_not_repeat'));

替换成

if($this->fields[$field]['isunique'] && $value && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage($name.L('the_value_must_not_repeat'));

网站关键词: phpcms
  • 添加微信好友

  • 扫一扫访问手机网站

  • 在线客服
  • 技术支持
  • 售后服务
  • 微信号:15037966801