如何在织梦Dedecms列表页获取当前地址链接和分页链接?

在织梦DedeCms的列表页中,可以通过修改include/arc.listview.class.php文件来获取当前页面的URL和分页链接。具体步骤如下:,,1. 打开include/arc.listview.class.php文件。,2. 找到else if($PageNo!=1 && $ctag>GetName()=='field' && $ctag>GetAtt('display')!='')代码段,在其上方添加以下代码:, ``php, else if($ctag>GetName()=="itemcururl") {, if($i***ake==0) {, $this>dtp>Assign($tagid,$this>GetItemsCurUrlDM());, } else {, $this>dtp>Assign($tagid,$this>GetItemsCurUrlST());, }, }, `,3. 继续查找并添加以下函数:, `php, /**, * 获得当前的页面文件的url, * 获得当前栏目链接与当前分页链接, * @access public, * @return string, * @return {dede:itemcururl/}, */, function GetItemsCurUrlDM() {, global $cfg_basehost, $cfg_multi_site;, $purl = $this>GetCurUrl();, // 如果开启为静态,则对规则进行替换, if ($cfg_rewrite == 'Y') {, $nowurls = preg_replace("//", ".php?", $purl);, $nowurls = explode("?", $nowurls);, $purl = $nowurls[0];, }, if ($this>PageNo == 1) {, $geturl = "tid=".$this>TypeID;, $purl .= '?'.$geturl;, } else {, $geturl = "tid=".$this>TypeID."&TotalResult=".$this>TotalResult."&";, $purl .= '?'.$geturl."PageNo=".$this>PageNo;, }, $cururl = ($cfg_multi_site == 'Y') ? $purl : $cfg_basehost.$purl;, return $cururl;, }, function GetItemsCurUrlST() {, global $cfg_basehost;, $tnamerule = $this>GetMakeFileRule($this>Fields['id'],"list",$this>Fields['typedir'],$this>Fields['defaultname'],$this>Fields['namerule2']);, $tnamerule = preg_replace("/^(.*)\//", '', $tnamerule);, $cfg_basehost = preg_replace('#/$#','',$cfg_basehost);, $tnamerule = MfTypedir($this>Fields['typedir']).'/'.$tnamerule;, if ($this>PageNo == 1) {, $purl = MfTypedir($this>Fields['typedir']).'/';, } else {, $purl = str_replace("{page}",$this>PageNo,$tnamerule);, }, $cururl = ($cfg_multi_site == 'Y') ? $purl : $cfg_basehost.$purl;, return $cururl;, }, `,4. 在列表页模板中使用标签{dede:itemcururl/}`即可获取当前地址链接和分页链接。

织梦DedeCms是一款功能强大的内容管理系统,广泛应用于各类网站建设中,在列表页获取当前地址链接和分页链接对于提升用户体验和SEO优化都具有重要意义,以下是关于如何在织梦DedeCms列表页获取当前地址链接和分页链接的详细方法:

如何在织梦Dedecms列表页获取当前地址链接和分页链接?

获取当前地址链接

1、修改arc.listview.class.php文件

打开include/arc.listview.class.php文件,找到else if($PageNo!=1 && $ctag>GetName()=='field' && $ctag>GetAtt('display')!='')这一行代码。

在其上方加入以下代码:

     else if($ctag>GetName()=="itemcururl") {
         if($ismake==0) {
             $this>dtp>Assign($tagid,$this>GetItemsCurUrlDM());
         } else {
             $this>dtp>Assign($tagid,$this>GetItemsCurUrlST());
         }
     }

继续在该文件中查找获得当前的页面文件的URL的相关注释,并在其上方加入以下两个函数:

     /**
      * 获得当前栏目链接与当前分页链接
      * @access public
      * @return string
      */
     function GetItemsCurUrlDM() {
         global $cfg_basehost,$cfg_multi_site;
         $purl = $this>GetCurUrl();
         // 如果开启为静态,则对规则进行替换
         if($cfg_rewrite == 'Y') {
             $nowurls = preg_replace("//", ".php?", $purl);
             $nowurls = explode("?", $nowurls);
             $purl = $nowurls[0];
         }
         if($this>PageNo==1) {
             $geturl = "tid=".$this>TypeID;
             $purl .= '?'.$geturl;
         } else {
             $geturl = "tid=".$this>TypeID."&TotalResult=".$this>TotalResult."&";
             $purl .= '?'.$geturl."PageNo=".$this>PageNo;
         }
         $cururl = ($cfg_multi_site=='Y') ? $purl : $cfg_basehost.$purl;
         return $cururl;
     }
     function GetItemsCurUrlST() {
         global $cfg_basehost;
         $tnamerule = $this>GetMakeFileRule($this>Fields['id'],"list",$this>Fields['typedir'],$this>Fields['defaultname'],$this>Fields['namerule2']);
         $tnamerule = preg_replace("/^(.*)\//", '', $tnamerule);
         $cfg_basehost = preg_replace('#/$#','',$cfg_basehost);
         $tnamerule = MfTypedir($this>Fields['typedir']).'/'.$tnamerule;
         if($this>PageNo==1) {
             $purl = MfTypedir($this>Fields['typedir']).'/';
         } else {
             $purl = str_replace("{page}",$this>PageNo,$tnamerule);
         }
         $cururl = ($cfg_multi_site=='Y') ? $purl : $cfg_basehost.$purl;
         return $cururl;
     }

这样,通过{dede:itemcururl/}标签即可在模板中调用当前地址链接。

获取分页链接

1、修改list_template.htm文件

打开模板文件夹中的list_template.htm文件。

在需要显示分页链接的位置插入以下代码:

如何在织梦Dedecms列表页获取当前地址链接和分页链接?

     <div class="pagination">
         <ul>
             <li><a href="{dede:global.cfg_basehost/}{dede:field name='typeurl'/}">首页</a></li>
             {dede:prenext get='pre'/}
                 <li><a href="{dede:prepage/}">上一页</a></li>
             {/dede:prenext}
             {dede:pagelist listsize='5' listitem='index,1' doViewList='yes' viewType='block'/}
                 <li><a href="{dede:typelink/}{dede:pagelist listitem='index,1' type='current'/}" class="{dede:pagelist listitem='index,1' type='current'?' active : ''}/">{dede:pagelist listitem='index,1'/}</a></li>
             {/dede:pagelist}
             {dede:prenext get='next'/}
                 <li><a href="{dede:nextpage/}">下一页</a></li>
             {/dede:prenext}
         </ul>
     </div>

这段代码使用了织梦自带的分页标签{dede:pagelist/}来生成分页链接,并结合{dede:global.cfg_basehost/}标签来确保链接的正确性。

示例表格

功能 实现方式 备注
当前地址链接 {dede:itemcururl/} 需修改arc.listview.class.php文件
分页链接 {dede:global.cfg_basehost/}{dede:field name='typeurl'/}{dede:prepage/}{dede:nextpage/}{dede:pagelist/} 使用织梦自带分页标签

常见问题及解答(FAQs)

Q1: 如何修改arc.listview.class.php文件?

A1: 要修改arc.listview.class.php文件,请按照以下步骤操作:

1、登录到您的服务器或本地开发环境。

2、定位到织梦DedeCms的安装目录。

3、找到include文件夹下的arc.listview.class.php文件。

4、使用文本编辑器(如Notepad++、Sublime Text等)打开该文件。

5、根据上述说明,在指定位置添加或修改代码。

如何在织梦Dedecms列表页获取当前地址链接和分页链接?

6、保存文件并上传回服务器(如果是在本地修改的话)。

7、刷新网站列表页,查看修改效果。

Q2: 分页链接中的“首页”链接为什么总是指向第一页而不是当前栏目的第一页?

A2: 这是因为在默认情况下,“首页”链接是通过{dede:global.cfg_basehost/}{dede:field name='typeurl'/}生成的,它直接指向了网站的根目录,如果您希望将“首页”链接修改为当前栏目的第一页,可以自定义一个变量来存储当前栏目的第一页链接,然后在模板中引用这个变量,具体实现方法如下:

1、在arc.listview.class.php文件中定义一个获取当前栏目第一页链接的函数(类似于GetItemsCurUrlDM())。

2、在模板中调用这个新函数来生成“首页”链接。