dedecms 实现两个网站调用一个数据库

近年来移动端的流量上升,让我们不得不把眼光放在移动端上,程序猿都知道dedecms的wap不中用,标签少的可怜,没有静态化的功能,想调点数据,自己写sql语句,这东东如果用。于是,半路出家的程序猿们开始做wap的站,重新搭建网站,说白了就是重新做个站。这不是想累死编辑吗?

最近发现了一些新闻源的平台,他们实现了这个功能,各种看代码,但是看不出有啥猫腻。尝试着各种不同的开源程序,帝国cms,phpcms,pccms等等,这些程序有自带的移动端模板,可是我的站都是dedecms做的,那么多数据怎么移过去,上愁了!折腾了一天终于解决了?且看具体如何做!我们具体要实现的功能是:

www.81dj.cn(作为PC站)
www.81dj.cn/wap(作为移动站)
更新内容的时候两个网站同步更新

(1)在原有程序的基础上(原来的网站,我们这里叫PC站),新建一个wap目录(这里叫移动站,也可以单独建目录),把dedecms的程序上传,安装(安装的时候修改表前缀,随便起一个表前缀,切不可覆盖原有的数据);安装完以后是一个正常的网站,修改移动站数据库的配置,common.inc.php文件中的$cfg_dbprefix = ‘dede_’;把数据表前缀改成PC站的数据表前缀,这时候,两个网站都调用的是同一个数据库。这时候进后台,你会发现,移动站的后台出现了和PC端一样的数据。同时问题也出现了,修改移动端栏目生成目录的时候,PC端的网站也跟着变了。

(2)我们在后台观察,系统——系统基本参数——Dedecms系统配置参数:都是dede_sysconfig这个数据表中。我们把这个数据表复制一份,复制成dede_sysconfig3g; 用phpmyadmin打开数据库,在sql语句里执行复制表操作:create table dede_sysconfig3g select * from dede_sysconfig,这时候数据库多出一个叫dede_sysconfig3g的表;如何让移动端的程序调用这个表的数据呢?

dedecms 实现两个网站调用一个数据库

(3)我们用DW新建站点(放整个移动端的网站),查找范围是整个当前本地站点,sysconfig替换成sysconfig3g;这时候你会发现,在移动端修改DedeCMS系统配置参数时,PC端不变了,这样就实现了两个网站调用同一数据库的数据,且生成的文章在不同的路径下;

dedecms 实现两个网站调用一个数据库

注:如果修改了文件保存目录,可以按上面的方法,把dede_arctype这个表也复制一份,dede_homepageset、dede_addonspec 这两个表也可以复制。

经过上面的处理,pc站跟手机站可以同用一个数据库了,但还有一个问题,那就是文章内图片的显示,如果定了尺寸,图片尺寸过大的话,在手机上显示就不全了,怎么办呢?

可以在插入图片时,把图片尺寸删除,然后在pc站的样式里加入一个图片最大显示尺寸(max-width:xxx),手机站样式加(max-width:100%),这样图片就会按比例显示,两边都正常了!

@ 图片路径的问题

出现问题:在主站上传到文章里的图片,在手机站里路径不对,解决方法:

1、始终在一个主站里上传图片

2、在手机站里修改一下文件:

(1)、/include/extend.func.php增加函数:

function replaceurl($newurl)
{
newurl=strreplace(src="/uploads/allimg/,src="http://www.xxx.com/uploads/allimg/,newurl=str_replace('src="/uploads/allimg/','src="http://www.xxx.com/uploads/allimg/',newurl);
return $newurl;
}

(2)、修改文章页模板:将调用文章内容的标签:{dede:field.body/}改为:{dede:field.body function=‘replaceurl(@me)’ /}

生成文章,图片显示了。