
考虑到中小型网站中Dedecms使用概率较高,今天我们特地邀请了百度站长社区版主—洪石陈来为大家做Dedecms移动适配分享。
第一步:安装Dedecms移动站点的两种方式
(1)下载新版本直接安装使用,Dedecms版本:V57SP1正式版(2015-06-18)该版本包含旧版本所没有的移动站点功能。
(2)老版本升级(仅针对增加移动站点功能),下载最新版本(注意网站编码需与原站一致),复制压缩包中以下文件到原站对应目录下:
注意:如果原站有非默认模板,如某栏目模板为/templets/defaultst_default_newshtm,可将/templets/defaultst_default_mhtm复制一份改名为list_default_news_mhtm。
即:pc端网站模板需有对应的移动端网站模板,后者文件名为前者文件名后“_m”。
安装或升级dedecms完成,此时应该就可以进行移动跳转适配了,但,dedecms20150618版本提供的移动站点功能在使用过程中发现一些问题,需要进行修改后才可正常使用,所以有了下面的dedecms修改步骤…
第二步:修改Dedecms
(1)原站如做了将DATA移到根目录外的安全设置,需修改/m/indexphp代码:
if(!file_exists(dirname(__FILE__)'//data/commonincphp'))
{
header('Location:install/indexphp');
exit();
}
将其中//data/commonincphp改为///data/commonincphp,或直接将以上5行代码删除。
(2) 移动站点首页在会第一次访问时自动生成首页静态文件,前提是/m/目录需设置为可写权限,否则将无法正常更新。之后更新首页静态文件需登陆后台手动更新:在“更新主页HTML”中将“选择主页模板”改为“default/index_mhtm”,将“主页位置”改为“/m/indexhtml”,再生成主页静态文件。
注:该版本号称“自动生成HTML版”,但默认移动站模板里却有<ahref="indexphp">的动态首页链接,需替换为<ahref="indexhtml">静态链接形式。
※如觉得使用静态页面麻烦,想将首页设置为动态浏览,可修改/m/indexphp:
$row['showmod']= isset($row['showmod']) $row['showmod'] : 0;
if ($row['showmod'] == 1)
{
$pv->SaveToHtml(dirname(__FILE__)'/indexhtml');
include(dirname(__FILE__)'/indexhtml');
exit();
}
else {
$pv->Display();
exit();
}
以上代码替换为一行:$pv->Display();
第三步:首页“图文资讯”部分的url为pc端链接,修改为移动端链接:
搜索模板/templets/default/index_mhtm中所有<a href="[field:arcurl/]"> ,替换为<ahref="viewphpaid=[field:id/]">
第四步:通用头部含有搜索框,搜索跳转至pc端搜索页面,建议删除:
在/templets/default/header_mhtm中删除以下代码:
<form class="am-topbar-form am-topbar-leftam-form-inline am-topbar-right" role="search"action="{dede:globalcfg_cmsurl/}/plus/searchphp">
<input type="hidden" name="mobile"value="1" />
<input type="hidden" name="kwtype"value="0" />
<div class="am-form-group">
<input name="q" type="text"class="am-form-field am-input-sm" placeholder="输入关键词">
</div>
<button type="submit" class="am-btnam-btn-default am-btn-sm">搜索</button>
</form>
第五步: 移动站点默认使用二级目录,但目前移动适配需要使用二级域名(前段时间是可以使用二级目录的,但目前已调整,不能再提交二级目录),所以我们要设置移动站可通过二级域名访问,解析二级域名至网站所在服务器ip,并在服务器/空间上将二级域名绑定到/m/目录。
成功设置二级域名后,通过二级域名浏览网站会发现均无法显示,原因是路径有误——路径为“/uploads/x/yjpg”
相对根目录路径形式,在pc站页面中显示正常,因为pc站域名下存在该目录,而二级域名绑定的是二级目录,其中并不存在该目录,
所以访问会返回 404错误。对此,有多种解决方案,下面提供两个思路(示例pc站:>将对>
代码如下:
<% String basepath=requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort() ;
String Path = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/"+requestgetContextPath()+"/";
String uri=requestgetRequestURI();
uri=urisubstring(urilastIndexOf("/")+1); //获得是最后的hellojsp
%>
(上例中,Path路径就是图中的)
说明:
1requestgetContextPath() 返回站点的根目录,如:‘’/demo‘’
2requestgetRealpath("/")得到的是实际的物理路径,也就是你的项目所在服务器中的路径
3requestgetScheme() 等到的是协议名称,默认是>
4requestgetServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如:localhost baiducom 等等
5requestgetServerPort() 得到的是服务器的配置文件中配置的端口号 比如 8080等等
OK,满意的话请好评!O(∩_∩)O~
首先找到include/taglib/channellibphp文件,找到59行,代码如下:
--------------------------------------------
else if($type=='self')
{
if($reid==0) return '';
$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}
在此段代码之后,添加:
else if($type=='parent')
{ //新增代码 获得上级栏目
if($reid==0) return '';
$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `#@__arctype` WHERE id='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}
---------------------------------------
接下来继续往后找到代码:
//处理同级栏目中,当前栏目的样式
if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' )
修改为:
//处理同级栏目中,当前栏目的样式
if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') || ($row['id']==$reid && $type=='parent' )) && $currentstyle!='' )
===================================
前台调用方法:
{dede:channel type='parent'}{/dede:channel}
设置或获取对象指定的文件名或路径。\x0d\\x0d\alert(windowlocationpathname)\x0d\\x0d\\x0d\设置或获取整个URL为字符串。\x0d\\x0d\\x0d\alert(windowlocationhref);\x0d\\x0d\设置或获取与URL关联的端口号码。\x0d\\x0d\alert(windowlocationport)\x0d\\x0d\\x0d\设置或获取URL的协议部分。\x0d\\x0d\alert(windowlocationprotocol)\x0d\\x0d\\x0d\设置或获取href属性中在井号“#”后面的分段。\x0d\\x0d\alert(windowlocationhash)\x0d\\x0d\\x0d\设置或获取location或URL的hostname和port号码。\x0d\\x0d\alert(windowlocationhost)\x0d\\x0d\\x0d\设置或获取href属性中跟在问号后面的部分。\x0d\\x0d\alert(windowlocationsearch)\x0d\
这个也不麻烦
你找到include下的arclistviewclassphp文件
插入一段查询,就查询dede_arctype表中的typedir字段值
然后赋值给一个变量,比如$typedir
然后把$listdd="<a href='"str_replace("{page}",$j,$tnamerule)"'>"$j"</a>\r\n";
改为$listdd="<a href='"$typedir\/str_replace("{page}",$j,$tnamerule)"'>"$j"</a>\r\n";
加域名就简单了,不用说你也应该知道怎么加了。
码一:
<script>
function selecturl(){
z=documentbodycreateTextRange();
zmoveToElementText(selecturlDiv);
zselect();
}
</script>
<span onmousemove='selecturl()' id=selecturlDiv><script>documentwrite(locationhref)</script>
代码二:
<script>
function copyCode(o){oselect();var js=ocreateTextRange();jsexecCommand("Copy");alert("复制成功!");}
documentwrite("<table align=center class=tableborder1 cellpadding=1 cellspacing=0><tr>");
documentwrite("<td width=10% nowrap class=tablebody1>本页URL地址(双击复制):</td>");
documentwrite("<td class=tablebody1><textarea onfocus=thisselect() style='width:100%;overflow-y:visible;' ondblclick=copyCode(this) rows=1>");
documentwrite(selflocation+"</textarea></td></tr></table>");
</script>
代码三:
<script language="javascript">
<!--
function copyToClipBoard(){
var clipBoardContent=documentlocation;
clipBoardContent+='\r\n';
windowclipboardDatasetData("Text",clipBoardContent);
alert("耶!复制成功喽!你可以粘贴在QQ消息里送给你的好朋友呀!再次感谢你对 的支持哦!");
}
//-->
</script>
<script language='javascript'>
documentwrite("<img src=\"templates//images/dbgif\" width=\"49\" height=\"17\">");
documentwrite("<input size=\"60\" value=\""+documentlocation+"\"><input type=\"button\" value=\"推荐给朋友\" title=\"点击复制地址到剪贴板,直接在MSN/QQ上粘贴即可\" onclick=\"copyToClipBoard()\">");
</script>
以上就是关于dede全站做移动跳转+适配,精通dede和PHP的来!全部的内容,包括:dede全站做移动跳转+适配,精通dede和PHP的来!、jsp怎么获取当前页面的url、织梦 dede 5.7版本 如何调用上级栏目的名称 和 链接。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)