推荐设备MORE

小程序商城制作—铜陵市微信

小程序商城制作—铜陵市微信

行业新闻

MIP技术性共享:织梦gbk站点mip更新改造计划方案

日期:2021-03-06
我要分享

MIP技术性共享:织梦gbk站点mip更新改造计划方案共享


短视頻,自新闻媒体,达人种草1站服务

 

序言:

最近尝试对1个做过自动跳转兼容的dedecms/gbk手机上站开展整站mip更新改造,历经1系列思路健全和检测,终究进行,回望下全过程,关键难题可分成下列几类:

1、非utf⑻站点的编号难题

前些情况下宋同学在站长小区公布了新装utf⑻版cms和变换数据信息库编号的实例教程,我一开始也是相近思路,但由于站点历经2次开发设计和包括1些乱78糟的额外文档等,重新安装cms很难还原以前的改动,此思路卒。后又尝试在数据信息库启用时以gbk编号载入,检测转化成后虽大致上访问一切正常,但還是存在一丝后续难题和少一部分错码,也舍弃了该计划方案。最后,灵光1闪 为何要在程序流程实行全过程中纠结?彻底能够在转化成静态数据网页页面时开展更换整改啊!猛然峰回路转之感溢于言表,检测果真可行,以后遇到后续难题(以下面难题2、3)也因而思路而变得易处理了。

2、相对路径难题

、/等标识中的相对性相对路径需均变换为详细url,这个在现阶段实例教程里貌似沒有确立提出,根文件目录相对性相对路径还好,关键是相对性当今网页页面相对路径变换详细url需再加所属文件目录一些难度(非常是标识启用转化成的相对性相对路径,如分页查询)。

3、内联款式难题

模版里的内联款式能够手动式整改,虽烦琐但难度不大,关键难题在于后台管理公布文章内容时,cms编写器会全自动转化成包含内联款式在内的各种各样不符mip标准的初始编码,除折腾1下对编写器开展改动,别的也很难处理了。

4、js难题

mip标准局限了js的应用,这个确实挺头疼的,好在我更新改造的站点内js很少,因此删除一部分实际效果和应用现有组件更换,也将就处理了此难题。但是還是期待百度搜索mip精英团队能在考虑到下此层面的标准计划方案提升,很多站点有许多js编码且不可以除去,所有以组件方式递交也很费事且必须1定的程序流程基本,别的难题还能够按统1实例教程去处理,但js上的mip更新改造却没法这般,依照现阶段的限定会致使许多站长因而1点就迫不得已舍弃mip更新改造。

5、别的小难题

发现少一部分款式有矛盾,需依据具体状况对自身css开展部分改动。

发现mip cache没法鉴别站点中照片的302自动跳转,如原站应用302自动跳转的照片,mip起效后没法显示信息照片。该难题已和百度搜索技术性人员沟通交流,说后续能够考虑到适用,现阶段我自身加了1段编码对相对路径做了下解决。

组件应用bug(如mip-carousel多图轮播照片套连接会致使照片显示信息空白,且没法自融入显示屏)。

mip引进递交后就回显个suess,也沒有递交纪录和情况,客户体验上有一定的缺乏。

正题:根据dedecms/gbk的整站mip更新改造

第1一部分:模版改动

1、js一部分:删掉或应用现有组件更换

2、启用百度搜索mip文档:

head里加

body里加

3、head里加,根据dedecms标识立即启用当今页url。

4、外界通用性css文档:提议将css文档中的款式编码嵌入

中,另存为模版文档(如css.htm),用{dede:includefilename="css.htm"/}更换有关模版中的。

模版中的内联css可人力开展搜索更换,合拼至中。(虽在下面编码中能够全自动开展解决,但从静态数据文档转化成特性角度考虑到,還是提议人力先将模版中的内联款式1次性整改好。)

注:以上实际操作大多数可根据大批量搜索更换来进行,看似必须改动许多,但具体工作中量其实不大。

第2一部分:程序流程文档改动

静态数据转化成挪动站:

寻找/include/dedetag.class.php文档中分析模版輸出为文档的涵数:

function SaveTo($filename)

{

$fp = @fopen($filename,"w")or die("DedeTag Engine Create File False");

fwrite($fp,$this- GetResult());

fclose($fp);

}

更换为(一部分编码可依据具体状况开展修改):

//相对路径变换涵数文档。$content:编码源,$feed_url:主页,$f_url:相对性相对路径的文件目录一部分

function relative_to_absolute($content,$protocol, $domain, $f_url) {

//根文件目录相对性相对路径(如href="/a/b.html")变换

$new_content =preg_replace('/href\s*\=\s*([\'"])\s*\//','href=\\1'.$protocol.$domain.'/', $content);

$new_content =preg_replace('/src\s*\=\s*([\'"])\s*\//', 'src=\\1'.$protocol.$domain.'/',$new_content);

//当今页相对性相对路径(如href="a/b.html")变换

$new_content

=preg_replace('/href\s*\=\s*([\'"])(?!(|s):\/\/)/','href=\\1'.$protocol.$domain.$f_url,$new_content);

$new_content

=preg_replace('/src\s*\=\s*([\'"])(?!(|s):\/\/)/','src=\\1'.$protocol.$domain.$f_url, $new_content);

return $new_content;

}

function SaveTo($filename)

{

$fp=@fopen($filename,"w") ordie("DedeTag Engine Create File False");

if(substr($_SERVER['PHP_SELF'],⑹)=='_m.php'||substr($filename,⑴3)=='/m/index.html'){//自动跳转兼容站鉴别是不是为挪动端转化成,不危害pc端gbk编号。挪动端为单独站点需去掉此分辨标准。

$f_url=explode('网站域名/m',dirname($filename));//切分相对路径,获得当今页相对性相对路径的文件目录一部分

//如dirname($filename)获得的当地肯定相对路径为D:/root/网站域名/m/yygk/xwzx,用网站文件目录 网站域名/m 做为标志切分相对路径,获得文件目录一部分 /yygk/xwzx 。

$html=$this- GetResult();

$html=$this- relative_to_absolute($html,'','m.网站域名',$f_url[1].'/');//相对性相对路径变换肯定相对路径

$html=str_replace(' metacharset="gb2312" ',' metacharset="utf⑻" ',iconv('gbk','utf⑻//ignore',$html));//变换为utf⑻编号申明,fwrite会以今生成对应编号的静态数据网页页面

$html=str_replace(' a','标识加target p=""

$html=str_replace(' img','

/*关键对于编写器转化成的内联款式,将内联款式变换到head的style标识中*/

if(preg_match_all('/\sstyle\s*\=\s*[\'"](.*?)[\'"]/',$html,$css)){

$css0=array_unique($css[0]);//过虑反复style

foreach($css0as $k = $v){

$html=str_replace($v,'class="mip_add_css_'.$k.'"',$html);//mip_add_css_为自定款式名前缀,可自主改动,但需防止与原来款式名反复

$temp_name='mip_add_css_'.$k;

$$temp_name=$css[1][$k];

$add_css.='.'.$temp_name.'{'.$css[1][$k]."}\n";

}

$html=str_replace('',"