dedecms织梦系统生成wap手机版静态页完整版

  • 原创
  • |
  • 浏览:14340
  • |
  • 更新:
  • |
  • 标签:wordpress 

前面有几篇文章介绍了生成手机版静态页,由于不是同一时间写的,不是很连贯,导致很多网友私信很多问题,这里写一个完整版,代码可以私信要。

工具/原料

  • dedecms

方法/步骤

  1. 1

    打开include目录下的common.inc.php,在26行加入代码:

    define('DEDEWAPPATH','/wap');//生成手机版静态页目录

    define('DEDEWAPTEMPLATESPATH','/wap/');//手机版模板目录templets

    dedecms织梦系统生成wap手机版静态页完整版
  2. 2

    首先创建手机版的文章模板,这里自己创建,跟其他模板一样,不过保存路径/templets/wap/article_article.htm

    dedecms织梦系统生成wap手机版静态页完整版
  3. 3

    首先找到include目录下的arc.archives.class.php,修改文件前最好备份一下,找到函数function MakeHtml($isremote=0),函数最后一行代码438行修改一如下:

    $returl=$this->GetTrueUrl($filename);

    $this->MakeWapHtml($isremote);

            return $returl;

    dedecms织梦系统生成wap手机版静态页完整版
  4. 4

    在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=='';

    }

        }

    dedecms织梦系统生成wap手机版静态页完整版
  5. 5

    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

    dedecms织梦系统生成wap手机版静态页完整版
  6. 5
    此文章未经许可获取自百度经验
  7. 6

    栏目页生成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);

    }

    dedecms织梦系统生成wap手机版静态页完整版
    dedecms织梦系统生成wap手机版静态页完整版
  8. 7

    function MakeHtml($startpage=1, $makepagesize=0, $isremote=0)

    把最后面373行

      return $murl;修改成

    $reurl=$murl;

    $this->MakeWapHtml($startpage, $makepagesize, $isremote);

            return $reurl;

    dedecms织梦系统生成wap手机版静态页完整版
  9. 8

    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);

                }

            }

        }

    dedecms织梦系统生成wap手机版静态页完整版
  10. 9

    找到580行函数 function MakePartTemplets()

    修改最后面的代码

     return $this->GetTrueUrl($makeUrl);修改成

    $returl=$this->GetTrueUrl($makeUrl);

    $this->MakeWapPartTemplets();

            return $returl;

    dedecms织梦系统生成wap手机版静态页完整版
  11. 10

    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');

                  }

                }

            }

        }

    dedecms织梦系统生成wap手机版静态页完整版
  12. 11

    首页生成静态页修改代码

    后台目录找到: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));

    dedecms织梦系统生成wap手机版静态页完整版
  13. 12

    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>

    dedecms织梦系统生成wap手机版静态页完整版
  14. 13

    基本的就是这些,细节根据各自要求修改,需要源码可以私信我!

    END

注意事项

  • 注意路径
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签wordpress