A-A+

PHPCMS V9 更改文章URL中的域名为相对路径

2019年06月02日 PHP开源系统 暂无评论 阅读 0 views 次

在做一个PHPCMS项目的时候,需要切成两份,一个是电脑版,一个是手机版,共用的是一个数据库,我们知道PHPCMS的文章数据URL链接都是完整的URL,包括了域名在内,这就给我们带来了一个麻烦,因为链接只有一个,而我们的电脑版是WWW域名,而手机版则是 M 开头的域名,所以如果直接使用标签URL的话,肯定是错误的,这个时候就需要把文章中的URL主域名给去掉。

首先考虑的方法就是批量修改数据库中的URL链接,但是文章太多,更改起来比较麻烦,所以这个方案就给去掉了,思考了一番之后,决定使用PHPCMS标签中的 str_replace 替换标签来把 URL 主域名给替换为空就可以了。

方法一:使用模板替换法。

  1. <a href="{$r[url]}" target="_blank">{$r[title]}</a>  
  2. //替换成以下代码  
  3. <a href="{str_replace(siteurl($siteid),'',$r[url])}" target="_blank">{$r[title]}</a>  
  4. //或  
  5. <a href="/{str_replace(APP_PATH,'',$r[url])}" target="_blank">{$r[title]}</a>  

这种方法的好处就是不经过修改PHPCMS的核心文章,仅使用了一个替换函数就可以了,不影响后期PHPCMS的升级问题,也不修改数据库中URL字段内容,这也是夏日博客所推荐的方法。

方法二:一步到位修改核心文件。

我们知道URL文章链接是在添加内容,修改内容,和批量更新的时候才会添加上去的,所以在这个源头就给去掉,就可以一步到位去掉URL主域名了。

1、删除添加文章时增加的域名URL

路径:/phpcms/model/content_model.class.php 第103行左右

  1. $this->update(array('url'=>$urls[0]),array('id'=>$id));  
  2. //替换为下面代码  
  3. $this->update(array('url'=>$urls[1]),array('id'=>$id));  

2、删除编辑文章时的URL中域名

路径:/phpcms/model/content_model.class.php 第289行左右

  1. $systeminfo['url'] = $urls[0];  
  2. //替换为下面代码  
  3. $systeminfo['url'] = $urls[1];  

3、批量更新URL中域名

路径:/phpcms/modules/content/create_html.php 第193行左右

  1. $url = $urls[0];  
  2. //替换为下面代码  
  3. $url = $urls[1];  

这种方法是比较暴力的,但也是一步到位的方法,经过这样的修改,数据库URL里面已经不包含 URL 的主域名了,比如http://www.xiariboke.net已经去掉了,但这种方法修改的是PHPCMS V9的核心文件,所以将来可能会对程序升级造成一定的影响。

标签:

给我留言