dedecms织梦系统生成wap手机版静态页完整版。 define('DEDEWAPPATH','/wap');//生成手机版静态页目录 define('DEDEWAPTEMPLATESPATH','/wap/');//手机版模板目录templets 首先创建手机版的文章模板,这里自己创建,跟其他模板一样,不过保存路径/templets/wap/article_article.htm 首先找到include目录下的arc.archives.class.php,修改文件前最好备份一下,找到函数function MakeHtml($isremote=0),函数最后一行代码438行修改一如下: $returl=$this->GetTrueUrl($filename); $this->MakeWapHtml($isremote); return $returl; 在442行增加函数代码 function MakeWapHtml($isremote=0) { global $cfg_df_style,$cfg_arcdir; $tempfile = $this->GetTempletFile(); $tempfile = str_replace('/' . $cfg_df_style . '/',DEDEWAPTEMPLATESPATH,$tempfile); if(!file_exists($tempfile) || !is_file($tempfile)) { }else{ global $cfg_remote_site,$fileFirst; if($this->IsError) { return ''; } $this->Fields["displaytype"] = "st"; //预编译$th $this->dtp->LoadTemplate($tempfile); $this->TempSource = $this->dtp->SourceString; $this->ParAddTable(); $this->ParseTempletsFirst(); $this->Fields['senddate'] = empty($this->Fields['senddate'])? '' : $this->Fields['senddate']; $this->Fields['title'] = empty($this->Fields['title'])? '' : $this->Fields['title']; $this->Fields['arcrank'] = empty($this->Fields['arcrank'])? 0 : $this->Fields['arcrank']; $this->Fields['ismake'] = empty($this->Fields['ismake'])? 0 : $this->Fields['ismake']; $this->Fields['money'] = empty($this->Fields['money'])? 0 : $this->Fields['money']; $this->Fields['filename'] = empty($this->Fields['filename'])? '' : $this->Fields['filename']; //分析要创建的文件名称 $filename = GetFileNewName( $this->ArcID,$this->Fields['typeid'],$this->Fields['senddate'], $this->Fields['title'],$this->Fields['ismake'],$this->Fields['arcrank'], $this->TypeLink->TypeInfos['namerule'],$this->TypeLink->TypeInfos['typedir'],$this->Fields['money'],$this->Fields['filename'] ); $filename=str_replace($cfg_arcdir .'/',DEDEWAPPATH .'/',$filename);
$filenames = explode(".", $filename); $this->ShortName = $filenames[count($filenames)-1]; if($this->ShortName=='') $this->ShortName = 'html'; $fileFirst = preg_replace("/\.".$this->ShortName."$/i", "", $filename); $this->Fields['namehand'] = basename($fileFirst); $filenames = explode("/", $filename); $this->NameFirst = preg_replace("/\.".$this->ShortName."$/i", "", $filenames[count($filenames)-1]); if($this->NameFirst=='') { $this->NameFirst = $this->arcID; } //获得当前文档的全名 $filenameFull = GetFileUrl( $this->ArcID,$this->Fields['typeid'],$this->Fields["senddate"], $this->Fields["title"],$this->Fields["ismake"], $this->Fields["arcrank"],$this->TypeLink->TypeInfos['namerule'],$this->TypeLink->TypeInfos['typedir'],$this->Fields["money"],$this->Fields['filename'], $this->TypeLink->TypeInfos['moresite'],$this->TypeLink->TypeInfos['siteurl'],$this->TypeLink->TypeInfos['sitepath'] ); $this->Fields['arcurl'] = $this->Fields['fullname'] = $filenameFull; //对于已设置不生成HTML的文章直接返回网址 if($this->Fields['ismake']==-1 || $this->Fields['arcrank']!=0 || $this->Fields['money']>0 || ($this->Fields['typeid']==0 && $this->Fields['channel'] != -1) ) { return $this->GetTrueUrl($filename); } //循环生成HTML文件 else { for($i=1;$i<=$this->TotalPage;$i++) { if($this->TotalPage > 1) { $this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields['tmptitle']); if($i>1) $this->Fields['title'] = $this->Fields['tmptitle']."($i)"; } if($i>1) { $TRUEfilename = $this->GetTruePath().$fileFirst."_".$i.".".$this->ShortName; } else { $TRUEfilename = $this->GetTruePath().$filename; } $this->ParseDMFields($i,1); if(!is_dir(dirname($TRUEfilename))) { mkdir(dirname($TRUEfilename), 0777, true); } $this->dtp->SaveTo($TRUEfilename); //如果启用远程发布则需要进行判断 if($cfg_remote_site=='Y' && $isremote == 1) {
//分析远程文件路径 $remotefile = str_replace(DEDEROOT, '', $TRUEfilename); $localfile = '..'.$remotefile; //创建远程文件夹 $remotedir = preg_replace("#[^\/]*\.html#", '', $remotefile); $this->ftp->rmkdir($remotedir); $this->ftp->upload($localfile, $remotefile, 'ascii'); } } } $this->TempSource==''; } } wap模板中调用头部和底部文件需要修改 找到include目录文件dedetag.class.php中大概1013行的函数 function IncludeFile 在 else{ return "无法在这个位置找到: $filename"; } 前加 else if(file_exists(DEDEROOT.'/templets'.DEDEWAPTEMPLATESPATH.$filename) ) { $okfile = DEDEROOT.'/templets'.DEDEWAPTEMPLATESPATH.$filename; }
注意wap模板的头文件不要与pc头文件名相同,如用wap_header.htm和wap_footer.htm 栏目页生成html 首先找到include目录下的arc.listview.class.php,修改文件前最好备份一下,找到143行function CountRecord 给函数加一个参数修改成 function CountRecord($iswap=0) 并在函数中229行 if(!file_exists($tempfile))前加入代码 if($iswap==1){ $tempfile = str_replace('/'.$GLOBALS['cfg_df_style'].'/',DEDEWAPTEMPLATESPATH,$tempfile); } function MakeHtml($startpage=1, $makepagesize=0, $isremote=0) 把最后面373行 return $murl;修改成 $reurl=$murl; $this->MakeWapHtml($startpage, $makepagesize, $isremote); return $reurl; 377行添加函数MakeWapHtml 代码如下 function MakeWapHtml($startpage=1, $makepagesize=0, $isremote=0) { global $cfg_remote_site,$cfg_arcdir; if(empty($startpage)) { $startpage = 1; } //创建封面模板文件 if($this->TypeLink->TypeInfos['isdefault']==-1) { echo '这个类目是动态类目!'; // return '../plus/list.php?tid='.$this->TypeLink->TypeInfos['id']; } //单独页面 else if($this->TypeLink->TypeInfos['ispart']>0) { $reurl = $this->MakePartTemplets(); // return $reurl; } $this->CountRecord(1); //初步给固定值的标记赋值 $this->ParseTempletsFirst(); $totalpage = ceil($this->TotalResult/$this->PageSize); if($totalpage==0) { $totalpage = 1; } CreateDir(MfTypedir($this->Fields['typedir'])); $murl = ''; if($makepagesize > 0) { $endpage = $startpage+$makepagesize; } else { $endpage = ($totalpage+1); } if( $endpage >= $totalpage+1 ) { $endpage = $totalpage+1; } if($endpage==1) { $endpage = 2; } for($this->PageNo=$startpage; $this->PageNo < $endpage; $this->PageNo++) { $this->ParseDMFields($this->PageNo,1); $makeFile = $this->GetMakeFileRule($this->Fields['id'],'list',$this->Fields['typedir'],'',$this->Fields['namerule2']); $makeFile = str_replace("{page}", $this->PageNo, $makeFile); $murl = $makeFile; if(!preg_match("/^\//", $makeFile)) { $makeFile = "/".$makeFile; } $makeFile = $this->GetTruePath().$makeFile; $makeFile = preg_replace("/\/{1,}/", "/", $makeFile);
$makeFile=str_replace($cfg_arcdir.'/',DEDEWAPPATH . '/',$makeFile);
$murl = $this->GetTrueUrl($murl); if(!is_dir(dirname($makeFile))) { mkdir(dirname($makeFile), 0777, true); } $this->dtp->SaveTo($makeFile); //如果启用远程发布则需要进行判断 if($cfg_remote_site=='Y'&& $isremote == 1) { //分析远程文件路径 $remotefile = str_replace(DEDEROOT, '',$makeFile); $localfile = '..'.$remotefile; $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile); //不相等则说明已经切换目录则可以创建镜像 $this->ftp->rmkdir($remotedir); $this->ftp->upload($localfile, $remotefile, 'acii'); } } if($startpage==1) { //如果列表启用封面文件,复制这个文件第一页 if($this->TypeLink->TypeInfos['isdefault']==1 && $this->TypeLink->TypeInfos['ispart']==0) { $onlyrule = $this->GetMakeFileRule($this->Fields['id'],"list",$this->Fields['typedir'],'',$this->Fields['namerule2']); $onlyrule = str_replace("{page}","1",$onlyrule); $list_1 = $this->GetTruePath().$onlyrule; $list_1=str_replace($cfg_arcdir.'/',DEDEWAPPATH . '/',$list_1); $murl = MfTypedir($this->Fields['typedir']).'/'.$this->Fields['defaultname']; //如果启用远程发布则需要进行判断 if($cfg_remote_site=='Y'&& $isremote == 1) { //分析远程文件路径 $remotefile = $murl; $localfile = '..'.$remotefile; $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile); //不相等则说明已经切换目录则可以创建镜像 $this->ftp->rmkdir($remotedir); $this->ftp->upload($localfile, $remotefile, 'acii'); } $indexname = $this->GetTruePath().$murl; $indexname=str_replace($cfg_arcdir.'/',DEDEWAPPATH . '/',$indexname); copy($list_1,$indexname); } } } 找到580行函数 function MakePartTemplets() 修改最后面的代码 return $this->GetTrueUrl($makeUrl);修改成 $returl=$this->GetTrueUrl($makeUrl); $this->MakeWapPartTemplets(); return $returl; 584行添加函数function MakeWapPartTemplets() 代码如下 function MakeWapPartTemplets() { global $cfg_df_style,$cfg_arcdir; $this->PartView = new PartView($this->TypeID,false); $this->PartView->SetTypeLink($this->TypeLink); $nmfa = 0; $tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']; if($this->Fields['ispart']==1) { $tempfile = str_replace("{tid}",$this->TypeID,$this->Fields['tempindex']); $tempfile = str_replace("{cid}",$this->ChannelUnit->ChannelInfos['nid'],$tempfile); $tempfile = $tmpdir."/".$tempfile; $tempfile=str_replace('/'.$GLOBALS['cfg_df_style'].'/',DEDEWAPTEMPLATESPATH,$tempfile); if(!file_exists($tempfile)) { $tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm"; } $this->PartView->SetTemplet($tempfile); } else if($this->Fields['ispart']==2) { //跳转网址 // return $this->Fields['typedir']; } CreateDir(MfTypedir($this->Fields['typedir'])); $makeUrl = $this->GetMakeFileRule($this->Fields['id'],"index",MfTypedir($this->Fields['typedir']),$this->Fields['defaultname'],$this->Fields['namerule2']); $makeUrl = preg_replace("/\/{1,}/", "/", $makeUrl); $makeFile = $this->GetTruePath().$makeUrl; $makeFile=str_replace($cfg_arcdir.'/',DEDEWAPPATH . '/',$makeFile); if($nmfa==0) { if(!is_dir(dirname($makeFile))) { mkdir(dirname($makeFile), 0777, true); } $this->PartView->SaveToHtml($makeFile); //如果启用远程发布则需要进行判断 if($GLOBALS['cfg_remote_site']=='Y'&& $isremote == 1) { //分析远程文件路径 $remotefile = str_replace(DEDEROOT, '',$makeFile); $localfile = '..'.$remotefile; $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile); //不相等则说明已经切换目录则可以创建镜像 $this->ftp->rmkdir($remotedir); $this->ftp->upload($localfile, $remotefile, 'acii'); } } else { if(!file_exists($makeFile)) { $this->PartView->SaveToHtml($makeFile); //如果启用远程发布则需要进行判断 if($cfg_remote_site=='Y'&& $isremote == 1) { //分析远程文件路径 $remotefile = str_replace(DEDEROOT, '',$makeFile); $localfile = '..'.$remotefile; $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile); //不相等则说明已经切换目录则可以创建镜像 $this->ftp->rmkdir($remotedir); $this->ftp->upload($localfile, $remotefile, 'acii'); } } } } 首页生成静态页修改代码 后台目录找到:makehtml_homepage.php文件,47行: $pv->SaveToHtml($homeFile);后面加上代码: $pv->SetTemplet(str_replace('/'.$cfg_df_style.'/',DEDEWAPTEMPLATESPATH,$cfg_basedir.$cfg_templets_dir."/".$templet)); $pv->SaveToHtml(str_replace('/index.html',DEDEWAPPATH.'/index.html',$homeFile)); wap模板中文章路径或栏目路径替把pc路径替换成wap路径。 打开include目录下extend.func.php在最后面 添加函数 function GetWapUrl($pcurl){ global $cfg_arcdir; return str_replace($cfg_arcdir.'/',DEDEWAPPATH.'/',$pcurl); } 模板中栏目url调用 {dede:channelartlist typeid='top' } <a href="{dede:field.typeurl function='GetWapUrl(@me)'/}">{dede:field.typename/}</a> {/dede:channelartlist}
文章url调用 <a href="[field:arcurl function='GetWapUrl(@me)' /]">[field:title/]</a> 基本的就是这些,细节根据各自要求修改。 (责任编辑:最模板) |