赞
踩
前2天接了个织梦改造mip,之前没怎么接触过织梦,mip也没怎么接触过,这里记录下改造过程,其实需要改造的地方不多。
首先页面改造:
按照mip标准:
1、需要给html标签加上mip,即:<html mip>
2、字符集统一为utf-8
3、需要meta: <meta name="viewport" content="width=device-width,initial-scale=1">
4、引入mip样式支持和javascript支持:<link rel="stylesheet" type="text/css" href="https://mipcache.bdstatic.com/static/v1/mip.css" >
<script src="https://mipcache.bdstatic.com/static/v1/mip.js" ></script >
5、head标签中引入 <link rel="canonical" href="http(s)://xxx" > xxx代表原来的网站,如果只有手机端页面,那么这个href就是当前页面就可以了,如果还有电脑端的页面,那这个href可以指向电脑端的页面
6、其他的就按照mip标准套, 其实大部分还是修改img标签为mip-img,a标签可以不用修改, 还是样式不能直接用style=写在标签上了,如果实在需要在当前页写css,需要在头部添加<style mip-custom></style>
程序改造:
程序需要改造的地方有2个:
1、分页: 找到include/arc.listview.class.php里的GetPageListDM($list_len,$listitem="index,end,pre,next,pageno"),大概在981行,在这个函数里面添加:
$typeDir = str_replace('{cmspath}', '', $this->Fields['typedir']);
然后在有href=的地方添加:.$GLOBALS['cfg_basehost']."/".$typeDir."/"
完整链接如:
if($this->PageNo != 1)
{
$prepage.="<li><a href='".$GLOBALS['cfg_basehost']."/".$typeDir."/".str_replace("{page}",$prepagenum,$tnamerule)."'>上一页</a></li>\r\n";
$indexpage="<li><a href='".$GLOBALS['cfg_basehost']."/".$typeDir."/".str_replace("{page}",1,$tnamerule)."'>首页</a></li>\r\n";
}
if($this->PageNo!=$totalpage && $totalpage>1)
{
$nextpage.="<li><a href='".$GLOBALS['cfg_basehost']."/".$typeDir."/".str_replace("{page}",$nextpagenum,$tnamerule)."'>下一页</a></li>\r\n";
$endpage="<li><a href='".$GLOBALS['cfg_basehost']."/".$typeDir."/".str_replace("{page}",$totalpage,$tnamerule)."'>末页</a></li>\r\n";
}
到此,分页改造完毕。
2、内容改造比较复杂:
(1)、找到include/arc.archives.class.php,找到函数ReplaceKeyword($kw,&$body),大概1182行,在这个函数后面添加如下2个函数:
function replacePicUrl($content = null, $url="") {
$pattern = "/<img(.*?)src=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement = "<mip-img src={$url}$3.$4></mip-img>";
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
function getStyle($content = null){
preg_match_all("/style=('|\")([^'\"]+)('|\")/",
$content,$matches);
$styles = $matches[0];
$styles_value = $matches[2];
$style_custom = "";
$i = 0;
foreach($styles_value as $key){
$style_custom .= ".class".$i."{".$key."}";
$class_name = 'class="class'.$i.'"';
$replacements = $class_name;
$patterns = $styles[$i];
$content = str_replace($patterns, $replacements, $content);
$i++;
}
$res['style_custom'] = $style_custom;
$res['content'] = $content;
return $res;
}
(2)、在函数ParAddTable()里的$this->SplitTitles = Array();上面,unset($row);下面,大概253行添加如下代码:
$content = $this->replacePicUrl($this->Fields['body'], $GLOBALS['cfg_basehost']);
$content_arr = $this->getStyle($content);
$this->Fields['body'] = $content_arr['content'];
$this->Fields['style_custom'] = $content_arr['style_custom'];
(3)、找到函数MakeHtml($isremote=0),大概358行,在里面的$this->Fields['filename'] = empty($this->Fields['filename'])? '' : $this->Fields['filename'];下面添加如下代码:$this->Fields['style_custom'] = empty($this->Fields['style_custom'])? '' : $this->Fields['style_custom'];
(4)、在templete的article_article.htm模板中的head标签内添加如下代码:
<style mip-custom>
{dede:field.custom_style/}
</style>
(5)、最后一步,到后台:核心-频道模型-内容模型管理列表找到普通文章,并点击编辑,进入字段管理并添加字段custom_style,表示从内容编辑器中提取出来的样式,选多行文本。
到此,织梦简单改造mip已完成,但是mip对js有限制,目前还没有比较完善的文档,对于评论那块以后研究下mip的js再想办法。最后记住,a标签的href和mip-img的src都需要完整地址,包括域名。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。