这几天做一个项目,不复杂,一切都很顺利。后来客户要求再增加个英文版网站,于是用子站来实现。也很简单,相当于把原站复制一遍,文字改成英文即可。子站静态生成路径为www.floverow.com/html/en/,太长了不好看。按照网上的资料修改配置文件中 html_root=''
,这时子站的生成路径就变成www.floverow.com/en/。这时发现,列表页中的链接打不开,仔细一看,链接中少了en/。
找到/phpcms/modules/content/classes/url.class.php,在末尾的 }
前加上
private function get_sitehtmlroot($siteid){
$db = pc_base::load_model('site_model');
$r = $db->get_one(array('siteid'=>$siteid), '`dirname`');
return $r;
}
找到 public function show($id, $page = 0, $catid = 0, $time = 0, $prefix = '',$data = '',$action = 'edit',$upgrade = 0)
内,约第74行的
$html_root = $this->html_root;
改为
if(get_siteid()>1){
$html_root = $this->get_sitehtmlroot(get_siteid());
if ($html_root){
$html_root = '/'.$html_root['dirname'];
}else{
$html_root = '';
}
}else{
$html_root = $this->html_root;
}
批量更新url后路径正确了。然后不出意外,批量更新内容页后内容页的生成路径又不对了,重复了一遍en。
打开/phpcms/modules/content/classes/html.class.php,找到 public function show($file, $data = '', $array_merge = 1,$action = 'add',$upgrade = 0)
,大约第55行的
if($this->siteid!=1) {
$site_dir = $this->sitelist[$this->siteid]['dirname'];
$file = $this->html_root.'/'.$site_dir.$file;
}
将这一段删除或注释掉。至此算是解决了这个问题。
评论
本文评论功能已关闭。