本文提供的PHPCMS双语切换修改方法仅适用于生成静态页面网站的方式
一、解析二级域名来切换双语
解析二级域名如果主机支持可以二级域名绑定子目录,也可以用使用.htaccess来做重定向(适用于Apache服务器)
.htaccess 代码 放入根目录
1
2
3
4
5
6
7
8
|
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.)?www.phpcmsx.com/cn/$ RewriteCond %{REQUEST_URI} !^/cn/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /html/en/$1 RewriteCond %{HTTP_HOST} ^(www.)?www.phpcmsx.com/cn/$ RewriteRule ^(/)?$ /cn/index.html [L] |
二、建立根目录来切换双语
建立根目录:我们需要做的就是在caches/configs/system.php中将html_root这句更改为
‘html_root’ => ”,//生成静态文件路径
后台站点管理中格式如下
Siteid 站点名 站点目录 站点域名 绑定目录 管理操作
1 英文版 http://www.phpcmsx.com/ / 修改 | 删除
2 中文版 cn http://www.phpcmsx.com/cn/ /cn 修改 | 删除
做好这些基本上就可以实现双语并切换了。但还有个问题出现了,上传的图片怎么更新都无法打开,因为我们上传附件时的URL地址并不是我们填写的那个http://www.phpcmsx.com/cn/地址 都是以默认http://www.phpcmsx..com/ 来存储。这里我们需要修改一个。
找到以下路径中 /phpcms/modules/content/classes/ url.class.php文件
定位到83行的样子 找到以下代码
1
|
$url_arr [0] = WEB_PATH == '/' ? $match_url . $html_root . '/' . $urls : $match_url .rtrim(WEB_PATH, '/' ). $html_root . '/' . $urls ; |
将他替换为
1
2
3
4
|
$this ->sitedb = pc_base::load_model( 'site_model' ); $siteid =param::get_cookie( 'siteid' ); $siteinfo = $this ->sitedb->get_one( array ( 'siteid' => $siteid )); $url_arr [0] = $siteinfo [ 'domain' ]. $urls ; |
以上搞好后,现在我们需要处理分页的路径问题
找到以下路径/phpcms/libs/functions/中的global.func.php
定位在715行 或者找到以下代码
1
|
$url = str_replace ( array ( 'http://' , '//' , '~' ), array ( '~' , '/' , 'http://' ), $url ); |
在这句代码下面加一句
1
2
3
4
5
6
7
8
9
10
11
|
$siteid =param::get_cookie( 'siteid' ); $urlq = substr ( $url ,-4); //这里主要针对后台内容分页 因为会重复主URL地址 if ( $siteid == 1){ if ( $urlq == "html" ){ $url = "http://www.phpcmsx.com/" . $url ; } } else { if ( $urlq == "html" ){ $url = "http://www.phpcmsx.com/cn/" . $url ; } } |
将上面的绝对地址替换为你的地址即可!
保存,现在试试是否OK了!
评论0