PHPCMS V9要做双语,很多同学都是迷茫的,在此特地分享我的双语制作步辶 我这种模式是把两个站点都改为HTML静态模式才可以实现

双语切换可分为两种模式:

1、解析二级域名来切换双语

解析二级域名如果主机支持可以二级域名绑定子目录,也可以用使用.htaccess来做重定向(适用于Apache服务器)

.htaccess 代码 放入根目录

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www.)?www.abc.com/cn/$

RewriteCond %{REQUEST_URI} !^/cn/

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /html/en/$1

RewriteCond %{HTTP_HOST} ^(www.)?www.abc.com/cn/$

RewriteRule ^(/)?$ /cn/index.html [L]

2、建立根目录来切换双语

a/建立根目录我们需要做的就是在caches/configs/system.php中将html_root这句更改为'html_root' => '',//生成静态文件路径

b/后台站点管理中格式如下

Siteid站点名站点目录站点域名                                域名绑定目录管理操作

1        英文版       http://www.abc.com/    /      修改 | 删除

2        中文版  cn       http://www.abc.com/cn//cn      修改 | 删除

做好这些基本上就可以实现双语并切换了。但还有个问题出现了,上传的图片怎么更新都无法打开,因为我们上传附件时的URL地址并不是我们填写的那个http://www.abc.com/cn/地址 都是以默认http://www.abc.com/  来存储。这里我们需要修改一个。找到以下路径中 /phpcms/modules/content/classes/ url.class.php文件

定位到83行的样子 找到以下代码

$url_arr[0] = WEB_PATH == '/' ? $match_url.$html_root.'/'.$urls : $match_url.rtrim(WEB_PATH,'/').$html_root.'/'.$urls;

将他替换为

$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行  或者找到以下代码

$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);

在这句代码下面加一句

$siteid=param::get_cookie('siteid');

$urlq= substr($url,-4); //这里主要针对后台内容分页 因为会重复主URL地址

if($siteid == 1){

if($urlq=="html"){

$url="http://www.abc.com/".$url;

}

}else{

if($urlq=="html"){

$url="http://www.abc.com/cn/".$url;

}

}

将上面的绝对地址替换为你的地址即可!

保存,现在试试是否OK了!|

以上只针对静态生成的页面,请知悉!

摘自:http://jingyan.baidu.com/article/aa6a2c14d68c7a0d4c19c4c8.html

最新文章

  1. c 网络与套接字socket
  2. Webform(七)——内置对象(Session、Application)和Repeater的Command操作
  3. Web前端开发规范手册
  4. Scala教程
  5. ImageLoader介绍2
  6. 3.Sqrt(x)
  7. Windows-007-进程相关命令(netstat、tasklist、taskkill、tskill)实战实例图文详解
  8. 华为面试题——约瑟夫问题的C++简单实现(循环链表)
  9. EDM营销算法:python自动批量发邮件
  10. Thread .join 的用法一例
  11. find your present (2)
  12. ubuntu 基本操作(1)
  13. Ouath协议
  14. UNIX环境高级编程——system V消息队列
  15. PhpStorm+xdebug调试——更新
  16. 【洛谷P3810】陌上花开
  17. mysql 根据一张表更新另一张表
  18. 【HDU5126】 stars k-d树
  19. servlet常用操作
  20. Exception in thread main java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFacto

热门文章

  1. Df- Linux必学的60个命令
  2. github的账号密码 redis windows版连接方式
  3. Html 重要单词归纳
  4. MySQL时间格式转换
  5. Chapter 2 栈和队列
  6. Hibernate-概述-搭建-测试-配置详解
  7. springmvc:常用注解
  8. Leetcode153. Find Minimum in Rotated Sorted Array寻找旋转排序数组中最小值
  9. 【vue】imitate-beautiful-thing
  10. linux下C++遍历文件夹下的全部文件;Windows/Linux下C++批量修改文件名,批量删除文件