phpcms站群子站内容页静态url不正确解决方法

发表时间
评论 没有

这几天做一个项目,不复杂,一切都很顺利。后来客户要求再增加个英文版网站,于是用子站来实现。也很简单,相当于把原站复制一遍,文字改成英文即可。子站静态生成路径为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;
		}

将这一段删除或注释掉。至此算是解决了这个问题。

作者
分类 网站建设

评论

本文评论功能已关闭。

← 较早的 较新的 →

相关文章