解决pbootcms多语言窜页面的现象

1.问题复现

pbootcms多语言是通过点击带参数链接来变换cookies中lg的值控制,变换后参数消失,链接还是默认的,不管哪种语言都是同一条链接,因此分享的时候就不支持点击进去对应显示想要的语言版本网站内容。那么有什么办法解决,这边建议的方法是绑定二级域名或二开实现目录名方式切换。

这里的描述有点抽象举个例子

www.example.com

窜页面问题复现1

然后我点击en就会显示下面的图片

窜页面问题复现2

到目前为止都是正常的,但是一旦分享链接给别人就会出现窜页面的现象

窜页面问题复现3

上面还好,下面的尾部就惨不忍睹了

窜页面问题复现4

2.解决步骤

2.1通过绑定二级域名(亲测好用)

二级域名

具体步骤如下:

2.1.1解析子域名到服务地址上

2.1.2在服务器上同样的绑定一下子域名

2.1.3在数据区域,区域列表中将子域名绑定一下

2.1.4在多语言切换的地方把子域名写死就可以了

2.2直接访问带参数地址(用了伪静态后好像不怎么好用)

不推荐,试了一下,不好用

2.3修改代码+调整url命名规则

此方法由群友影清如梦提供,目测可以用,没有测过。

2.3.1修改common里的检测cookies代码,文件位置:/apps/common/HomeController.php

找到第64行代码

1
2
3
4
// 未设置语言时使用默认语言
if (! isset($_COOKIE['lg'])) {
cookie('lg', get_default_lg());
}

换成

1
2
3
4
5
6
7
8
9
10
$en = strpos($_GET@['p'],'-en');
$ps = strpos($_GET@['p'],'-sp');
setcookie();
if($en !== false){
cookie('lg', 'en');
}else if($ps !== false){
cookie('lg', 'sp');
}else{
cookie('lg','cn');
}

2.3.2把对应语言的栏目url,改成 xxx-en别名(尾巴增加对应语言版本的标识)