大家都知道静态页面的好处多多,既有利于抓取收录而且打开速度也比较快,节省服务器CPU的时间,因此许多大型网站也进行静态化。由于dedecmsv5.7sp2版本没有提供手机端移动端网站静态生成的功能,今天青锋建站给大家分享下利用现有的织梦系统实现移动端手机端生成静态页面的功能,而且共用一套后台,可以方便的进行手机端和PC端的切换,而不是默认的手机端打开时调用数据库再生成页面。
dedecms手机端移动端网站静态化程序下载
下载码获取方式:
关注青锋建站微信公众号,关注后-在文本输入框中输入:(织梦静态化插件 、织梦手机端插件 )即可获得下载码。
试验系统版本
dedecmsv5.7sp2utf-8;(已经为大家做好修改好的脚本,下载覆盖就可以)。
达到的目标
-
后台添加一键更新手机端、更新手机端主页、更新手机端文档的功能;
-
手机端打开页面时自动跳转到手机二级域名网站对应的页面;
-
实现手机端PC端数据同步适配;
-
手机端生成静态页面;
需要修改的文件
1、对/dede/目录的修改
/dede/inc/目录下修改如下文件
inc_archives_functions.php
inc_menu.php
/dede/目录下修改如下文件
makehtml_all.php
makehtml_list_action.php
makehtml_archives_action.php
makehtml_homepage.php
config.php
/dede/目录下增加如下文件
makehtml_all_m.php
makehtml_list_action_m.php
makehtml_archives_action_m.php
makehtml_homepage_m.php
zchange_sysconfig.php
zchange_sysconfig_m.php
/dede/templets/目录下修改如下文件
makehtml_homepage.htm
/dede/templets/目录下增加如下文件
makehtml_homepage_m.htm
makehtml_all_m.htm
makehtml_list_m.htm
makehtml_archives_m.htm
2、对/include/目录的修改
/include/目录下修改如下文件
Arc.archives.class.php
/include/目录下增加如下文件
arc.archives_m.class.php
arc.listview_m.class.php
common.inc.php
程序文件使用说明与可能遇到的问题
1、下载程序目录,依次根据实现情况对文件进行覆盖。
2、打开dedecms织梦管理系统后台,点击系统菜单-系统设置-系统基本参数设置-添加新变量;添加以下两个变量。
变量名称:cfg_mbasehost;变量值:http://m.dede.com(需要根据实际的域名进行修改,例如域名为abc.com则变量值应该为http://m.abc.com) ;参数说明:手机站根网址:
变量名称:cfg_pbasehost;变量值:http://www.dede.com(需要根据实际的域名进行修改,例如域名为abc.com则变量值应该为http://www.abc.com) ;参数说明:PC端根网址:
两个变量所属的组都为“站点设置”。
3、将文章命名规则改成{typedir}/{aid}.html,这样的目录URL短而且有利于seo优化。
4、如果发布文章所用的文件名称为自定义的文件名而且是字母则可以跳过此步,如果习惯发布文章用数字当作文件名的话,需要将article_article.htm中的{dede:field name="filename" /}改成{dede:field name="id" /},主用用于跳转时使用数据同步。
5、处理图片问题,由于图片存储在/uploads/下,因此需要将m.域名.com下的图片重定向到www.域名.com下的/uploads/下。以下是代码,修改时只需将域名进行替换就可以,这里的环境为apache。
<VirtualHost *:80>
ServerAdmin admin@myhost.com
ServerName m.dede.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^m.dede.com$ [NC]
RewriteRule ^/uploads/(.*) http://www.dede.com/uploads/$1 [NC,L]
DocumentRoot "D:/DedeAMPZ/WebRoot/dede/m"
php_admin_value open_basedir "D:/DedeAMPZ/WebRoot/dede"
</VirtualHost>
##VhostEnd
<VirtualHost *:80>
ServerAdmin admin@myhost.com
ServerName www.dede.com
ServerAlias dede.com
DocumentRoot "D:/DedeAMPZ/WebRoot/dede"
php_admin_value open_basedir "D:/DedeAMPZ/WebRoot/dede"
</VirtualHost>
##VhostEnd
6、使用时,发布文章需要在PC端模式下,只需要进行更新下PC端主页就可以切换到PC端模式下。
7、下载下来的为utf-8编码的dede手机端静态化插件,如果系统是GBK,可以使用记事本另存为ANSI编码格式。
8、关于PC页面跳转到相应手机页面的代码:
index.htm首页跳转
<meta http-equiv="mobile-agent" content="format=xhtml;url={dede:global.cfg_mobileurl/}">
<script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.cfg_mobileurl/}";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>
list_article.htm:列表页跳转
<meta http-equiv="mobile-agent" content="format=xhtml;url={dede:type}[field:typelink function='str_replace("www","m","@me")' /]{/dede:type}" />
<script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:type}[field:typelink function='str_replace("www","m","@me")' /]{/dede:type}";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>
article_article.htm:文章页跳转
<meta http-equiv="mobile-agent" content="format=xhtml;url={dede:type}[field:typelink function='str_replace("www","m","@me")' /]{/dede:type}{dede:field name="filename" /}.html" />
<script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:type}[field:typelink function='str_replace("www","m","@me")' /]{/dede:type}{dede:field name="filename" /}.html";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>
9、有时打开手机版时跳转到install/index.php页面
修改/m/目录下的index.php脚本文件
if(!file_exists('http://www.de.com/data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
clearstatcache();
if(!file_exists(dirname(__FILE__) . "/../data/common.inc.php"))
{
// header('Location:install/index.php');
echo 'it is not exists';
exit();
}
10、发生生成静态化样式错误的问题:
解决方法是替换CSS样式和JS,例如替换CSS和JS文件的引入:
<link rel="stylesheet" href="assets/css/amazeui.min.css" />修改为<link rel="stylesheet" href="/assets/css/amazeui.min.css" />JS文件也是如何在最开始前加上"/"即可。
11、其他问题
其他问题可能由于缓存引起,最好退出浏览器或清除缓存来解决。
程序文件为青锋建站原创作品,禁止商用,如需转载分发,请注明出处。
转载请注明来源网址:青锋建站-http://www.sjzphp.com/webdis/dedehtml.html