开发笔记📐 发现👽 人物👮 趣闻💦
PHPCMS移动版静态架构逻辑实现 手机版同步PC版

PHPCMS移动版静态架构逻辑实现 手机版同步PC版
2018-08-27 11:38:21   点击:

PHPCMS自己提供了移动版模块,但是调用不是很方便,静态功能同样需要单独实现。这里介绍一种比较简单的方法,实现动态+静态的移动端分离。

1. 在html文件夹下新建wap目录。

2. 将移动版域名解析到服务器。

3. 配置vhost,移动域名和PC域名均指向phpcms根目录。

4. 配置Rewrite规则。apache和nginx的rewrite规则请自主查询。

.htaccess可参考:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^m.deadnine.com$ [NC]
RewriteCond %{REQUEST_URI} !^/html/wap/
RewriteRule ^(.*)$ /html/wap/$1?Rewrite [L,QSA]

nginx other.conf可参考(熟悉nginx的可以使用other.conf,不熟悉的建议直接在nginx里vhost里修改移动域名的配置文件):

location /html/wap
{
}

location= /
{
 rewrite (.*)$ /index.php;
}

location /
{
rewrite (.*)html$ /html/wap$1html;
}

注意:这里不要将移动域名配置到wap目录下,这样动态路径会无法访问。

5.  接下来就是重头戏,来到phpcms/modules/content/classes目录下的html.class.php。修改该类模块主要为同步移动版的静态生成。

注意:请准备好移动版模版。本例中将移动版模版放置于 /phpcms/templates/mobile目录下

(1)  show()函数中找到

$pagefile = PHPCMS_PATH.$pagefile;
ob_start();
include template('content', $template);
$this->createhtml($pagefile);

对应修改为

$pagefile = PHPCMS_PATH.$pagefile;
$mobilepagefile = PHPCMS_PATH.'html/wap'.str_replace(PHPCMS_PATH,'',$pagefile);
ob_start();
include template('mobile', $template);
$this->createhtml($mobilepagefile);
include template('content', $template);
$this->createhtml($pagefile);

 

(2) show()函数最后找到

$file = PHPCMS_PATH.$file;
include template('content', $template);
return $this->createhtml($file);

修改为

$file = PHPCMS_PATH.$file;
$mobilefile = PHPCMS_PATH.'html/wap'.str_replace(PHPCMS_PATH,'',$file);
ob_start();
include template('mobile', $template);
$this->createhtml($mobilefile);
include template('content', $template);
return $this->createhtml($file);

 

(3) category()最后找到

ob_start();
include template('content',$template);
return $this->createhtml($file, $copyjs);

修改为

$mobilefile = PHPCMS_PATH.'html/wap'.$base_file;
ob_start();
include template('mobile',$template);
$this->createhtml($mobilefile, $copyjs);
include template('content',$template);
return $this->createhtml($file, $copyjs);

 

(4) 找到index()下的

include template('content','index',$style);
return $this->createhtml($file, 1);

修改为

$mobilefile = PHPCMS_PATH.'html/wap/index.html';
include template('mobile','index',$style);
$this->createhtml($mobilefile, 1);
include template('content','index',$style);
return $this->createhtml($file, 1);

 

注意:该方法只支持静态的模板分离,动态路径下,移动与PC版是公用模板的。如果需要区分,可以在index.php或mca模型中调整路由进行识别。

本模块初始思路和大部分源码来源于生活铺站长。

鸣谢:Lulu,Zac.Joe

静态 架构 逻辑 PHP CMS

上一篇:phpcms后台实现文章列表按点击量排序记录
下一篇:PHPCMS后台和编辑器图片上传至七牛云开发记录