帝国cms对分页导航标签title.select的改良

帝国cms对分页导航标签title.select的改良

来源:帝国CMS模板网 作者:帝国CMS教程 时间:2010-08-12
浏览:9.2千+ 收藏 点赞(18)
简介: 一、什么是分页导航新闻内容很长,拉太长的话访客可能会感觉阅读起来比较累,对一篇新闻适应的分页是比较好的办法。所谓分页导航是对每一页起个合适的小标题并显示,有点像图书目

一、什么是分页导航?

新闻内容很长,拉太长的话访客可能会感觉阅读起来比较累,对一篇新闻适应的分页是比较好的办法。

所谓分页导航是对每一页起个合适的小标题并显示,有点像图书目录的作用。

二、如何使用分页导航?

1、对新闻内容的要求:为了能够使用分页导航,需要在新闻合适的位置使用!--empirenews.page--标签。对于不用分页标题而只是简单分页的情况,可以这样写:

[!--empirenews.page--]

对于用分页标题的,可以这样写:

[!--empirenews.page--]我是标题[/!--empirenews.page--]

2、对模板的要求:需要在模板的适当位置使用!--title.select--]

三、改进分页导航?

找到e/class/t_functions.php,150行左右,function sys_ShowTextPage,根据需要用以下代码替换掉官方的代码,重新生成即可看到效果。沿用官方的下拉列表,另外在标题前加上“第×页”,并且在下拉列表外面写上“文章导航”字样,见图1。

function sys_ShowTextPage($thispagenum,$dolink,$add,$filetype,$n_r){
        global $fun_r;
        if($thispagenum==1)
        {
                return "";
        }
        $page="";
        for($j=1;$j<=$thispagenum;$j++)
        {
                $k=$j-1;
            if($j==1)
                {
                $page.="<a href="".$dolink.$add[filename].$filetype."">".$j."</a>&nbsp;";
                        $title=$add[title];
                        $plink=$add[filename].$filetype;
                }
                else
                {
                        $page.="<a href="".$dolink.$add[filename]."_".$j.$filetype."">".$j."</a>&nbsp;";
                        $plink=$add[filename]."_".$j.$filetype;
                        $ti_r=explode("[/!--empirenews.page--]",$n_r[$k]);
                    if(count($ti_r)>=2&&$ti_r[0])
                        {$title=$ti_r[0];}
                    else
                        {$title=$add[title]."(".$j.")";}
                }
                $titleselect.="<option value="".$dolink.$plink."?".$j."">"."第".$j."页:".$title."</option>";
        }
        $return_r['titleselect']="文章导航:<select name=select onchange="self.location.href=this.options[this.selectedIndex].value">".$titleselect."</select>";
        //去掉最后一个&nbsp;
        $return_r['page']="[prepage]".substr($page,0,strlen($page)-6)."[nextpage]";
        return $return_r;
}

不用下拉列表,导航标题平铺,标题前加上“第×页”,并且在导航前面写上“文章导航”字样,见图2。

function sys_ShowTextPage($thispagenum,$dolink,$add,$filetype,$n_r){
        global $fun_r;
        if($thispagenum==1)
        {
                return "";
        }
        $page="";
        for($j=1;$j<=$thispagenum;$j++)
        {
                $k=$j-1;
            if($j==1)
                {
                $page.="<a href="".$dolink.$add[filename].$filetype."">".$j."</a>&nbsp;";
                        $title=$add[title];
                        $plink=$add[filename].$filetype;
                }
                else
                {
                        $page.="<a href="".$dolink.$add[filename]."_".$j.$filetype."">".$j."</a>&nbsp;";
                        $plink=$add[filename]."_".$j.$filetype;
                        $ti_r=explode("[/!--empirenews.page--]",$n_r[$k]);
                    if(count($ti_r)>=2&&$ti_r[0])
                        {$title=$ti_r[0];}
                    else
                        {$title=$add[title]."(".$j.")";}
                }
                $titleselect.="·<a href="".$dolink.$plink."?".$j."">"."第".$j."页:".$title."</a><br>";
        }
        $return_r['titleselect']="文章导航:<br>".$titleselect;
        //去掉最后一个&nbsp;
        $return_r['page']="[prepage]".substr($page,0,strlen($page)-6)."[nextpage]";
        return $return_r;
}

另附官方原版代码,见图3。

function sys_ShowTextPage($thispagenum,$dolink,$add,$filetype,$n_r){
        global $fun_r;
        if($thispagenum==1)
        {
                return "";
        }
        $page="";
        for($j=1;$j<=$thispagenum;$j++)
        {
                $k=$j-1;
            if($j==1)
                {
                $page.="<a href="".$dolink.$add[filename].$filetype."">".$j."</a>&nbsp;";
                        $title=$add[title];
                        $plink=$add[filename].$filetype;
                }
                else
                {
                        $page.="<a href="".$dolink.$add[filename]."_".$j.$filetype."">".$j."</a>&nbsp;";
                        $plink=$add[filename]."_".$j.$filetype;
                        $ti_r=explode("[/!--empirenews.page--]",$n_r[$k]);
                    if(count($ti_r)>=2&&$ti_r[0])
                        {$title=$ti_r[0];}
                    else
                        {$title=$add[title]."(".$j.")";}
                }
                $titleselect.="<option value="".$dolink.$plink."?".$j."">".$title."</option>";
        }
        $return_r['titleselect']="<select name=select onchange="self.location.href=this.options[this.selectedIndex].value">".$titleselect."</select>";
        //去掉最后一个&nbsp;
        $return_r['page']="[prepage]".substr($page,0,strlen($page)-6)."[nextpage]";
        return $return_r;
}

四、可以将“文章导航”四个字写在模板里吗?

可以,但是,如果新闻只有一页,没有用到导航标签的话,那么生成的页面依然有这四个字。

五、更上层楼,同一新闻内既有下拉式导航,又有平铺式导航该怎么做?

希望达到的效果是,在正文上方出现平铺式的导航,在正文下方出现一个下拉列表式的导航,这样的用户体验更加完美,本来想试着用标签配合自定义函数搞出来的,但是没成功,哪位高人如果能指点一下不胜感激。

上传以下图片:

帝国CMS模板网 帝国CMS模板网(www.daixiao360.cn)长期承接帝国CMS模板定制,帝国CMS仿站,帝国CMS采集规则,帝国CMS插件,帝国CMS二次开发。